Menu
Coddy logo textTech

Introduzione a KNN

Lezione 6 di 19 del corso Introduzione all’apprendimento automatico di Coddy.

K-Nearest Neighbors (KNN) è un algoritmo di apprendimento supervisionato utilizzato sia per problemi di classificazione sia di regressione. È semplice ma potente e viene spesso usato come modello di base per modelli più complessi.

L’algoritmo KNN individua la somiglianza tra le caratteristiche usando metriche di distanza per identificare i punti più vicini a un punto. Per esempio, può ordinare i vini confrontandoli con quelli più simili, raggruppando insieme quelli con sapori simili. È come avere una guida che ti aiuta a trovare i vini simili in base alle loro caratteristiche più comuni. 🍷
L’idea alla base di KNN è piuttosto semplice:

  1. Calcolo della distanza: per un dato punto di test, l’algoritmo calcola la distanza tra quel punto e ogni altro punto del dataset di addestramento. La distanza può essere calcolata in vari modi, ad esempio usando la distanza euclidea o quella di Manhattan.
  2. Individuazione dei vicini più prossimi: l’algoritmo seleziona quindi i k punti nei dati di addestramento più vicini al punto di test. k è una costante definita dall’utente e può essere un qualsiasi numero intero.
  3. Effettuare una previsione: per la classificazione, l’algoritmo assegna al punto di test l’etichetta di classe più comune tra i k vicini più prossimi. Per la regressione, assegna la media dei ‘k’ vicini più prossimi.

KNN è un algoritmo di apprendimento pigro, il che significa che non apprende effettivamente un modello. Memorizza invece le istanze di addestramento e le usa per fare previsioni (la prossima lezione tratterà la fase di addestramento). Questo rende KNN computazionalmente costoso durante la fase di test.

Nonostante la sua semplicità, KNN può ottenere prestazioni sorprendentemente buone. Tuttavia, è sensibile alla scelta di k e al tipo di metrica di distanza, e non funziona bene con dati ad alta dimensionalità a causa della maledizione della dimensionalità.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

challenge icon

Sfida

Facile

In questa sfida impareremo diversi calcoli delle distanze.

Crea una funzione denominata distances_option_calculator che riceve tre variabili: X, y e distance_type. La funzione restituirà la distanza tra X e y in base a distance_type.

Ecco un elenco dei calcoli delle distanze più comuni:

Distanza euclidea (la più comune): la distanza in linea retta tra due punti. La radice quadrata della somma dei quadrati delle differenze tra ciascuna coordinata corrispondente dei punti:

La distanza Manhattan è nota anche come distanza del taxi o distanza a blocchi cittadini. È la somma delle differenze assolute tra i punti lungo tutte le dimensioni. Per due punti ( P ) e ( Q ), con coordinate ( (p_1, p_2, …, p_n) ) e ( (q_1, q_2, …, q_n) ) rispettivamente:

Distanza di Hamming: il numero di posizioni in cui i simboli corrispondenti sono diversi. Viene spesso usata per i dati categoriali.
Per esempio, prendiamo due stringhe binarie:

String 1: 1101
String 2: 1001

Confrontandole posizione per posizione, vediamo che i bit nella seconda posizione sono diversi (1 in String 1 e 0 in String 2). Tutte le altre posizioni sono uguali. Quindi, la distanza di Hamming tra queste due stringhe è 1.

distance_type può assumere i seguenti valori: hamming, manhattan, euclidian.

Provalo tu

def distances_option_calculator(X, y, distance_type):
    # Scrivi il codice qui
    if distance_type == "euclidian":
        pass
    elif distance_type == "manhattan":
        pass
    elif distance_type == "hamming":
        pass

Tutte le lezioni di Introduzione all’apprendimento automatico

Esercitati da solo: Compilatore Python online