Machine Learning KNN und andere (Kap. 8) K-Nearest Neighbour • Typischerweise für Klassifikationsaufgaben verwendet • Ursprünglich zur Mustererkennung • Schon Mitte der 50er Jahre angewendet • Keine spezielle Trainingsprozedur erforderlich (aber Trainingsdaten) • Relativ hoher Aufwand zur Laufzeit • „Instance based Learning“ • „Lazy Learning“ K-nearest Neighbour • Idee: – Finde in den Trainingsdaten den/die zur aktuellen Instanz ähnlichste(n) Instanz(en) – Die aktuelle Instanz bekommt denselben Wert wie diese(r) Nachbar(n) • Schwierigkeit: – Wieviele Nachbarn? – Welches Ähnlichkeitsmaß? – Was, wenn die Werte der Nachbarn nicht übereinstimmen? K-Nearest Neighbour • K=3 K= 1 Nächster Nachbar von x x 3 nächste Nachbarn von x x KNN Algorithmus • Jede Instanz hat die Form <xi,f(xi)> • Berechne Abstand zwischen Testinstanz und jeder Trainingsinstanz • Wähle die k-nächsten Nachbarn n1, n2, ..., nk aus • Der Wert für x ergibt sich durch: – f(x) = A(f(n1), f(n2), ..., f(nk)) – A ist eine Auswahlfunktion Ähnlichkeitsmaße für binäre Features X seien die positiven Features von Instanz A und Y die positiven Features von Instanz B, die Ähnlichkeit von A und B ist dann: • • • • • Matching Koeffizient: Dice Koeffizient : Jaccard Koeffizient : Overlap Koeffizient : Kosinus: |X Y| 2|X Y|/(|X|+|Y|) |X Y|/|X Y| |X Y|/min(|X|,|Y|) |X Y|/(|X|x|Y|)1/2 Vektorraum-Maße • Euklidischer Abstand dist ( x , y ) n (x y ) i i 2 i 1 • Kosinus-Maß: x. y cos( x , y) x y n x yi i 1 i n x i 1 i 2 n i 1 yi 2 Auswahlfunktion • Mehrheitsentscheidung k • Durchschnitt: f (n ) f ( x) i i 1 k • Gewichtete Summe: k f ( x) sim (ni, x) f (ni ) i 1 k oder w f (n ) i f ( x) i i 1 k w i i 1 mit 1 wi d (ni, x) 2 Knn für (Text)klassifikation • Notwendig: Threshold für die Ähnlichkeit: – Wenn die Testinstanz nicht „nahe genug“ bei einer Trainingsinstanz liegt, soll keine Klassifikation stattfinden, bzw. Mehrfachklassifikation soll zugelassen werden • Möglichkeiten: – Rcut: weise die Top n Kategorien zu – Pcut: strebe bei den Testinstanzen gleiche Verteilung an wie bei den Trainingsinstanzen (geht nur im BatchModus) – Scut: wähle (u.U. für jede Kategorie individuellen) festen Threshold KNN • Eigenschaften: – Zielfunktion wird nicht explizit bestimmt, lediglich für einen Punkt lokal approximiert – Dadurch können komplexe Zielfunktionen durch rel. einfache lokale Approximationen ersetzt werden – Geeignete Datenstruktur zur effizienten Berechnung der Abstände erforderlich • Geeignet für: – Werte sind diskret oder reellwertige Vektoren – Rel. geringe Anzahl von Features – Große Menge an Trainingsdaten verfügbar • Vorteile – Kein Trainingsaufwand – Komplexität der Zielfunktion spielt keine Rolle – Kein Informationsverlust • Nachteile – Negative Effekte durch irrelevante Features – Hoher Verarbeitungsaufwand KNN: Modifikationen • Reduktion der Feature Menge: – Versuche irrelevante Features zu entfernen – Cross-Validierung: „leave-one-out“-Methode: • betrachte jeweils eine Instanz der Trainingsdaten als Testinstanz (reihum) und teste so das Streichen von Features – Umgewichtung der Features: gewichte vermutlich relevante Features stärker als andere Lokal gewichtete lineare Regression • Bei KNN: gewichtete Summe als Funktion zur Bestimmung von f(x) -> punktweise • Verallgemeinerung: versuche die Zielfunktion tatsächlich lokal zu approximieren (= Regression) • Nehme an die Zielfunktion ist linear, d.h. n f ( x ) w0 w1 x1 ... wnxn w0 wixi i 1 Lokal gewichtete Regression • Approximiere diese Funktion lokal mittels der k nächsten Nachbarn • Approxiationsverfahren: Minimierung des quadratischen Fehlers mittels des absteigenden Gradienten Verfahrens (cf. Neuronale Netze) Lazy Learner – Eager Learner • Lazy = keine Vorprozessierung der Trainingsdaten • Traingsdaten können leicht geändert werden • Keine Veränderung der Trainingsdaten durch‘s Lernen • Keine Generalisierung • Hoher Aufwand zur Laufzeit • Gefahr des Overfitting geringer • Lokale Approximationen, erlauben komplexere Zielfunktionen • Eager = Vorverarbeitung der Trainingsdaten • Änderung der Trainingsdaten hat großen Aufwand zur Folge • Trainingsdaten werden durch‘s Lernen verändert • Generalisierung der Trainingsdaten • Hoher Trainingsaufwand, gutes Laufzeitverhalten • Overfitting • Es muss uniforme Zielfunktion für alle Daten gefunden werden Rocchio Klassifikator • Typisch für Textklassifikation • Basiert auf Vektorraum-Modell • Idee: erzeuge aus den Trainingsdaten einen prototypischen Vektor für jede Kategorie und vergleiche den Vektor der neuen Instanz mit diesen Kategorien-Vektoren • Verfahren stammt eigentlich aus dem Information Retrieval und wurde ursprünglich zum Relevance Feedback entwickelt Rocchio • Berechnung des prototypischen Vektors: – Seien Tc+ die positiven und Tc- die negativen Trainingsbeispiele (Vektoren) für eine Kategorie c 1 1 Rc t t tTc tTc |T | |T | – 1 t tTc / sind |T / | die Centroiden von T+ bzw. T- Rocchio • Klassifikation: – Für eine Testinstanz x berechne für jede Kategorie ci: d(x, ci) – Thresholding nach pcut, scut oder rcut • Probleme: – Wahl von α und β – Wahl des Abstandsmaß Relevance Feedback • Ziel: basierend auf dem Feedback des Benutzers soll die Query Q so modifizert werden, dass die Ergebnisse relevanter werden. – Seien D+ die Dokumente, die als relevant beurteilt wurden und D- die als irrelevant beurteilten, dann: 1 1 Q' Q d d d D d D | D | | D | Rocchio: Bewertung • Konzeptuell sehr einfaches Modell • Erlaubt Aussagen über die Beziehung der Klassen untereinander • Trainingsaufwand relativ gering • Verarbeitungsgeschwindigkeit linear in Anzahl der Features und Anzahl der Klassen • In der Praxis jedoch schlechte Klassifikationsqualität Aufgaben • Implementieren Sie bitte einen knn-Klassifikator: – Daten: wie für Beispiel Bayes (http://www.cis.unimuenchen.de/kurse/pmaier/ML_05/material/MaterialB ayes.tgz ) – Reduzieren Sie die Featuremenge mit einem geeigneten Verfahren rel. stark – Bestimmen Sie einen geeigneten Wert für k – Definieren Sie eine Repräsentation in der sie die Trainingsbeispiele abspeichern wollen und wenden sie dieses Verfahren dann an – Wählen und implementieren Sie eine Auswahlfunktion A