22:16 / 05.08.2009
Am Vormittag habe ich mich sowohl mit FLLLAME als auch mit WEKA vertraut gemacht und die Dokumentation zu den Bildverbesserungsverfahren abgeschlossen.
Desweiteren wurde mir nähergelegt, im Standardwerk zum Thema Machine Learning das erste Kapitel weiterzulesen.
Es bietet eine grundlegende Einführung in die Thematik auf Basis der Wahrscheinlichkeitsrechnung und beginnt mit der Laplac'schen Wahrscheinlichkeit und führt sehr schnell in das Bayestheorem ein, das es ermöglicht Wahrscheinlichkeiten zu gewichten und deshalb eine hervorragend Methode darstellt, Objekte anhand von Eigenschaften zu klassifizieren.
Ein Beispiel: 4/10 aller Objekte gehören zu Klasse A, 6/10 zu Klasse B, 9/10 aller Objekte, die zur Klasse A gehören und 5/10 aller Elemente die zu Klasse B gehören, besitzen das Merkmal A.
Wie groß ist die Wahrscheinlichkeit, dass ein Objekt, an dem das Merkmal A festgestellt wurde zur Klasse A gehört?
P(KA)=6/10
P(KB)=4/10
P(A/KA)=9/10
P(A)=4/10*9/10+6/10*5/10=36/100+30/100=66/100
P(KA/A)=P(KA)*P(A/KA)/P(A)=0,81
-> Zu 81% gehört ein Objekt, an dem Merkmal A festgestellt wurde in die Klasse A
Aufgrund der so genannten Desicion Theory wird ein Klassifier diesem Fall dem Merkmal A, die Klasse A zuordnen.
Dieses Verfahren kann man weiter verfeinern, wenn man einen Bias auf eine der beiden Klassen legt.
Hierzu wieder ein Beispiel: Es ist tragbar, wenn bei einer automatischen Diagnose Krebs festgestellt wird und deshalb weitere Untersuchungen durch einen Arzt angeordnet werden, der den Fehler leicht beheben kann, es hat aber fatale Folgen, wenn das Programm Krebs nicht diagnostiziert, weil er nicht 100% eindeutig ist.
Nun zum Nachmittag, dem eigentlichen Grund meiner Dokumentation:
Die Aufgabe war simpel:
Finde einen Algorithmus, der sich besonders gut auf die vorgegebenen Daten anwenden lässt und überschreite damit 60% bei Crossvalidierungsverfahren.
Überlege, wie man mit der großen Datenmenge umgehen kann (~62000 Datensätze mit 16 Attributen), um weiterhin schnell Ergebnisse präsentiert zu bekommen.
Die zweite Frage lässt sich einfach beantworten:
Entweder man skaliert die Performance des PCs mit der Größe der Datenmenge oder aber man reduziert die Datenmenge.
Statistisch gesehen ist der Unterschied, ob ich mehrere Algorithmen auf 100% oder nur zufällige 10% der Daten anwende, um festzustellen, welcher besser passt, marginal.
Getestet habe ich 20 Algorithmen sowohl auf eine unbiased und eine biased Variante Datensätze.
Zuerst alle auf das Trainingsset (um schlecht geeignete Algorithmen von vornherein auszusortieren [Achtung IB1 (ein 1NN Algorithmus) ergibt bei Validierung auf das Trainingsset immer 100%]), dann auf die verkleinerten Datensätze.
Die bestabschneidenden Algorithmen werden daraufhin per Parameter feingetuned und aufgrund iheres Abschneidens gewertet.
Die Bestgerweteten werden dann auf die gesamte Datenmenge (unbiased) losgelassen, wobei sowohl die Parameter für die biased als auch für die unbiased Variante getestet werden.
Derzeitiger Stand ist, dass der populäre Algorithmus Random Forest das beste Ergebnis geliefert hat (>90% korrekt klassifiziert), wobei ein Algorithmus noch immer rechnet, der bei kleineren Datenmengen tendenziell bessere Ergebnisse lieferte.