K-Nearest Neighbors (KNN)
Scopri come K-Nearest Neighbors (KNN) semplifica l'apprendimento automatico con il suo approccio intuitivo e non parametrico per le task di classificazione e regressione.
K-Nearest Neighbors (KNN) è un algoritmo di apprendimento non parametrico,
di apprendimento non parametrico e supervisionato, ampiamente utilizzato per
classificazione e regressione. Spesso definito
come "apprendista pigro" o metodo di apprendimento basato sull'istanza, KNN non genera una funzione discriminativa dai dati di addestramento durante la fase di addestramento.
dai dati di addestramento durante la fase di addestramento. Al contrario,
memorizza l'intero set di dati ed esegue calcoli solo quando fa previsioni su nuove istanze. Questo approccio
presuppone che i punti di dati simili siano vicini nello spazio delle caratteristiche, consentendo all'algoritmo di classify
nuovi input in classify
alla classe maggioritaria.
nuovi input in base alla classe maggioritaria o al valore medio dei loro vicini più prossimi.
Come funziona KNN
Il meccanismo operativo di K-Nearest Neighbors si basa su metriche di distanza per quantificare la somiglianza tra i punti di dati.
punti di dati. La metrica più comune è la
distanza euclidea, ma se ne possono usare altre come la
distanza di Manhattan o la distanza di Minkowski possono essere usate
a seconda del dominio del problema. Il processo di previsione prevede diverse fasi distinte:
-
Selezionare K: l'utente definisce il numero di vicini, indicato come "K". Questo è un passo cruciale nella
nella regolazione degli iperparametri, poiché il valore di K
influenza direttamente il rapporto bias-varianza del modello.
del modello sul rapporto bias-varianza. Un K piccolo può portare
sensibilità al rumore, mentre un K grande può attenuare i confini distinti.
-
Calcolo delle distanze: Quando viene introdotto un nuovo punto di interrogazione, l'algoritmo calcola la distanza
tra questo punto e ogni esempio del set di dati memorizzato.
-
Identificare i vicini: L'algoritmo ordina le distanze e seleziona le prime K voci con i valori più bassi.
valori più piccoli.
-
Produzione aggregata:
-
Classificazione: L'algoritmo assegna l'etichetta di classe che appare più frequentemente tra i K
vicini (voto a maggioranza).
-
Regressione: La previsione viene calcolata come media dei valori target dei K
vicini.
La semplicità di KNN lo rende una base efficace per molti problemi di apprendimento
problemi di apprendimento automatico. Di seguito è riportato un esempio
esempio utilizzando la popolare libreria Scikit-learn per
dimostrare un flusso di lavoro di classificazione di base.
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
# distinct classes: 0 and 1
X_train = np.array([[1, 1], [1, 2], [2, 2], [5, 5], [5, 6], [6, 5]])
y_train = np.array([0, 0, 0, 1, 1, 1])
# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# Predict class for a new point [4, 4]
prediction = knn.predict([[4, 4]])
print(f"Predicted Class: {prediction[0]}")
# Output: 1 (Closer to the cluster at [5,5])
Applicazioni nel mondo reale
Nonostante la sua semplicità, K-Nearest Neighbors viene impiegato in vari domini sofisticati in cui l'interpretabilità e il ragionamento basato sull'istanza sono preziosi.
ragionamento basato sull'istanza sono preziosi.
-
Motori di raccomandazione: KNN facilita il
filtraggio collaborativo
nei sistemi di raccomandazione. Le piattaforme di streaming
piattaforme di streaming lo utilizzano per suggerire contenuti trovando utenti con storie di visione simili (vicini) e consigliando
elementi che sono piaciuti. Questo metodo è efficace per personalizzare le esperienze degli utenti.
-
Diagnosi medica: nell'analisi
analisi delle immagini mediche, KNN può aiutare a
diagnosi di patologie confrontando le metriche del paziente o le caratteristiche dell'immagine con un database di casi storici. Per esempio
esempio, può aiutare a classify
tumori del cancro al seno come
maligno o benigno in base alla somiglianza delle caratteristiche delle cellule con i casi confermati.
-
Rilevamento delle anomalie: Le istituzioni finanziarie utilizzano KNN per
rilevamento delle anomalie per identificare le frodi. Analizzando i modelli di transazione
analizzando i modelli di transazione, il sistema può segnalare le attività che si discostano in modo significativo dal comportamento standard di un utente.
comportamento standard dell'utente, in sostanza i punti che sono lontani dai loro "vicini più vicini".
Distinguere KNN da altri algoritmi simili
Comprendere le differenze tra KNN e altri algoritmi è fondamentale per scegliere lo strumento giusto per un progetto di computer vision o di analisi dei dati.
progetto di computer vision o di analisi dei dati.
-
Clustering K-Means: È facile confondere KNN con
K-Means Clustering a causa dei nomi simili.
Tuttavia, K-Means è una tecnica di apprendimento
tecnica di apprendimento non supervisionato che raggruppa
dati non etichettati in cluster, mentre KNN è una tecnica supervisionata che richiede dati etichettati per la predizione.
-
Macchina a vettori di supporto (SVM): Sebbene entrambi siano utilizzati per la classificazione, una
macchina vettoriale di supporto (SVM) si concentra
trovare un confine decisionale globale (iperpiano) che massimizzi il margine tra le classi. KNN, invece, prende decisioni
decisioni basate sulla densità locale dei dati senza costruire un modello globale. Per saperne di più su queste differenze, consultare la
Documentazione SVM.
-
Alberi decisionali: A
Un albero decisionale classifica i dati attraverso l'apprendimento di regole
regole gerarchiche che dividono lo spazio delle caratteristiche. Il KNN si basa esclusivamente su metriche di distanza nello spazio delle caratteristiche, il che lo rende più flessibile ai confini decisionali irregolari ma
più flessibile ai confini irregolari delle decisioni, ma più pesante dal punto di vista computazionale durante l'inferenza.
Sebbene KNN sia potente per i piccoli insiemi di dati, deve affrontare problemi di scalabilità con i grandi dati.
grandi dati a causa del costo computazionale del calcolo delle
distanze per ogni interrogazione. Per ottenere prestazioni elevate
in tempo reale in compiti come il
rilevamento di oggetti, le moderne architetture di deep learning
come YOLO11 sono generalmente preferite per la loro
velocità e precisione superiori.