Basi della classificazione: softmax e k-nearest neighbors in Python
Classificare significa scegliere un'etichetta, come gatto o cane. Un modello può dare un punteggio per classe e lasciare che softmax lo trasformi in probabilità, oppure un metodo semplice come k-nearest neighbors può far votare gli esempi noti più vicini.
Il concetto in parole semplici
Classificare significa scegliere un'etichetta, come gatto o cane. Un modello può dare un punteggio per classe e lasciare che softmax lo trasformi in probabilità, oppure un metodo semplice come k-nearest neighbors può far votare gli esempi noti più vicini.
Trasforma i punteggi in probabilità di classe con softmax, valutali con la cross-entropy e classifica punti con i k vicini più prossimi.
Idee chiave
- Softmax mantiene l'ordine dei punteggi e li fa sommare a 1.
- La cross-entropy categoriale penalizza soprattutto le risposte sbagliate date con sicurezza.
- k-NN non ha una fase di addestramento: confronta un nuovo punto con gli esempi memorizzati.
- Naive Bayes e gli alberi decisionali (impurità di Gini, guadagno di informazione) sono altri classificatori classici.
Quando si usa?
- Capire cosa succede dentro le reti neurali e le librerie di IA.
- Imparare l'idea prima di implementarla nelle sfide corrispondenti.
- Prepararti a corsi di machine learning, colloqui e progetti.
Guardalo in azione
Fai clic in un punto qualsiasi del grafico a sinistra per classificare un nuovo punto con il voto dei suoi k vicini più prossimi. Cambia i punteggi a destra per vedere reagire softmax.
Codice di esempio
import math
from collections import Counter
# Softmax turns raw scores into probabilities that add up to 1.
def softmax(scores):
exps = [math.exp(s - max(scores)) for s in scores]
total = sum(exps)
return [e / total for e in exps]
probs = softmax([2.0, 1.0, 0.1])
print("softmax:", [round(p, 3) for p in probs])
# Cross-entropy is small when the true class gets a high probability.
print("cross-entropy if class 0 is right:", round(-math.log(probs[0]), 3))
# k-nearest neighbours: label a point by a vote of the closest examples.
examples = [((1, 1), "cat"), ((1, 2), "cat"), ((5, 5), "dog"), ((6, 5), "dog"), ((5, 6), "dog")]
def knn(point, k=3):
nearest = sorted(examples, key=lambda e: math.dist(point, e[0]))[:k]
return Counter(label for _, label in nearest).most_common(1)[0][0]
print("(2, 1) ->", knn((2, 1)))
print("(5, 4) ->", knn((5, 4)))
Output previsto
softmax: [0.659, 0.242, 0.099]
cross-entropy if class 0 is right: 0.417
(2, 1) -> cat
(5, 4) -> dog
Come funziona
softmax() applica l'esponenziale ai punteggi e divide per la loro somma, quindi le tre probabilità sommano a 1; sottrarre prima il massimo evita l'overflow. La cross-entropy è −log della probabilità della classe corretta. knn() ordina gli esempi per distanza e fa votare i 3 più vicini.
Modifica i valori ed esegui il programma nel compilatore Python online CodeUtility senza installare Python.
Esercizi pratici
Modifica gli input e verifica i casi limite prima di usare dataset più grandi.
- Cambia gli input o i pesi e prevedi l'output prima di eseguire.
- Stampa i valori intermedi per seguire ogni passo del calcolo.
- Risolvi le sfide collegate qui sotto per implementare l'idea da solo.
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
- Funzione softmax Trasforma punteggi grezzi in probabilità che sommano a 1, senza overflow con valori grandi. Facile
- Entropia incrociata categoriale Misura la perdita di un classificatore multiclasse dalle probabilità previste e dalle classi reali. Facile
- Classificatore k-nearest neighbors Prevedi un'etichetta con il voto di maggioranza dei k punti di addestramento più vicini. Media
- Classificatore Naive Bayes Prevedi una classe da variabili categoriali con il teorema di Bayes e lo smoothing di Laplace. Media
- Impurità di Gini Misura quanto sono mescolate le etichette di un gruppo, il punteggio con cui gli alberi decisionali scelgono le divisioni. Facile
- Guadagno di informazione Calcola quanto la divisione secondo una variabile riduce l'entropia, il criterio degli alberi decisionali ID3. Media