Come spiegare in modo intuitivo cos'è un kernel?


98

Molti classificatori di machine learning (ad es. Supportano macchine vettoriali) consentono di specificare un kernel. Quale sarebbe un modo intuitivo per spiegare cos'è un kernel?

Un aspetto a cui ho pensato è la distinzione tra kernel lineari e non lineari. In termini semplici, potrei parlare di "funzioni di decisione lineari" e di "funzioni di decisione non lineari". Tuttavia, non sono sicuro che chiamare una kernel "funzione decisionale" sia una buona idea.

Suggerimenti?

Risposte:


114

Kernel è un modo per calcolare il prodotto scalare di due vettori ed y in qualche (dimensionale possibilmente molto alto) spazio delle caratteristiche, motivo per cui le funzioni del kernel vengono talvolta chiamati "prodotto scalare generalizzato".Xy

Supponiamo di avere una mappatura che porta i nostri vettori in R n in qualche spazio di funzioni R m . Poi il prodotto scalare di x ed y in questo spazio èφ( xφ:RnRmRnRmXy . Un kernel è una funzione k che corrisponde a questo prodotto punto, cioè k ( x , y ) = φ ( x ) T φ ( y ) .φ(X)Tφ(y)KK(X,y)=φ(X)Tφ(y)

Perché è utile? I kernel offrono un modo per calcolare i prodotti punto in alcuni spazi delle funzionalità senza nemmeno sapere cosa sia questo spazio e cosa sia .φ

Ad esempio, considera un semplice kernel polinomiale con x , yR 2 . Questo non sembra corrispondere a nessuna funzione di mappatura φ , è solo una funzione che restituisce un numero reale. Supponendo che x = ( x 1 , x 2 ) e y = ( y 1 , y 2 ) , espandiamo questa espressione:k(x,y)=(1+xTy)2x,yR2φx=(x1,x2)y=(y1,y2)

k(x,y)=(1+xTy)2=(1+x1y1+x2y2)2==1+x12y12+x22y22+2x1y1+2x2y2+2x1x2y1y2

Si noti che questo non è altro che un prodotto punto tra due vettori (1,x12,X22,2X1,2X2,2X1X2) e eφ(x)=φ(x1,x2)=((1,y12,y22,2y1,2y2,2y1y2). Quindi il kernelk(x,y)=(1+φ(X)=φ(X1,X2)=(1,X12,X22,2X1,2X2,2X1X2)calcola un prodotto punto nello spazio 6-dimensionale senza visitare esplicitamente questo spazio.K(X,y)=(1+XTy)2=φ(X)Tφ(y)

Un altro esempio è il kernel gaussiano . Se Taylor espandiamo questa funzione, vedremo che corrisponde a un codice infinito dimensionale di φ .k(x,y)=exp(γxy2)φ

Infine, consiglierei un corso online "Imparare dai dati" del professor Yaser Abu-Mostafa come buona introduzione ai metodi basati sul kernel. In particolare, le lezioni "Support Vector Machines" , "Kernel Methods" e "Radial Basis Functions" riguardano i kernel.


2
Definizione attuale del tag: "Intuitivo: domande che cercano una comprensione concettuale o non matematica delle statistiche". Nessuna chiara indicazione se concettuale sia trattato come sinonimo di non matematico.
rolando2,

40

Un modo molto semplice e intuitivo di pensare ai kernel (almeno per gli SVM) è una funzione di somiglianza. Dati due oggetti, il kernel produce un punteggio di somiglianza. Gli oggetti possono essere qualsiasi cosa a partire da due numeri interi, due vettori con valori reali, alberi qualunque sia purché la funzione del kernel sappia come confrontarli.

L'esempio probabilmente più semplice è il kernel lineare, chiamato anche punto-prodotto. Dati due vettori, la somiglianza è la lunghezza della proiezione di un vettore su un altro.

Un altro esempio interessante del kernel è il kernel gaussiano. Dati due vettori, la somiglianza diminuirà con il raggio di . La distanza tra due oggetti viene "ridimensionata" da questo parametro di raggio.σ

Il successo dell'apprendimento con i kernel (di nuovo, almeno per gli SVM), dipende fortemente dalla scelta del kernel. Puoi vedere un kernel come una rappresentazione compatta della conoscenza del tuo problema di classificazione. Molto spesso è specifico del problema.

Non definirei un kernel una funzione di decisione poiché il kernel è utilizzato all'interno della funzione di decisione. Dato un punto dati da classificare, la funzione decisionale utilizza il kernel confrontando quel punto dati con un numero di vettori di supporto ponderati dai parametri appresi . I vettori di supporto si trovano nel dominio di quel punto dati e lungo i parametri appresiα si trovano dall'algoritmo di apprendimento.α


Il prodotto e la proiezione del punto non sono del tutto identici.
ttnphns,

Nel caso di SVM, credo che i kernel siano misure di distanza in spazi diversi. Ciò è in linea con l'idea che un SVM generalizzi un classificatore di vettori di supporto. In generale, i kernel possono essere più complicati.
aginensky,

30

Un esempio visivo per aiutare l'intuizione

Considera il seguente set di dati in cui i punti giallo e blu non sono chiaramente separabili linearmente in due dimensioni.

inserisci qui la descrizione dell'immagine

Se potessimo trovare uno spazio dimensionale più elevato in cui si trovavano questi punti separabili linearmente , allora potremmo fare quanto segue:

  • Mappare le funzioni originali nello spazio superiore del trasformatore (mappatura delle caratteristiche)
  • Eseguire SVM lineare in questo spazio più elevato
  • Ottenere una serie di pesi corrispondenti all'iperpiano del limite decisionale
  • Mappare questo iperpiano nello spazio 2D originale per ottenere un limite di decisione non lineare

Esistono molti spazi di dimensione superiore in cui questi punti sono separabili linearmente. Ecco un esempio

X1,X2: →z1,z2,z3
z1=2X1X2  z2=X12  z3=X22

È qui che entra in gioco il trucco del Kernel. Citando le grandi risposte sopra

Supponiamo di avere una mappatura φ:RnRmRnRmXyφ(X)Tφ(y)KK(X,y)=φ(X)Tφ(y)

Se potessimo trovare una funzione del kernel equivalente alla precedente mappa delle caratteristiche, allora potremmo collegare la funzione del kernel in SVM lineare ed eseguire i calcoli in modo molto efficiente.

Kernel Polinomiale

K(X,X')=(XTX')dd=2X=(X1,X2)T

K((X1X2),(X1'X2'))=(X1X2'+X2X2')2=2X1X1'X2X2'+(X1X1')2+(X2X2')2=(2X1X2 X12 X22) (2X1'X2'X1'2X2'2)

K((X1X2),(X1'X2'))=φ(X)Tφ(X')

φ((X1X2))=(2X1X2X12X22)

Visualizzazione della mappa delle caratteristiche e della linea di confine risultante

  • Il diagramma sul lato sinistro mostra i punti tracciati nello spazio trasformato insieme all'iper piano del limite lineare SVM
  • La trama sul lato destro mostra il risultato nello spazio 2-D originale

inserisci qui la descrizione dell'immagine


fonte


4

Molto semplicemente (ma accuratamente) un kernel è un fattore di ponderazione tra due sequenze di dati. Questo fattore di ponderazione può assegnare più peso a un " punto dati " in un " punto temporale " rispetto all'altro " punto dati ", oppure assegnare un peso uguale o assegnare più peso all'altro " punto dati " " e così via.

In questo modo la correlazione ( punto prodotto ) può assegnare più "importanza" in alcuni punti rispetto ad altri e quindi far fronte a non linearità (ad esempio spazi non piatti ), informazioni aggiuntive, smoothing dei dati e così via.

In un altro modo un kernel è un modo per cambiare le dimensioni relative (o unità di dimensione ) di due sequenze di dati per far fronte alle cose sopra menzionate.

In un terzo modo (correlato ai due precedenti), un kernal è un modo per mappare o proiettare una sequenza di dati sull'altra in un modo 1 a 1 tenendo conto delle informazioni o dei criteri dati (ad es. Spazio curvo, dati mancanti, dati riordino e così via). Quindi per esempio un dato kernel può allungare o restringere o ritagliare o piegare una sequenza di dati per adattarsi o mappare 1-a-1 sull'altra.

Un kernel può agire come un Procrustes per " adattarsi al meglio "


Penso che potresti parlare di kernel nel senso della stima della densità del kernel, non dei kernel Mercer semidefiniti positivi usati negli SVM e metodi correlati.
Dougal,

@Dougal, nel senso di questa risposta, il kernel è una funzione o misura di pesatura utilizzata per correlare i dati in un modo specifico o per sfruttare alcune caratteristiche dei dati, quindi vengono trattati anche i metodi del kernel SVM
Nikos M.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.