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