Fundamentale Ideen der Informatik - Canvas

Werbung
Fundamentale
Ideen der
Informatik
PH Weingarten • Sommersemester 2014
Paul Libbrecht • CC-BY
Vorlesung 12:
Maschinelles Lernen
Karte der Themen
Netzwerk
Versionierung
Suche, Index
Verschlüsselung
Programmverlauf
Java Instruktionen
von Neumann Modell
Maschinelles Lernen
Datenstrukturen
Betriebsystem
Komplexität
Klassen & Instanzen
Komprimierung
Repräsentationen
Menü
• Idee: Maschinelles Lernen
• Latent Semantic Analysis
• Idee, Vorführung, Übung
• Decision Trees
• das ID3 Algorithmus
• ein ID3 Programme
Idee:
Maschinelles Lernen
• Rechner können Daten wahrnehmen
• Rechner können Aktionen betätigen
• Entscheidung treffen?
• durch eine Programme
• durch Wissen
• … oder einfach Lernen
• Annahme, die Welt repräsentieren:
• durch Attribute
• eine Situation ist ein Attributsmenge
Lernen?
• Mit Beispiele angfangen,
verallgemeinern
• zB Spam Classifier:
Wörter die zum Spam Status führen
• Eine Nützlichkeitsfunktion maximieren
• zB Menge des Geldes im Tag
• Aktionen mit Weltwahrnehmung
verbinden
Induktiv Lernen
• eine Funktion finden:
• einer Attributsammlung zu einer anderen
• die für Beispiele passt
• viele Funktionen passen
• diese Funktion wird nützlich
• wenn sie verallgemeinert wrid
• zB Regression
• linear is einfacher aber weniger genau
• ist nicht Linear einfach Geräusch ?
Quelle: Artificial Intelligence, A modern approach, S Russell, P Norvig, Prentice Hall (book, p 655)
Induktiv Lernen
Maschinelles Lernen:
Fundamental?
• Horizontal:
• in Banken (Kreditkartenprüfung),
eCommerce (Empfehlungsystem),
optische Buchstabenerkennung
Stimmenerkennung
• Vertikal:
• Kind: Verhältnisanpassung, Fahrradfahren lernen
Funktionen lernen, geheime Rezept finden
• Zeit:
• ID3: Quinlan 1986
• LSA: Landauer et al. 1997
Weiter...
• Klassisches Buch über
Künstliche Intelligenz
• von der Bibliothek
• Chapter 18 in MooPaed
• Webseite mit Folien und Code (link)
• Weka or Yale: open-source Programme
um maschinelles Lernen zu erforschen
Latent Semantic
Analysis
• Attribute: Worterscheinung
Welt: Dokumente
• Funktion zu lernen:
Wort → verwandte Wörter
• Idee: Wörterpaare die oft in demselben
Dokument erscheinen haben latent
ähnliche Meinungen
• Funktion: helfen ähnliche Wörter zu finden
Latent Semantic
Analysis: Wie?
• Worterscheinung
• Worterscheinung als Matriz
• Reihen: Dokumente
• Spalten: Worterscheinungsmenge
1: Der Junge heisst Tim.
2: Der Junge magt Nutella.
3: Nutella ist ungesund.
4: Nutella geht aufs Brot.
5: Die Bahn geht schnell.
Junge
heisst
Tim
magt
Nutella
ungesun
d
geht
Brot
Bahn
schnell
1
1
1
0
0
0
0
0
0
0
1
0
0
1
1
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
1
0
1
1
0
0
0
0
0
0
0
0
1
0
1
1
Latent Semantic
Analysis: Wie?
• Diese Matrix wird durch
⇤
Singularwertzerlegung geteilt M = U ⌃V
<latexit sha1_base64="zB74OVcpBcRnaaY4rXOZgXq2THU=">AAAB+HicbVBNS8NAEJ3Ur1q/oh69LBZBPJRERL0IRS9ehIqmLbSxbLabdulmE3Y3hRL6T7x4UPHqT/Hmv3Hb5qCtDwYe780wMy9IOFPacb6twtLyyupacb20sbm1vWPv7tVVnEpCPRLzWDYDrChngnqaaU6biaQ4CjhtBIObid8YUqlYLB71KKF+hHuChYxgbaSObd+hK+Sh9gPrRRjVn046dtmpOFOgReLmpAw5ah37q92NSRpRoQnHSrVcJ9F+hqVmhNNxqZ0qmmAywD3aMlTgiCo/m14+RkdG6aIwlqaERlP190SGI6VGUWA6I6z7at6biP95rVSHl37
• (! diagonal, U und V unitär)
! wird dann gekürzt
• V und U sind die semantische Übersetzer
• mit einem Wort (0…0 1 0...0)
kriegt mann einem semantischen Vektor
wenn es durch V multipliziert ist
• Wörter können dann verglichen werden…:
Abstand zwischen deren semantischen Vektor
Latent Semantic
Analysis: praktisch
• Modell bauen:
•
java -classpath SV.jar org.apache.lucene.demo.IndexFiles \
-docs data -index index
•
java -classpath SV.jar pitt.search.semanticvectors.LSA \
-luceneindexpath index
•
java -classpath SV.jar pitt.search.semanticvectors.CompareTerms \
-luceneindexpath index tim junge
•
cp termvectors.bin termvectors
• Vergleichen:
•
java -classpath SV.jar pitt.search.semanticvectors.CompareTerms \
-luceneindexpath index tim junge
•
tim bahn, tim nutella, junge nutella
Latent Semantic
Analysis: praktisch
• Selber versuchen mit anderen
Datenmengen
• Tweets (lightweight!)
• Sie fragen, ich schicke (email)
• OpenThesaurus (zip link)
• ihre eigene Sammlung
• Sie separieren durch Copy und Paste
• Andere Befehle (siehe home Seite)
Decision Trees
(Entscheidungsbäume)
• Idee: Entscheidung (ja/nein)
• anhand eine Familie von Attribute
• und einfache Wertteste
• ein Entscheidungsbaum kann von allen
gelesen werden
• das Lernen: ein Entscheidungsbaum
von eine Sammlung von Beispiele
Decision Trees
Beispiel
Decision Trees
Beispiel
Id3:
Decision Trees Lernen
• alle Beispiele analysieren, Attribut
finden mit grössten information gain
H(T ) =
X
count(v) · log2 (count(v))
v a value of T
• Entropie:
(Mindestmenge von Bits um die Werte zu kodieren)
<latexit sha1_base64="cdijp+WF97LYkYnK6q4+mwJl6ig=">AAADFXichVHLahRBFL1pH3n4GuMym8JBmFk49IRg3AghPgiIEGHGBNJhqK6p6RRTXdV0VzeOw/yHv+EPuBK3WYqu9D9ceLrsETRIqqm+t84999S9deNMq8KF4deV4MrVa9dX19Y3bty8dftO6+7mm8KWuZBDYbXNj2NeSK2MHDrltDzOcsnTWMujePq0jh9VMi+UNQM3y+RpyhOjJkpwB2jUennQGXTZE/YwKsp0NK9YdBbbt/PIKTOLGGcV16VkdsIWgwUTtjSuU3UjMbaORdomo23WWaLdUasd9kK/2EWn3zhtatahbX2jiMZkSVBJKUky5OBr4lTgO6E+hZQBO6U5sBye8nFJC9pAbgmWBIMDneKf4HTSoAbnWrPw2QK3aOwcmYweYL/wijHY9a0SfgH7E/udx5L/3jD3ynWFM9gYiute8RVwR2dgXJaZNsxlLZdn1l05mtBj341CfZlH6j7FH51niOTApj7C6LlnJtCI/bnCCxjYISqoX3mpwHzHY1jurfQqplHk0Mth69dHPRhz/9+hXnSG271HvfD1Tntvv5n3Gm3RfepgqLu0Rwd0iDIEfaAv9J1+BO+Dj8Gn4PNvarDS5Nyjv1Zw/gsH96sZ</latexit>
• Information gain:
I(T, a) = H(T )
H(T |a)
<latexit sha1_base64="fDxMeasIXQtCSUAWz1gYN0spZ8o=">AAAC3nichVFLS8NAEJ7GV1tf8XHzEixCC1pSEfUiFF/Ug1ChsYVayibd1tC8SNKCVs+exKtHr/qP9Ld48MuaClqku+zO7Dcz385D9ywzCFX1PSFNTE5NzyRT6dm5+YVFeWn5MnB7vsE1w7Vcv6azgFumw7XQDC1e83zObN3iVb17FNmrfe4HputUwhuPN2zWccy2abAQUFNePctWNllOOVBK2UpuC9cdyzXljJpXxVJGlUKsZCheZVf+oCtqkUsG9cgmTg6F0C1iFGDXqUAqecAaNADmQzOFndM9pRHbgxeHBwPaxd3Bqx6jDt4RZyCiDfxi4fiIVGgD51Qw6vCOfuXQA8hPnFuBdf79YSCYowxvIHUwpgTjOfCQruExLtKOPYe5jI+MqgqpTfuiGhP5eQKJ6jR+eI5h8YF1hUWhE+HZAYcu3n10wIHUkEHU5SGDIipuQTIhuWBxYkYGPh8y6j7ywZgLf4c6qmjb+d28erGTKR7G807SGq1TFkPdoyKVqIw0DDT7hV7pTWLSg/QoPX27Sok4ZoV+Len5C4nylCw=</latexit>
• dann splitten, und wieder
ID3: Demonstriert
• Projekt: FundId12-Maschinelles-Lernen
• Klasse DecisionTreeBuilder
• Stufenweise debuggen
• bis drin in learnDecision()
• baut ein Entscheidungsbaum mit ID3
Take-Away
• Mit Datenmodellierung die Welt
wahrnehmen
• Mit Algorithmen, von dieser
Wahrnehmung ein Lernen
• um davon Entscheidungen zu treffen
• um einen Sinn (Semantik) von der Welt zu
fangen
• Maschinelles Lernen in mehr und mehr
Domänen anwendbar
danke schön
https://canvas.instructure.com/courses/851238
Herunterladen