Kernelized K Neighbor più vicino


12

Sono nuovo ai kernel e ho colpito un intoppo mentre provavo a kernelizzare kNN.

Preliminari

Io sto usando un kernel polinomiale:
K(x,y)=(1+x,y)d

Il tuo tipico kNN euclideo usa la seguente metrica della distanza:
d(x,y)=||xy||

Consenti a mappare x in uno spazio di caratteristiche di dimensione superiore. Quindi il quadrato della metrica della distanza sopra nello spazio di Hilbert può essere espresso da prodotti interni: d 2 ( f ( x ) , f ( y ) ) = K ( x , x ) - 2 K ( x , y ) + K ( y , y )f(x)xd2(f(x),f(y))=K(x,x)2K(x,y)+K(y,y)

Nota che se lasciamo quanto sopra degenererà alla tua distanza euclidea standard.d=1


La domanda

Il problema principale che ho è che non riesco a vedere come il kernel kNN produca risultati migliori come dimostrato sperimentalmente da, ad esempio, questo documento (avviso, link diretto al pdf!).

Risposte:


24

Teorema di Cover: affermato in modo approssimativo, dice dato qualsiasi set casuale di punti finiti (con etichette arbitrarie), quindi con alta probabilità questi punti possono essere resi linearmente separabili [1] mappandoli su una dimensione superiore [2].

Implicazione: fantastico, ciò che mi dice questo teorema è che se prendo il mio set di dati e mappa questi punti su una dimensione superiore, allora posso facilmente trovare un classificatore lineare. Tuttavia, la maggior parte dei classificatori deve calcolare una sorta di somiglianza come il prodotto punto e questo significa che la complessità temporale di un algoritmo di classificazione è proporzionale alla dimensione del punto dati. Quindi, una dimensione superiore significa una maggiore complessità temporale (per non parlare della complessità dello spazio per memorizzare quei punti di grandi dimensioni).

nfN(>>n)KxyK(x,y)=f(x),f(y)O(n)O(N)

f

La separabilità lineare implica che i punti della stessa classe si avvicineranno ai punti di classi diverse? No, non esiste una garanzia in quanto tale. La separabilità lineare non implica in realtà che il punto della stessa classe si sia avvicinato o che i punti di due classi diverse siano andati oltre.

Quindi perché kNN dovrebbe funzionare? Non serve! Tuttavia, se lo fa, è semplicemente a causa del kernel.

x=(x1,x2)x(x12,2x1x2,x22)

Allora perché usare il kernel kNN? Abbiamo dimostrato che la complessità di calcolo dell'uso dei kernel è leggermente superiore rispetto al normale kNN e se i dati traggono vantaggio dall'uso dei kernel, perché non utilizzarli comunque?

Esiste un documento che ha studiato quale classe di dati può trarre vantaggio dai kernel in kNN? Per quanto ne so, No.

[1] http://en.wikipedia.org/wiki/Linear_separability
[2] http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4038449&tag=1

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.