Grundlagen der Klassifikation: Softmax und k-nächste Nachbarn in Python
Klassifikation bedeutet, ein Label zu wählen, etwa Katze oder Hund. Ein Modell kann pro Klasse einen Score ausgeben und Softmax daraus Wahrscheinlichkeiten machen lassen, oder ein einfaches Verfahren wie k-nächste Nachbarn lässt die nächstgelegenen bekannten Beispiele abstimmen.
Das Konzept in einfachen Worten
Klassifikation bedeutet, ein Label zu wählen, etwa Katze oder Hund. Ein Modell kann pro Klasse einen Score ausgeben und Softmax daraus Wahrscheinlichkeiten machen lassen, oder ein einfaches Verfahren wie k-nächste Nachbarn lässt die nächstgelegenen bekannten Beispiele abstimmen.
Verwandle Scores mit Softmax in Klassenwahrscheinlichkeiten, bewerte sie mit Kreuzentropie und klassifiziere Punkte mit k-nächsten Nachbarn.
Die wichtigsten Ideen
- Softmax behält die Reihenfolge der Scores bei und lässt sie sich zu 1 aufsummieren.
- Die kategoriale Kreuzentropie bestraft selbstsichere falsche Antworten am stärksten.
- k-NN hat keinen Trainingsschritt: Es vergleicht einen neuen Punkt mit den gespeicherten Beispielen.
- Naive Bayes und Entscheidungsbäume (Gini-Unreinheit, Informationsgewinn) sind weitere klassische Klassifikatoren.
Wann wird dieser Ansatz verwendet?
- Verstehen, was in neuronalen Netzen und KI-Bibliotheken passiert.
- Die Idee lernen, bevor du sie in den passenden Challenges umsetzt.
- Dich auf Kurse zu maschinellem Lernen, Vorstellungsgespräche und Projekte vorbereiten.
Selbst ausprobieren
Klicke irgendwo ins linke Diagramm, um einen neuen Punkt per Abstimmung seiner k nächsten Nachbarn zu klassifizieren. Ändere rechts die Scores und beobachte Softmax.
Beispielcode
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)))
Erwartete Ausgabe
softmax: [0.659, 0.242, 0.099]
cross-entropy if class 0 is right: 0.417
(2, 1) -> cat
(5, 4) -> dog
So funktioniert es
softmax() potenziert die Scores und teilt durch ihre Summe, sodass die drei Wahrscheinlichkeiten zusammen 1 ergeben; das vorherige Abziehen des Maximums verhindert einen Überlauf. Die Kreuzentropie ist −log der Wahrscheinlichkeit der richtigen Klasse. knn() sortiert die Beispiele nach Abstand und lässt die 3 nächsten abstimmen.
Ändere die Werte und führe das Programm im CodeUtility Python Online-Compiler aus, ohne Python lokal zu installieren.
Übungsaufgaben
Verändere Eingaben und Randfälle, bevor du die Lösung mit größeren Datenmengen testest.
- Ändere Eingaben oder Gewichte und sage die Ausgabe vor dem Ausführen voraus.
- Gib die Zwischenwerte aus, um jeden Rechenschritt zu verfolgen.
- Löse die verlinkten Challenges unten, um die Idee selbst umzusetzen.
Mit einer Challenge üben
Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.
- Softmax-Funktion Verwandle Rohwerte in Wahrscheinlichkeiten mit Summe 1, ohne bei großen Werten überzulaufen. Einfach
- Kategoriale Kreuzentropie Miss den Verlust eines Mehrklassen-Klassifikators aus seinen vorhergesagten Wahrscheinlichkeiten und den richtigen Klassen. Einfach
- K-Nächste-Nachbarn-Klassifikator Sage ein Label per Mehrheitsentscheid der k nächstgelegenen Trainingspunkte voraus. Mittel
- Naive-Bayes-Klassifikator Sage eine Klasse aus kategorialen Merkmalen mit dem Satz von Bayes und Laplace-Glättung voraus. Mittel
- Gini-Unreinheit Miss, wie gemischt die Labels einer Gruppe sind, das Kriterium, mit dem Entscheidungsbäume Aufteilungen wählen. Einfach
- Informationsgewinn Berechne, wie stark die Aufteilung nach einem Merkmal die Entropie verringert, das Kriterium hinter ID3-Entscheidungsbäumen. Mittel