Il K-Nearest Neighbors (KNN) è un algoritmo fondamentale nell'apprendimento automatico (ML) utilizzato per compiti di classificazione e regressione. Si distingue per la sua semplicità e l'approccio intuitivo. Il KNN è classificato come metodo non parametrico perché non fa ipotesi sulla distribuzione dei dati sottostanti. È anche conosciuto come un algoritmo di "apprendimento pigro" perché non costruisce un modello generale durante la fase di addestramento dei dati; al contrario, memorizza l'intero set di dati ed esegue i calcoli solo quando è necessaria una previsione.
Come funziona KNN
L'idea alla base del KNN si basa sulla somiglianza, spesso definita utilizzando metriche di distanza come la distanza euclidea. Quando si prevede un nuovo punto di dati non visto, l'algoritmo identifica i "K" punti di dati più vicini (vicini) ad esso dal set di dati di formazione memorizzati. Il valore "K" è un numero intero definito dall'utente e rappresenta il numero di vicini considerati.
- Per la classificazione: Il nuovo punto dati viene assegnato alla classe più comune tra i suoi K vicini. Se K=3 e due vicini appartengono alla Classe A e uno alla Classe B, il nuovo punto viene classificato come Classe A.
- Per la regressione: La previsione per il nuovo punto dati è tipicamente la media (o talvolta la mediana) dei valori dei suoi K vicini più prossimi.
La scelta della metrica della distanza e il valore di "K" sono iperparametri cruciali che influenzano in modo significativo le prestazioni del modello.
Scegliere il valore di 'K'
La selezione del valore ottimale di "K" è fondamentale. Un valore di "K" piccolo rende il modello sensibile al rumore e agli outlier, portando potenzialmente a un overfitting. Al contrario, un valore di "K" elevato può rendere eccessivamente morbidi i confini decisionali, causando potenzialmente un underfitting e un elevato costo computazionale. Spesso si ricorre a tecniche come la convalida incrociata per trovare un valore 'K' adeguato che bilanci il compromesso bias-varianza.
Applicazioni di KNN
La semplicità di KNN si presta a diverse applicazioni, in particolare quando l'interpretabilità è importante:
- Sistemi di raccomandazione: Il KNN può suggerire agli utenti articoli (come film o prodotti) in base alle preferenze dei loro vicini "più vicini" (utenti con gusti simili). Servizi come Netflix hanno esplorato metodi simili basati sulle istanze.
- Riconoscimento delle immagini: Nei compiti di classificazione delle immagini di base, KNN è in grado di classificare un'immagine in base alle classi delle immagini più simili presenti nel set di addestramento (ad esempio, identificare le cifre scritte a mano in base alla somiglianza dei pixel). Sebbene sia efficace per i set di dati più semplici come MNIST, i compiti più complessi richiedono spesso modelli sofisticati.
- Rilevamento di anomalie: Identificando i punti di dati lontani da qualsiasi cluster di vicini, KNN può essere utilizzato per rilevare i valori anomali, utili in aree come il rilevamento di frodi o l'identificazione di articoli difettosi nella produzione. Scopri di più sui metodi di rilevamento delle anomalie.
- Analisi dell'espressione genica: In bioinformatica, il KNN aiuta a classificare i campioni in base ai modelli di espressione genica, raggruppando i profili genetici simili. Scopri di più sull'IA nelle applicazioni sanitarie.
Vantaggi e svantaggi di KNN
KNN offre diversi vantaggi ma presenta anche delle limitazioni:
Vantaggi:
- Semplicità e intuizione: Facile da capire e da implementare.
- Nessuna fase di formazione: Apprende istantaneamente memorizzando il set di dati, rendendolo adattabile a nuovi dati.
- Flessibilità: Gestisce naturalmente la classificazione multiclasse e può essere adattata alla regressione.
Svantaggi:
- Costo computazionale: La previsione può essere lenta e costosa dal punto di vista computazionale, soprattutto in caso di set di dati di grandi dimensioni, poiché richiede il calcolo delle distanze da tutti i punti di addestramento.
- Sensibilità alle caratteristiche irrilevanti: Le prestazioni si riducono significativamente in presenza di dati altamente dimensionali (maledizione della dimensionalità) o quando sono presenti caratteristiche irrilevanti. Potrebbe essere necessario ricorrere a tecniche come la riduzione della dimensionalità.
- Necessità di scalare le caratteristiche: È sensibile alla scala dei dati; le caratteristiche con intervalli più ampi possono dominare i calcoli della distanza, rendendo necessaria la normalizzazione.
- Determinazione del valore ottimale di 'K': Trovare il valore migliore per 'K' richiede un'attenta regolazione dell'iperparametro.
KNN vs. concetti correlati
È importante distinguere KNN dagli altri algoritmi:
- Clustering K-Means: Sebbene entrambi utilizzino "K" e misure di distanza, K-Means è un algoritmo di apprendimento non supervisionato per raggruppare i dati in gruppi basati sulla somiglianza. KNN è un algoritmo di apprendimento supervisionato per la classificazione o la regressione basata sui vicini etichettati.
- Macchina a vettori di supporto (SVM): SVM è un algoritmo supervisionato che trova un iperpiano ottimale per separare le classi. A differenza dell'approccio KNN basato sull'istanza, SVM costruisce un modello esplicito, che spesso funziona meglio con dati ad alta dimensionalità.
- Alberi decisionali: Gli alberi decisionali costruiscono un modello basato sulla suddivisione delle caratteristiche, fornendo regole chiare per la classificazione o la regressione. Il KNN si basa sulla somiglianza locale piuttosto che su regole esplicite.
Mentre KNN è utile per alcuni compiti e per comprendere i concetti fondamentali del ML, problemi complessi come il rilevamento di oggetti in tempo reale spesso traggono vantaggio da modelli più avanzati come Ultralytics YOLOche offrono velocità e precisione superiori, soprattutto su dataset di computer vision di grandi dimensioni. Puoi addestrare e distribuire questi modelli utilizzando piattaforme come Ultralytics HUB.