K Il vicino più vicino | Algoritmo KNN

Contenuti

Nota: Questo articolo è stato originariamente pubblicato su 10 ottobre 2014 e il 27 marzo 2018.

Panoramica

  • Capire il vicino più prossimo (KNN): uno degli algoritmi di apprendimento automatico più popolari
  • Scopri come funziona kNN in Python
  • Scegli il valore corretto di K in parole povere

introduzione

Nei quattro anni della mia carriera nella scienza dei dati, Ho costruito più di 80% di modelli di classificazione e solo uno 15-20% modelli di regressione. Queste proporzioni possono essere più o meno generalizzate in tutto il settore. La ragione di questo pregiudizio verso modelli di classificazione è che la maggior parte dei problemi analitici implica prendere una decisione.

Ad esempio, se un cliente si esaurirà o meno, se andiamo al cliente X per le campagne digitali, se il cliente ha un alto potenziale o no, eccetera. Queste analisi sono più approfondite e sono direttamente collegate a una roadmap di implementazione.

knn3-8559996

In questo articolo, parleremo di un altro machine learning ampiamente utilizzato. tecnica di classificazioneme chiamati K-vicini più vicini (KNN). Il nostro focus sarà principalmente su come funziona l'algoritmo e su come il parametro di input influenza l'output / predizione.

Nota: Le persone che preferiscono imparare attraverso i video possono imparare lo stesso attraverso il nostro corso gratuito – Algoritmo K-vicini più vicini (KNN) in Python e R. E se sei un principiante assoluto nella scienza dei dati e nell'apprendimento automatico, dai un'occhiata al nostro programma Certified BlackBelt:

Sommario

  • Quando usiamo l'algoritmo KNN??
  • Come funziona l'algoritmo KNN??
  • Come scegliamo il fattore K??
  • Abbattendolo – Pseudo codice KNN
  • Implementazione di Python da zero
  • Confrontando il nostro modello con scikit-learn

Quando usiamo l'algoritmo KNN??

KNN può essere utilizzato per la classificazione predittiva e problemi di regressione. tuttavia, più ampiamente utilizzato nei problemi di classificazione nell'industria. Per valutare qualsiasi tecnica, di solito guardiamo 3 aspetti importanti:

1. Facilità di interpretazione dell'output

2. Tempo di calcolo

3. Potere predittivo

Facciamo alcuni esempi per posizionare KNN sulla bilancia:

confronto-modello-1354057Ferias de algoritmos KNN a través de todos los parametri de consideraciones. È comunemente usato per la sua facile interpretazione e il basso tempo di calcolo.

Come funziona l'algoritmo KNN??

Prendiamo un caso semplice per capire questo algoritmo. Di seguito è riportata un'estensione dei cerchi rossi (RC) e quadrati verdi (GS):

scenario1-2967997Ha intenzione di scoprire la classe della stella blu (BS). BS può essere RC o GS e nient'altro. L'algoritmo “K” it KNN è il vicino più prossimo per cui vogliamo votare. Diciamo che K = 3. Perciò, ora faremo un cerchio con BS come centro così grande da racchiudere solo tre punti dati nel piano. Si prega di fare riferimento allo schema seguente per maggiori dettagli:

scenario2-2483947 I tre punti più vicini a BS sono tutti RC. Perciò, con un buon livello di fiducia, possiamo dire che il BS dovrebbe appartenere alla classe RC. Qui, la scelta è diventata molto ovvia in quanto i tre voti del vicino più prossimo sono andati a RC. La scelta del parametro K è molto importante in questo algoritmo. Prossimo, capiremo quali sono i fattori da considerare per concludere al meglio K.

Come scegliamo il fattore K??

Cerchiamo prima di capire cosa esattamente K influenza l'algoritmo. Se vediamo l'ultimo esempio, dal momento che 6 observaciones de addestramento permanecen constantes, con un dato valore di K possiamo porre dei limiti per ogni classe. Questi limiti separeranno RC da GS. Nello stesso modo, proviamo a vedere l'effetto del valore “K” nei limiti della classe. Di seguito i diversi limiti che separano le due classi con differenti valori di K.

k-giudizio-4044801

k-giudizio2-3183925

Se guardi da vicino, puoi vedere che il limite diventa più liscio all'aumentare del valore di K. Con K crescente all'infinito, alla fine diventa tutto blu o tutto rosso, a seconda della maggioranza totale. Il tasso di errore di addestramento e il tasso di errore di convalida sono due parametri di cui abbiamo bisogno per accedere a diversi valori K.. A continuación se muestra la curva para la tasa de error de entrenamiento con un valor variabile de K:

errore di formazione-6116377Come potete vedere, il tasso di errore in K = 1 è sempre zero per il campione di allenamento. Questo perché il punto più vicino a qualsiasi punto dati di addestramento è se stesso, quindi la previsione è sempre accurata con K = 1. Se la curva dell'errore di convalida fosse stata simile, la nostra scelta di K sarebbe stata 1. Di seguito è riportata la curva dell'errore di validazione con un valore variabile di K:

errore di formazione_11-9737814Questo cancella la storia. E K = 1, stavamo oltrepassando i limiti. Perciò, il tasso di errore inizialmente diminuisce e raggiunge il minimo. Dopo il punto di minimo, aumenta con l'aumentare di K. Per ottenere il valore ottimale di K, può separare la formazione e la convalida iniziale del set di dati. Ora traccia la curva dell'errore di convalida per ottenere il valore ottimale di K. Questo valore di K dovrebbe essere utilizzato per tutte le previsioni.

Il contenuto di cui sopra può essere compreso in modo più intuitivo utilizzando il nostro corso gratuito: Algoritmo dei vicini più vicini (KNN) in Python e R

Abbattendolo – Pseudo codice KNN

Possiamo implementare un modello KNN seguendo i passaggi seguenti:

  1. Caricare dati
  2. Inizializza il valore di k
  3. Per ottenere la classe prevista, ripetere da 1 fino al numero totale di punti dati di formazione
    1. Calcolare la distanza tra i dati del test e ogni riga di dati di allenamento. Qui useremo la distanza euclidea come metrica della distanza, in quanto è il metodo più popolare. Le altre metriche che possono essere utilizzate sono Chebyshev, coseno, eccetera.
    2. Ordinare le distanze calcolate in ordine crescente in base ai valori di distanza
    3. Ottenere le prime k righe dell'array ordinato
    4. Ottieni la classe più frequente in queste righe
    5. Restituisce la classe prevista

Implementazione di Python da zero

Useremo il popolare set di dati Iris per costruire il nostro modello KNN. Puoi scaricarlo da qui.

Confrontando il nostro modello con scikit-learn

from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(data.iloc[:,0:4], dati['Nome'])

# Predicted class
print(neigh.predict(test))

-> ['Iris-virginica']

# 3 nearest neighbors
print(neigh.kneighbors(test)[1])
-> [[141 139 120]]

Possiamo vedere che entrambi i modelli hanno previsto la stessa classe ('Iris-virginica') e gli stessi vicini più vicini ( [141 139 120] ). Perciò, possiamo concludere che il nostro modello funziona come previsto.

Implementazione di kNN in R

passo 1: importare i dati

passo 2: Verificare i dati e calcolare il riepilogo dei dati

Produzione

#Top observations present in the data
SepalLength SepalWidth PetalLength PetalWidth Name
1 5.1 3.5 1.4 0.2 Iris-setosa
2 4.9 3.0 1.4 0.2 Iris-setosa
3 4.7 3.2 1.3 0.2 Iris-setosa
4 4.6 3.1 1.5 0.2 Iris-setosa
5 5.0 3.6 1.4 0.2 Iris-setosa
6 5.4 3.9 1.7 0.4 Iris-setosa

#Check the dimensions of the data
[1] 150 5

#Summarise the data
SepalLength SepalWidth PetalLength PetalWidth Name 
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 Iris-setosa :50 
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 Iris-versicolor:50 
Mediare :5.800 Mediare :3.000 Mediare :4.350 Mediare :1.300 Iris-verginica :50 
Significare :5.843 Significare :3.054 Significare :3.759 Significare :1.199 
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500 

passo 3: suddivisione dei dati

passo 4: Calcola la distanza euclidea

passo 5: Scrivere la funzione per prevedere KNN

passo 6: Calcolo dell'etichetta (Nome) per K = 1

Produzione

Per K=1
[1] "Iris-verginica"

Nello stesso modo, può calcolare altri valori di K.

Confronto della nostra funzione di previsione kNN con la libreria “Classe”

Produzione

Per K=1
[1] "Iris-verginica"

Possiamo vedere che entrambi i modelli hanno previsto la stessa classe ('Iris-virginica').

Note finali

L'algoritmo KNN è uno degli algoritmi di classificazione più semplici. Anche con tanta semplicità, può dare risultati altamente competitivi. L'algoritmo KNN può essere utilizzato anche per problemi di regressione. L'unica differenza con la metodologia discussa sarà l'uso delle medie dei vicini più prossimi invece di votare per i vicini più prossimi.. KNN può essere codificato su una singola riga in R. Devo ancora esplorare come possiamo usare l'algoritmo KNN in SAS.

L'articolo ti è stato utile?? Hai usato altri strumenti di machine learning di recente?? Hai intenzione di utilizzare KNN in uno qualsiasi dei tuoi problemi aziendali?? Se è così, dicci come pensi di farlo.

Se ti piace quello che hai appena letto e vuoi continuare il tuo apprendimento analitico, iscriviti alle nostre email, Seguici su Twitter o come il nostro Facebook pagina.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.