Nel machine learning e nell'intelligenza artificiale, la classificazione dei dati è un processo fondamentale. L'obiettivo è assegnare etichette ai punti dati in base alle loro caratteristiche. Ciò comporta l'analisi di dati noti (dati di addestramento), in cui ogni esempio è etichettato con una categoria o un valore. Le etichette aiutano a stabilire schemi e relazioni all'interno dei dati, consentendo al modello di effettuare previsioni accurate su punti dati nuovi e inosservati. Purtroppo, lavorare con dati etichettati presenta i suoi problemi: i processi manuali coinvolti nell'etichettatura dei dati possono richiedere molto tempo ed essere difficili, e l'investimento di risorse potrebbe rendere questa un'opzione non praticabile per alcune organizzazioni.
L'algoritmo KNN (k-nearest neighbors) offre una soluzione semplice ed efficiente a questo problema. Invece di richiedere calcoli complessi in anticipo, KNN funziona memorizzando tutti i dati, per poi elaborare previsioni per i nuovi dati in base al livello di somiglianza ai dati esistenti. Questo approccio consente a KNN di effettuare previsioni accurate senza dover effettuare grandi aggiustamenti, un approccio particolarmente utile quando si lavora con set di dati più piccoli e con una potenza di calcolo limitata.
I vettori sono parte integrante della funzionalità dell'algoritmo k-nearest neighbors. Un vettore è una sequenza di numeri che rappresenta un punto in uno spazio multidimensionale. I modelli di machine learning devono essere in grado di trasformare dati grezzi e non strutturati in queste rappresentazioni numeriche, note come embedding. Gli embedding catturano l'essenza semantica o strutturale dei dati di input e le relazioni tra gli incorporamenti sono rappresentate come la loro prossimità spaziale (quanto sono vicini o lontani l'uno dall'altro) nello spazio vettoriale.
KNN sfrutta questa disposizione spaziale identificando i "vicini" di un punto di query, ovvero altri elementi incorporati posizionati in posizione ravvicinata all'interno dello spazio multidimensionale. Questi vicini riflettono punti dati con caratteristiche condivise o simili.
Ad esempio, due documenti con temi simili avranno embedding più ravvicinati, consentendo a KNN di riconoscere le somiglianze e le associazioni in modo da poter classificare nuovi dati o prevedere risultati in base a queste relazioni.
L'algoritmo k-nearest neighbors funziona utilizzando vettori per identificare il "k" (punti dati o vicini più prossimi) su un nuovo punto dati ed effettuare previsioni basate su questi punti vicini. Ad esempio, se l'obiettivo è classificare le e-mail come spam o non spam, KNN esaminerà le "k" email più simili e classificherà la nuova e-mail in base alla classificazione della maggioranza di queste e-mail simili.
In alternativa, immaginiamo che un'organizzazione disponga di dati su vari clienti, con caratteristiche quali età, interessi e cronologia degli acquisti. KNN può raggruppare questi clienti in categorie quali acquirenti abituali, acquirenti occasionali e chi si limita semplicemente a osservare, confrontandone le caratteristiche. Se un nuovo cliente visita il sito Web, KNN può prevedere il suo comportamento di acquisto valutando a quale gruppo assomiglia di più.
L'adattabilità dell'algoritmo aumenta ulteriormente se utilizzato con set di dati multimodali. In questo caso, le informazioni vengono combinate contemporaneamente da più fonti, come testo, immagini o audio. KNN è in grado di analizzare questi embedding in uno spazio vettoriale condiviso, identificando somiglianze tra modalità distinte. L'applicazione di KNN ai dati multimodali consente di trovare il vicino più simile, indipendentemente dal tipo di dati. Ciò rende KNN un algoritmo versatile per la gestione di scenari di dati sempre più complessi e diversificati.
- Riconoscimento di schemi
KNN è ampiamente utilizzato in attività di riconoscimento di schemi, come il riconoscimento di immagini e della scrittura a mano. Confrontando nuove immagini o campioni con un set di dati etichettato, KNN può classificare accuratamente oggetti, personaggi o volti in base alla somiglianza con schemi noti.
- Elaborazione dati
KNN è efficace nella pre-elaborazione dei dati, ad esempio nell'inserimento di valori mancanti o nell'individuazione di valori anomali. Analizzando i vicini più prossimi, KNN può stimare i valori mancanti in base ai punti dati più simili, migliorando la qualità e la coerenza dei dati.
- Motori di raccomandazione
KNN aiuta a creare sistemi di raccomandazione analizzando il comportamento e le preferenze degli utenti. Trovando utenti con interessi simili, KNN può suggerire prodotti, film o contenuti che sono piaciuti ad altre persone con profili simili, migliorando l'esperienza e il coinvolgimento dell'utente.
- Trasformazione da immagine a testo
KNN è sempre più utilizzato nelle attività di trasformazione delle immagini in testo nei sistemi multimodali. Confrontando gli embedding delle immagini con quelli delle descrizioni testuali, KNN consente ai sistemi di AI di eseguire attività complesse come l'aggiunta automatica di didascalie, in cui le corrispondenze più vicine forniscono un testo contestualmente appropriato per una determinata immagine.
In ciascuno degli approcci sopra elencati, l'accuratezza delle previsioni KNN dipende in larga misura dalle metriche di distanza utilizzate per misurare la similarità dei dati. Le metriche di distanza in KNN misurano la similarità tra i punti dati, fattore fondamentale per previsioni accurate. Queste metriche determinano il modo in cui l'algoritmo calcola la "vicinanza" dei punti dati per classificare o prevedere in modo efficace nuovi punti dati.
La distanza euclidea è il parametro più comunemente utilizzato in KNN e calcola la distanza in linea retta tra due punti nello spazio euclideo. Immagina di utilizzare una mappa e un righello per misurare il percorso più breve tra due luoghi. Quanto più breve è la distanza, tanto più i punti vengono considerati simili. Ad esempio, quando si confrontano l'altezza e il peso di individui diversi, la distanza euclidea aiuterebbe a determinare quali individui sono più simili in base a queste due caratteristiche che sono separate dalla distanza euclidea più breve.
La distanza di Manhattan misura le differenze assolute tra punti lungo ogni dimensione, come se ci si muovesse in una griglia di strade cittadine. Immagina una griglia urbana in cui il movimento può procedere solo lungo le strade (e non in diagonale attraverso gli edifici). Questo parametro è utile quando i punti dati sono strutturati in uno schema simile a una griglia, ad esempio quando si confrontano percorsi di consegna o scenari di pianificazione urbana.
La distanza di Minkowski è una generalizzazione delle distanze euclidea e di Manhattan. Modificando il parametro "p", può comportarsi come uno dei due parametri. Si può pensare alla distanza di Minkowski come a uno strumento flessibile in grado di adattarsi a diversi scenari in base alle esigenze specifiche dell'analisi dei dati. Ad esempio, se qualcuno dovesse confrontare proprietà con dimensioni diverse (come prezzo, superficie e numero di stanze), la modifica del valore "p" contribuirebbe a enfatizzare determinate dimensioni rispetto ad altre, e questo lo rende un parametro versatile per diversi tipi di confronti di dati.
Se non si definisce il valore corretto per "k", l'algoritmo KNN non funziona come previsto: scegliere un valore di "k" troppo piccolo può rendere le previsioni eccessivamente sensibili al rumore nei dati, portando a un'elevata varianza e a previsioni meno stabili. D'altro canto, un valore eccessivamente grande potrebbe livellare le previsioni, ma potrebbe anche rendere il modello troppo generalizzato, al punto da tralasciare schemi specifici.
Per trovare il valore "k" ottimale, i professionisti in genere utilizzano la convalida incrociata (una tecnica in cui il set di dati viene suddiviso più volte in set di addestramento e di convalida per testare diversi valori di "k"). Ciò aiuta a identificare un valore di "k" che riduce al minimo gli errori di previsione, mantenendo al contempo la capacità di generalizzazione dell'algoritmo.
Questo processo potrebbe comportare la necessità di eseguire diversi tentativi. Per trovare il giusto valore di "k", è necessario testare più valori per garantire che il modello funzioni bene sia sui dati visibili che su quelli non visibili, raggiungendo l'equilibrio ottimale tra stabilità e specificità.
Stabilire connessioni, somiglianze e relazioni tra punti dati è lo scopo generale dell'algoritmo k-nearest neighbors. Ciò che rende questo modello una scelta così popolare per le organizzazioni è la serie aggiuntiva di vantaggi che offre. I vantaggi di KNN includono:
KNN è semplice da implementare e comprendere, anche per i principianti del machine learning. Non richiede una fase di addestramento complessa; memorizza il set di dati di addestramento e lo utilizza direttamente per fare previsioni.
Che venga utilizzato per attività di classificazione o regressione, KNN è in grado di gestire le varie strutture dati e relazioni necessarie per raggruppare i punti dati. Questa flessibilità consente di applicarlo a più ambiti: finanziario, sanitario, dell'e-commerce e altro ancora.
KNN richiede solo pochi iperparametri, principalmente il valore di "k" e il parametro della distanza. Questo riduce la complessità implicita nel perfezionamento del modello rispetto ad altri algoritmi che potrebbero richiedere un'ottimizzazione estesa dei parametri. Di conseguenza, semplifica l'intero processo di sviluppo del modello e consente di ottenere più facilmente prestazioni superiori con aggiustamenti minimi.
Sebbene l'algoritmo KNN offra numerosi vantaggi, presenta anche alcuni punti deboli notevoli. Tra questi vi sono:
Per elevata dimensionalità si intende l'aumento esponenziale dei dati necessari per mantenere lo stesso livello di prestazioni al crescere del numero di funzionalità (o dimensioni). Negli spazi ad alta dimensionalità, la distanza tra i punti dati diventa meno significativa, rendendo difficile per KNN identificare i vicini realmente "più prossimi". Questo problema può ridurre significativamente l'accuratezza e l'efficacia dell'algoritmo nei set di dati con numerose funzionalità.
KNN può essere influenzato negativamente dal rumore e dai valori anomali nel set di dati, in particolare quando il valore di "k" è piccolo. Questa sensibilità può portare al sovradattamento, ovvero l'algoritmo cattura rumore e anomalie come se fossero schemi reali. Il sovradattamento determina una scarsa generalizzazione di dati nuovi e non visti, riducendo le prestazioni predittive del modello.
La complessità computazionale aumenta con la dimensione del set di dati, rendendo KNN inefficiente per set di dati eccessivamente grandi. Ogni previsione richiede il calcolo della distanza tra il nuovo punto dati e tutti i punti esistenti nel set di addestramento, il che comporta un elevato utilizzo di memoria e lunghi tempi di elaborazione. Questa mancanza di scalabilità limita l'applicabilità di KNN in scenari con grandi volumi di dati.
Come affermato in precedenza, l'algoritmo KNN classifica i punti dati in base alla loro vicinanza ad altri punti dati nel set di dati. Per fare ciò, l'algoritmo deve seguire una serie specifica di passaggi:
1. Scegliere il numero di vicini (k)
Definire il valore di "k" da considerare quando si effettua la classificazione o la regressione. Questo valore influenzerà il modo in cui l'algoritmo valuta la similarità tra i punti dati.
2. Calcolare la distanza
Per ogni punto dati nel set di addestramento, calcolare la distanza tra tale punto e il nuovo punto dati utilizzando uno dei parametri di distanza standard (distanza euclidea, di Manhattan o di Minkowski). Questa misurazione della distanza aiuta a identificare quelli che dovrebbero essere considerati i vicini più prossimi al nuovo punto dati.
3. Identificare i vicini più prossimi
Ordinare le distanze calcolate nel passaggio 2 e determinare i "k" vicini più prossimi. Questi vicini sono i punti dati più vicini al nuovo punto dati in base al parametro di distanza scelto.
4. Fare una previsione
Per le attività di classificazione, assegnare il nuovo punto dati alla classe più comune tra i suoi "k" vicini più prossimi. Per le attività di regressione, calcolare il valore medio o mediano dei "k" vicini più prossimi e utilizzare questo valore come previsione per il nuovo punto dati.
5. Valutare il modello
Valutare l'accuratezza e le prestazioni del modello KNN utilizzando tecniche di convalida incrociata. Adattare il valore di "k" e la metrica della distanza secondo necessità per ottimizzare le previsioni del modello.
Esistono diversi metodi per eseguire l'algoritmo k-nearest neighbor (KNN), ognuno con vantaggi e applicazioni specifici. I metodi seguenti aiutano a ottimizzare il processo di ricerca dei vicini più prossimi, rendendo KNN un'opzione efficiente per diversi tipi di set di dati.
- Forza bruta
Il metodo della forza bruta calcola la distanza tra il punto di query e tutti gli altri punti nel set di dati. È semplice ma computazionalmente costoso, il che lo rende più adatto per piccoli set di dati
- Albero K-dimensionale (albero k-d)
Un albero k-d organizza i punti in uno spazio k-dimensionale dividendo ricorsivamente lo spazio in iperrettangoli. Riduce i calcoli delle distanze e velocizza le ricerche KNN per dati di dimensionalità moderatamente elevata.
- Albero metrico
Un albero metrico suddivide lo spazio in ipersfere annidate, consentendo ricerche efficienti del vicino più prossimo mediante l'eliminazione delle parti irrilevanti del set di dati. È particolarmente efficace per dati ad alta dimensionalità e spesso supera le prestazioni degli alberi k-d in questi scenari.
L'algoritmo k-nearest neighbors è utile per la sua capacità di classificare i punti dati e quantificare le relazioni per i sistemi di AI. ServiceNow, leader nelle soluzioni IT aziendali, integra AI avanzata e KNN, fornendo potenti strumenti per la trasformazione digitale. La pluripremiata Now Platform® di ServiceNow sfrutta AI e machine learning per automatizzare, ottimizzare e modernizzare i flussi di lavoro nell'intera gamma di funzioni aziendali, consentendo un'ottimizzazione intelligente in tutta l'azienda.
Integrando KNN e altri algoritmi avanzati, ServiceNow consente alle organizzazioni di sfruttare l'AI per migliorare il processo decisionale, ridurre i tempi di risposta e adottare un approccio più efficiente al business. Scopri il potere trasformativo dell'AI e della Now Platform; richiedi subito una demo ServiceNow!