Quando dovrei spostarmi oltre k vicino più vicino


9

Per molti progetti di machine learning che facciamo, iniziamo con il classificatore k Neighbor più vicino. Questo è un classificatore di partenza ideale poiché di solito abbiamo tempo sufficiente per calcolare tutte le distanze e il numero di parametri è limitato (k, metrica della distanza e ponderazione)

Tuttavia, ciò ha spesso l'effetto di rimanere fedeli al classificatore knn poiché in seguito nel progetto non c'è spazio per passare a un altro classificatore. Quale sarebbe una buona ragione per provare un nuovo classificatore. Quelli ovvi sono limiti di memoria e di tempo, ma ci sono casi in cui un altro classificatore può effettivamente migliorare la precisione?


È puramente accademico o deve essere usato nell'industria?
Dott. Rob Lang,

1
La maggior parte delle nostre applicazioni sono implementate nel settore (quindi l'ingombro della memoria e i tempi di calcolo sono problemi)

Risposte:


3

k-NN si generalizza in un senso molto restrittivo. Usa semplicemente i priori di smoothness (o presupposto di continuità). Questo presupposto implica che i modelli vicini nello spazio delle caratteristiche appartengono molto probabilmente alla stessa classe. K-NN non può recuperare alcuna regolarità funzionale nella distribuzione dei pattern.

Pertanto, richiede campioni di addestramento rappresentativi, che possono essere estremamente grandi, specialmente nei casi di spazi caratteristici altamente dimensionali. Peggio ancora, questi campioni potrebbero non essere disponibili. Di conseguenza, non può imparare gli invarianti. Se i pattern possono essere soggetti ad alcune trasformazioni senza cambiare le loro etichette e il campione di training non contiene pattern trasformati in tutti i modi ammissibili, k-NN non riconoscerà mai i pattern trasformati che non sono stati presentati durante l'allenamento. Questo vale, ad esempio, per le immagini spostate o ruotate, se non sono rappresentate in una forma invariante prima di eseguire k-NN. k-NN non può nemmeno estrarre da caratteristiche irrilevanti.

Un altro esempio in qualche modo artificiale sta seguendo. Immagina quel modello appartenente a classi diverse distribuite periodicamente (ad es. Secondo seno - se è inferiore a 0, allora i modelli appartengono a una classe ed è maggiore, quindi i modelli appartengono a un'altra classe). Il set di allenamento è finito. Quindi, sarà situato in una regione finita. Al di fuori di questa regione, l'errore di riconoscimento sarà del 50%. Si può immaginare la regressione logistica con funzioni di base periodiche che in questo caso funzioneranno molto meglio. Altri metodi saranno in grado di apprendere altre regolarità nelle distribuzioni dei modelli ed estrapolare bene.

Quindi, se si sospetta che il set di dati disponibili non sia rappresentativo e si debba conseguire l'invarianza per alcune trasformazioni di schemi, allora è così che si dovrebbe andare oltre k-NN.


Grazie per la tua risposta (e grazie BartoszKP per aver cercato di migliorarlo). È vero che knn non riesce a trovare modelli che richiedono trasformazione (a meno che non inizi a utilizzare una metrica di distanza strana (e errata)). Questa è una buona ragione per provare un altro classificatore, immagino che svm sia una scelta ovvia allora. Non ho abbastanza familiarità con svm per dirlo, ma non richiederebbe una conoscenza specifica del modello che stai cercando per definire il kernel?

Sì. La scelta del kernel dipenderà dai modelli. Il kernel gaussiano avrà proprietà simili al metodo k-NN. Anche altri kernel standard potrebbero sembrare inappropriati. Tuttavia, almeno, si potrebbe provare a usarli.

Come suggerito da @ Necro0x0, qualsiasi miglioramento lungo queste linee dipenderebbe dal fatto che il modello (nell'esempio sinusoidale, la periodicità) sia naturale per la parametrizzazione. Cioè, la parametrizzazione (scelta del kernel) definisce la struttura (effettivamente, la metrica) dello spazio di rappresentazione. Se riesci a determinare (forse indovinando educatamente) una struttura appropriata in qualche modo, allora prova a parametrizzare il modello di conseguenza. Si noti che alla fine, ciò consente al classificatore di trovare facilmente determinati tipi di funzionalità pertinenti.

3

Se si sarebbe vincolati dalla complessità computazionale, gli alberi delle decisioni (Quinal, 1986) sono difficili da battere (specialmente quando un framework offre la conversione diretta del modello DT in una serie di ifaffermazioni - come Accord.NET ).

Per dati ad alta dimensione la nozione di distanza, su cui si basa k-NN, diventa inutile (Kriegel, Kröger, Zimek, 2009) (anche: articolo di Wikipedia ). Quindi altri classificatori, come SVM (Corter, Vapnik, 1995) o Random Forests (Breiman, 2001) , potrebbero avere prestazioni migliori.

Riferimenti:


Naturalmente l'alta dimensione non è un limite fisso, nella maggior parte dei casi le nostre caratteristiche sono sufficientemente espressive per far funzionare la distanza. Naturalmente questo potrebbe essere un punto importante. Forse avrei dovuto chiarire con un esempio. Supponiamo di avere un classificatore con un'accuratezza del 93%, questo è accettabile, ma ora possiamo provare a migliorare il classificatore o trovare nuove funzionalità. Tutto dipende dalle nuove possibili funzionalità e dai dati, ma stavo cercando delle linee guida su questa decisione.

@Rhand Mi sembra che sia una decisione a livello di gestione del progetto. Se la soluzione attuale è accettabile, perché armeggiare con essa? È una perdita di tempo. Se non è accettabile, definisci con maggiore precisione cosa vuoi migliorare (velocità, precisione, ecc.).
BartoszKP,

Non è solo la gestione del progetto, la domanda è come ottenere la massima precisione (questo è nella mia domanda) e quale direzione è la migliore da prendere. Suggerisci svm e foresta casuale perché la dimensionalità potrebbe essere troppo alta, questa è una possibilità con cui potrei sperimentare per vedere se la precisione migliora e questo è il tipo di risposta che stavo cercando.

Bene, questa è invece una domanda molto ampia. Non esistono regole generali secondo cui il classificatore X sia migliore di Y. Dovresti semplicemente provare un certo numero di classificatori e quindi eseguire la convalida incrociata per la selezione del modello, ad esempio.
BartoszKP,

3

kNN è utile per campioni di dati di grandi dimensioni

Tuttavia gli svantaggi sono:

  1. Distorto dal valore di k.
  2. Complessità computazionale
  3. Limitazione della memoria
  4. Essere un algoritmo pigro di apprendimento supervisionato
  5. Facilmente ingannato da attributi irrilevanti.
  6. L'accuratezza delle previsioni può peggiorare rapidamente quando aumenta il numero di attributi.

Di solito è efficace solo se i dati di allenamento sono grandi e l'allenamento è molto veloce.


Non sto guardando al raggruppamento, ma alla classificazione

@Rhand eccoci, grazie per la nota iliasfl
Iancovici
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.