KNN und andere

Werbung
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


tTc   
tTc  
 |T |
  |T |

–
 1



t

tTc  /   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
Herunterladen