Glossario

K-Nearest Neighbors (KNN)

Scopri come K-Nearest Neighbors (KNN) semplifica l'apprendimento automatico con il suo approccio intuitivo e non parametrico per le attività di classificazione e regressione.

Addestra i modelli YOLO semplicemente
con Ultralytics HUB

Per saperne di più

Il K-Nearest Neighbors (KNN) è un algoritmo di apprendimento automatico semplice ma potente, utilizzato per compiti di classificazione e regressione. È considerato un algoritmo di apprendimento non parametrico e pigro, il che significa che non fa ipotesi forti sulla distribuzione dei dati sottostanti e rinvia il calcolo fino al momento della previsione. Il KNN è particolarmente intuitivo e facile da implementare, il che lo rende uno strumento prezioso per comprendere i concetti di base dell'apprendimento automatico.

Come funziona KNN

L'algoritmo K-Nearest Neighbors si basa sul principio della somiglianza. Quando viene presentato un nuovo punto di dati non classificato, KNN identifica i suoi "K" vicini più prossimi dal set di dati di formazione. Il valore di "K" è una costante definita dall'utente e determina quanti vicini influenzano la classificazione. Il processo si svolge come segue:

  1. Calcolo della distanza: Il KNN calcola la distanza tra il nuovo punto di dati e ogni altro punto del set di dati di addestramento. Le distanze più comuni sono la distanza euclidea, la distanza di Manhattan e la distanza di Minkowski.
  2. Selezione dei vicini: Seleziona i "K" punti dati dell'insieme di formazione che sono più vicini al nuovo punto dati, in base alla distanza calcolata nel passaggio precedente. Questi "K" punti sono i "vicini più vicini".
  3. Classificazione o regressione:
    • Classificazione: Per i compiti di classificazione, KNN assegna il nuovo punto dati alla classe più frequente tra i suoi "K" vicini. Si tratta essenzialmente di un voto a maggioranza tra i vicini.
    • Regressione: Per le attività di regressione, KNN predice il valore del nuovo punto dati calcolando la media (o mediana) dei valori dei suoi "K" vicini.

Applicazioni di KNN

La versatilità di KNN lo rende applicabile in diversi ambiti. Ecco un paio di esempi reali:

  • Sistemi di raccomandazione: In piattaforme come Netflix o Amazon, KNN può essere utilizzato per creare sistemi di raccomandazione con filtro collaborativo. Ad esempio, se vuoi che ti vengano consigliati dei film, KNN può trovare gli utenti che sono "vicini" a te in base a storie di visione simili e consigliare i film che questi vicini hanno apprezzato. In questo modo si sfrutta l'idea che gli utenti con preferenze simili in passato avranno probabilmente preferenze simili in futuro. Scopri di più sui sistemi di raccomandazione e su altre applicazioni dell'intelligenza artificiale nell'analisi dei dati.
  • Diagnosi medica: KNN può aiutare nell'analisi delle immagini mediche per diagnosticare le malattie. Analizzando i dati dei pazienti (sintomi, risultati di test, ecc.), KNN può trovare "K" pazienti simili in un database e, in base alle loro diagnosi, prevedere la diagnosi per un nuovo paziente. Ad esempio, nel rilevamento del cancro, si possono utilizzare le caratteristiche estratte dalle immagini mediche e il KNN può classificare le nuove immagini in base alla somiglianza con i casi benigni o maligni conosciuti.

Vantaggi e svantaggi di KNN

Come tutti gli algoritmi, anche KNN ha i suoi punti di forza e di debolezza:

Vantaggi:

  • Semplicità: KNN è facile da capire e da implementare.
  • Versatilità: Può essere utilizzato sia per la classificazione che per la regressione.
  • Non parametrico: non fa ipotesi sulla distribuzione dei dati, il che può essere vantaggioso in molti scenari reali.
  • Nessuna fase di formazione: Dato che KNN è un apprendista pigro, non c'è una fase di addestramento esplicita, il che lo rende veloce nell'adattarsi a nuovi dati.

Svantaggi:

  • Costoso dal punto di vista computazionale: Al momento della previsione, KNN deve calcolare le distanze da tutti i punti di dati di addestramento, il che può essere lento per i dataset di grandi dimensioni.
  • Sensibile alle caratteristiche irrilevanti: Il KNN si comporta male in presenza di caratteristiche irrilevanti, in quanto possono falsare i calcoli della distanza. Potrebbe essere necessario ricorrere a tecniche di selezione delle caratteristiche o di riduzione della dimensionalità.
  • Valore ottimale di "K": La scelta del giusto valore di 'K' è fondamentale e spesso richiede una sperimentazione. Un valore di 'K' troppo piccolo può portare a una sensibilità al rumore, mentre un valore di 'K' troppo grande può confondere i confini delle classi. Tecniche come la regolazione degli iperparametri possono aiutare a trovare il valore ottimale di 'K'.
  • Dati sbilanciati: Il KNN può essere sbilanciato verso la classe maggioritaria in set di dati sbilanciati perché i campioni della classe maggioritaria dominano il vicinato.

Concetti correlati

Capire il KNN in relazione ad altri concetti di apprendimento automatico aiuta ad apprezzare la sua nicchia e quando è più appropriato utilizzarlo:

  • Confronto con altri algoritmi di classificazione: A differenza della regressione logistica o delle macchine a vettori di supporto, che sono parametriche e apprendono un confine decisionale, KNN non è parametrico e si basa sull'istanza. Ad esempio, mentre la regressione logistica modella la probabilità di appartenenza a una classe, KNN utilizza direttamente i punti dati per la classificazione.
  • Relazione con gli algoritmi di clustering: Sebbene KNN sia un algoritmo di apprendimento supervisionato, condivide il concetto di somiglianza basato sulla distanza con gli algoritmi di apprendimento non supervisionato come il clustering K-Means. Tuttavia, K-Means viene utilizzato per raggruppare i dati non etichettati in cluster, mentre KNN viene utilizzato per classificare o prevedere i valori di nuovi punti di dati etichettati o non etichettati sulla base di dati di formazione etichettati.

In sintesi, K-Nearest Neighbors è un algoritmo fondamentale nell'apprendimento automatico, apprezzato per la sua semplicità ed efficacia in una varietà di applicazioni, soprattutto quando il dataset è di dimensioni moderate e i modelli di dati sono distinguibili per prossimità. Per i set di dati più complessi o per le applicazioni in tempo reale che richiedono un'inferenza più rapida, si possono preferire modelli più sofisticati, come ad esempio Ultralytics YOLO per il rilevamento degli oggetti.

Leggi tutto