Vai al contenuto

Algoritmo k-NN

Da Wikipedia, l'enciclopedia libera.
Algoritmo k-NN
Image
5NN
ClasseP
Struttura datiAlbero binario (K-d tree), Ball tree
Caso peggiore temporalmente
Caso ottimo temporalmente (con kd-tree o ball tree)
Caso medio temporalmente (forza bruta)
Caso peggiore spazialmente

Nell'ambito dell'apprendimento supervisionato e discipline affini, l'algoritmo k-nearest neighbors (traducibile come "algoritmo dei vicini più prossimi"), abbreviato in algoritmo k-NN, è un metodo non parametrico di classificazione o regressione che si basa direttamente sul dataset di addestramento e su una misura di similarità per decidere il valore di una variabile di output, rispettivamente categorica o continua.[1][2] In entrambi i casi, per ogni nuovo esempio su cui effettuare la predizione si trovano i esempi di addestramento ( numero intero positivo) "più simili"/"vicini" nello spazio determinato dalle feature ossia le variabili di input utilizzate per descrivere gli esempi. L'output dipende dal problema da risolvere:

  • Nella classificazione -NN, l'output è l'etichetta di una classe. L'istanza viene classificata attraverso un voto di maggioranza, ossia l'istanza sarà assegnata alla classe corrispondente all'etichetta più comune tra i suoi vicini più prossimi (ossia a minore distanza).
  • Nella regressione -NN, l'output è il valore della variabile di output per calcolato come media dei valori dei vicini più prossimi.

Caratteristiche principali

[modifica | modifica wikitesto]

È l'algoritmo più semplice fra quelli utilizzati nell'apprendimento automatico.[3]

Il parametro k

[modifica | modifica wikitesto]

Un'istanza è classificata in base alla maggioranza dei voti dei suoi vicini selezionati. Il parametro è un intero positivo tipicamente non molto grande. Se , allora l'istanza viene assegnata alla classe del suo vicino. In caso di problema di classificazione binario, ossia in cui sono previste esclusivamente due classi, è opportuno scegliere dispari per evitare di ritrovarsi in situazioni di parità.

Questo metodo può essere utilizzato per la tecnica di regressione assegnando all'istanza la media dei valori dei suoi vicini selezionati.

Considerando solo i voti dei vicini c'è l'inconveniente dovuto alla predominanza delle classi con più esempi. In questo caso può risultare utile pesare i contributi dei vicini in modo da dare, nel calcolo della media, maggior importanza in base alla similarità rispetto all'istanza considerata.

Scelta del parametro k

[modifica | modifica wikitesto]

La scelta di dipende dalle caratteristiche dei dati. Generalmente all'aumentare di si riduce il rumore che compromette la classificazione, ma il criterio di scelta per la classe diventa più labile. La scelta può esser presa attraverso tecniche euristiche, come ad esempio la convalida incrociata.

Fase di apprendimento

[modifica | modifica wikitesto]

Lo spazio viene partizionato in regioni in base alle posizioni e alle caratteristiche delle istanze di addestramento. Questo partizionamento (e le strutture per l'ottimizzazione della ricerca ad esso collegate) può essere considerato come l'input per l'algoritmo, anche se esso non è esplicitamente richiesto dalle condizioni iniziali.

Calcolo della distanza

[modifica | modifica wikitesto]

Ai fini del calcolo della similarità le istanze sono rappresentate attraverso vettori di posizione in uno spazio multidimensionale. Di solito viene usata la distanza euclidea, ma anche altri tipi di distanza sono ugualmente utilizzabili, ad esempio la distanza Manhattan, le Minkowski o la Mahalanobis. Nel caso in cui si debbano manipolare stringhe e non numeri si possono usare altre misure quali ad esempio la distanza di Hamming. L'algoritmo è sensibile alla "struttura locale" dei dati.

Fase di classificazione

[modifica | modifica wikitesto]

Un punto (che rappresenta un'istanza) è assegnato alla classe se questa è la più frequente fra i esempi più vicini all'istanza sotto esame, la vicinanza si misura in base alla distanza fra punti. I vicini sono presi da un insieme di addestramento supervisionato per cui è nota la classificazione corretta. Nel caso della regressione per il calcolo della media (classificazione) si usa il valore della proprietà considerata.

Esempio di utilizzo

[modifica | modifica wikitesto]
Image
Esempio di problema di classificazione risolto via k-NN

In figura è rappresentato un esempio di classificazione mediante -NN. Il punto sotto osservazione è il pallino verde. Le classi sono due:

  • quella dei triangolini rossi;
  • quella dei quadratini blu.

Se (cioè vengono considerate le 3 istanze più vicine), allora il pallino verde viene inserito nella stessa classe dei triangolini rossi perché sono presenti 2 triangolini e 1 quadratino. Se , allora viene inserito nella stessa classe dei quadratini blu perché sono presenti 3 quadratini e 2 triangolini.

Valutazione: vantaggi e svantaggi

[modifica | modifica wikitesto]

Al tendere della quantità di dati all'infinito l'algoritmo non supera mai di due volte l'errore di Bayes (il minimo errore dovuto alla distribuzione dei dati). Per alcuni valori di , con che cresce in funzione della mole di dati, l'algoritmo raggiunge l'errore di Bayes.

Prestazioni ottimali si raggiungono utilizzando alberi di ricerca ad hoc come k-d tree, ball tree e, in generale, metric tree.[4]

Il calcolo delle distanze è computazionalmente oneroso e proporzionale alla taglia dell'insieme di dati sotto esame. Gli algoritmi proposti che migliorano questo inconveniente cercano principalmente di diminuire il numero di distanze da calcolare per la decisione. In alcuni casi si cerca di partizionare lo spazio vettoriale e si calcolano solo le distanze tra volumi dello spazio vettoriale.

Algoritmi simili

[modifica | modifica wikitesto]

Di seguito sono elencati alcuni algoritmi della tipologia -NN:

Variabili continue

[modifica | modifica wikitesto]

L'algoritmo -NN può essere utilizzato, con opportuni adattamenti, per stimare variabili continue. Questo tipo di implementazione utilizza una media pesata basata sull'inverso della distanza.

  1. ↑ (EN) Fix, Evelyn; Hodges, Joseph L., Discriminatory Analysis. Nonparametric Discrimination: Consistency Properties (Tech. Report) (PDF), su apps.dtic.mil, 1951. URL consultato il 27 settembre 2025 (archiviato dall'url originale il 31 gennaio 2024).
  2. ↑ T. Cover e P. Hart, Nearest neighbor pattern classification, in IEEE Transactions on Information Theory, vol. 13, n. 1, 1967-01, pp. 21–27, DOI:10.1109/TIT.1967.1053964.
  3. ↑ Tom M. Mitchell, 8. Instance based Learning (PDF), in Machine learning, McGraw-Hill, 1997, ISBN 978-0-07-042807-2.
  4. ↑ (EN) Ting Liu, Andrew W. Moore e Alexander Gray, New Algorithms for Efficient High-Dimensional Nonparametric Classification, in Journal of Machine Learning Research, vol. 7, n. 41, 2006, pp. 1135–1158.

Collegamenti esterni

[modifica | modifica wikitesto]