Bases de la classification : softmax et k plus proches voisins en Python
Classer, c'est choisir une étiquette, comme chat ou chien. Un modèle peut produire un score par classe et laisser softmax les transformer en probabilités, ou une méthode simple comme les k plus proches voisins peut faire voter les exemples connus les plus proches.
Le concept en termes simples
Classer, c'est choisir une étiquette, comme chat ou chien. Un modèle peut produire un score par classe et laisser softmax les transformer en probabilités, ou une méthode simple comme les k plus proches voisins peut faire voter les exemples connus les plus proches.
Transformez des scores en probabilités de classes avec softmax, évaluez-les avec l'entropie croisée et classez des points avec les k plus proches voisins.
Idées clés
- Softmax conserve l'ordre des scores et fait en sorte qu'ils totalisent 1.
- L'entropie croisée catégorielle pénalise surtout les mauvaises réponses données avec assurance.
- Les k-NN n'ont pas de phase d'entraînement : ils comparent un nouveau point aux exemples stockés.
- Naive Bayes et les arbres de décision (impureté de Gini, gain d'information) sont d'autres classifieurs classiques.
Quand l’utiliser ?
- Comprendre ce qui se passe à l'intérieur des réseaux de neurones et des bibliothèques d'IA.
- Apprendre l'idée avant de l'implémenter dans les défis correspondants.
- Se préparer aux cours d'apprentissage automatique, aux entretiens et aux projets.
À vous de jouer
Cliquez n'importe où sur le graphique de gauche pour classer un nouveau point par le vote de ses k plus proches voisins. Changez les scores à droite pour voir réagir softmax.
Code d’exemple
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)))
Résultat attendu
softmax: [0.659, 0.242, 0.099]
cross-entropy if class 0 is right: 0.417
(2, 1) -> cat
(5, 4) -> dog
Fonctionnement
softmax() applique l'exponentielle aux scores et divise par leur somme, donc les trois probabilités totalisent 1 ; soustraire d'abord le maximum évite les dépassements. L'entropie croisée est −log de la probabilité de la bonne classe. knn() trie les exemples par distance et fait voter les 3 plus proches.
Modifiez les valeurs et exécutez le programme avec le compilateur Python en ligne CodeUtility, sans installation locale.
Exercices pratiques
Modifiez les entrées et testez les cas limites avant d’utiliser des données plus volumineuses.
- Modifiez les entrées ou les poids et prédisez la sortie avant d'exécuter.
- Affichez les valeurs intermédiaires pour suivre chaque étape du calcul.
- Résolvez les défis liés ci-dessous pour implémenter l'idée vous-même.
S'entraîner avec un défi
Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.
- Fonction softmax Transformez des scores bruts en probabilités dont la somme vaut 1, sans dépassement de capacité avec de grandes valeurs. Facile
- Entropie croisée catégorielle Mesurez la perte d'un classifieur multiclasse à partir des probabilités prédites et des vraies classes. Facile
- Classifieur des k plus proches voisins Prédisez une étiquette par vote majoritaire des k points d'entraînement les plus proches. Moyen
- Classifieur naïf bayésien Prédisez une classe à partir de variables catégorielles avec le théorème de Bayes et le lissage de Laplace. Moyen
- Impureté de Gini Mesurez à quel point les étiquettes d'un groupe sont mélangées, le score qu'utilisent les arbres de décision pour choisir leurs divisions. Facile
- Gain d'information Calculez de combien une division selon une variable réduit l'entropie, le critère des arbres de décision ID3. Moyen