2016-05-26 13 views
6

Sono un neofita del campo dell'apprendimento automatico e in questo momento sto cercando di capire come funzionano gli algoritmi di apprendimento più comuni e capire quando applicare ciascuno di essi. Al momento sto imparando come funzionano Support Vector Machines e ho una domanda sulle funzioni del kernel personalizzate.
Ci sono molte informazioni sul web su kernel standard (lineari, RBF, polinomiali) per SVM. Io, tuttavia, vorrei capire quando è ragionevole andare per una funzione del kernel personalizzata. Le mie domande sono:I kernel personalizzati per SVM, quando applicarli?

1) Quali sono altri possibili kernel per SVM?
2) In quale situazione si applicano i kernel personalizzati?
3) Il kernel personalizzato può migliorare sostanzialmente la qualità di previsione di SVM?

risposta

8

1) Quali sono altri possibili kernel per SVM?

esistono infiniti di questi, si veda ad esempio la lista di quelli realizzati in pykernels (che è lungi dall'essere esaustivo)

https://github.com/gmum/pykernels

  • lineare
  • polinomiale
  • RBF
  • somiglianza coseno
  • esponenziale
  • Laplacian
  • razionale quadratica
  • Inverse multiquadratic
  • Cauchy
  • T-Student
  • ANOVA
  • Additivo Chi^2
  • Chi^2
  • MinMax
  • Min/Istogramma interse ction
  • generalizzato intersezione istogramma
  • Spline
  • Sorensen
  • Tanimoto
  • Wavelet
  • Fourier
  • Log (CPD)
  • alimentazione (CPD)

2) In quale situazione si applicano i kernel personalizzati?

Fondamentalmente in due casi:

  • "semplici" quelli danno pessimi risultati
  • dati sono specifici in un certo senso, e così - al fine di applicare i kernel tradizionali uno deve degenerare esso.Per esempio se i tuoi dati sono in un formato grafico, non puoi applicare il kernel RBF, poiché il grafico non è un vettore a dimensione costante, quindi hai bisogno di un kernel grafico per lavorare con questo oggetto senza un qualche tipo di proiezione che perde le informazioni. anche a volte hai una visione dei dati, sai di qualche struttura sottostante, che potrebbe aiutare il classificatore. Un esempio è una periodicità, si sa che c'è una sorta di effetto recuring nel data - allora forse vale la pena alla ricerca di un kernel specifico ecc

3) possiamo abitudine del kernel sostanzialmente migliorare la qualità di previsione di SVM?

Sì, in particolare, esiste sempre un (hypothethical) bayesiana kernel ottimale, definita come:

K(x, y) = 1 iff arg max_l P(l|x) == arg max_l P(l|y) 

in altre parole, se si ha una vera probabilità P (l | x) dell'etichetta l essendo assegnato a un punto x, possiamo creare un kernel, che mappa praticamente i punti dei dati su codifiche singole delle loro etichette più probabili, portando così alla classificazione ottimale di Bayes (poiché otterrà il rischio di Bayes).

In pratica è ovviamente impossibile ottenere tale kernel, in quanto significa che hai già risolto il problema. Tuttavia, mostra che esiste una nozione di "kernel ottimale", e ovviamente nessuno di quelli classici non è di questo tipo (a meno che i dati non provengano da semplici distribuzioni veeeery). Inoltre, ogni kernel è una sorta di funzione di decisione precedente rispetto alle decisioni - più si avvicina a quello attuale con la propria famiglia di funzioni indotte - più è probabile ottenere un classificatore ragionevole con SVM.

+0

Grazie per la risposta - Avevo cercato di dare uno, ma felice di pranzare solo su quanto sopra invece. L'intuizione sulla struttura dei dati specifica del kernel (ad esempio un grafico con lunghezze vettoriali variabili) era interessante. – javadba

Problemi correlati