Machine Learning 0. Vorbemerkungen Was ist Lernen? Simon: Jede Veränderung eines Systems, die es ihm erlaubt, eine Aufgabe bei der Wiederholung derselben Aufgabe oder einer Aufgabe derselben Art besser zu lösen. (nicht immer Lernen involviert, wenn Verbesserung erzielt wird: Wechseln der Klingen eines Rasenmähers) Scott: Lernen ist ein Prozeß, bei dem ein System eine abrufbare Repräsentation von vergangenen Interaktionen mit seiner Umwelt aufbaut. Michalski: Lernen ist das Konstruieren oder Verändern von Repräsentationen von Erfahrungen. Typen des Lernens: Lernen empirisches/induktives Lernen: aus vorgegebenen (oder gefundenen) Beispielen/Daten werden allgemeine Regeln oder Prozeduren erzeugt deduktives/speedup Lernen Wissensbsis so umstrukturiert, dass Aufgaben besser erfüllt werden (z.B. Einfügen von Lemmata) supervised: Beispiele der Form (x_i, y_i) gegeben. Zu lernen Funktion f, so dass f(x_i) = y_i für alle i. f soll angewendet werden können, um y-Wert für neue x zu bestimmen. unsupervised: nur x_i gegeben, gesucht Regelmäßigkeiten (z.B. Clustering) Bemerkung: Bildbereich der Funktion f kann numerischer Wert sein, aber auch vorgegebene Menge möglicher Klassen, oder nur Ja/Nein (wenn es um Zugehörigkeit zu vorgegebener Zielklasse/Zielprädikat geht). Hier letzterer (binärer) Fall im Vordergrund Logische Sicht: Beschreibung von Beispielen und Hintergrundwissen durch logische Formeln gesucht Hypothese H (Definition des Zielprädikats) folgende Bedingungen müssen gelten: B Hintergrundwissen D+ positive Beispiele (Sokrates sterblich, Aristoteles sterblich, ...) D- negative Beispiele negierte Formulierung: (Zeus nicht sterblich, Poseidon nicht sterblich,...) nicht-negierte Formulierung: (Zeus sterblich, Poseidon sterblich,...) B ∪ {H} |- D+ B ∪ {H} ∪ D- konsistent (negierte Formulierung), oder B ∪ {H} |- D- (nicht-negierte Formulierung) (es gibt viele Hypothesen, die diese Bedingungen erfüllen, nicht alle sinnvoll (z.B sterblich(Sokrates) & sterblich (Aristoteles) & ... ) Sei g das Zielprädikat. Zusammenhang mit Funktion f: f(c) = Yes falls B ∪ {H} |- g(c) No sonst 1. Decision Tree Learning: Folien Weiteres Beispiel: Nr. Sonne? Film? Freundin-da? Klausur bald? Zielprädikat? 1 2 3 4 5 nein ja nein nein nein nein nein ja nein nein ja nein nein nein nein ja ja ja nein ja nein nein nein nein ja 2. Version Space Learning: Folien 3. Induktive Logikprogrammierung (ICL, de Raedt) gegeben: Menge positiver Beispiele P für g(X1, ..., Xn), Menge negativer Beispiele N für g [jeweils als Prolog-Fakten der Gestalt g(c1, ..., cn)] Hintergrundwissen B (Prolog-Regeln) gesucht: Menge H von Regeln, die Zielprädikat definieren: B ∪ H |- p für alle p aus P; B ∪ H |- n für kein n aus N Algorithmus: find_hypothesis(P,N) ;;liefert Regelmenge H für pos. Beispiele P und negative N H := {}; while P ≠ {} do r := find_a_rule(P,N); H := H ∪{r}; P := {p ∈ P | nicht B ∪ {r} |- p } output H. find_a_rule(P,N) ;;liefert Regel, die einige positive Beispiele abdeckt, kein negatives head := g(X1,...,Xn), wobei g das Prädikatensymbol in P und n seine Stelligkeit ist body := true while B ∪ {head :- body}|- n für ein negatives Beispiel n do l := zulässiges Literal lit mit maximalem heuristischem Wert für head :- body, lit; body := body, l; output(head :- body) Heuristischer Wert einer Regel: z. B. abhängig von Zahl der positiven Beispiele, die erfasst, und negativen Beispiele, die ausgeschlossen werden. Beispiel: Hintergrundwissen B: parent(ann,mary). parent(ann,tom). parent(tom,eve). parent(eve,ian) female(ann). female(mary). female(eve) Beispiele: P: daughter(mary,ann). daughter(eve,tom). N: daughter(tom,ann). daughter(eve,ann). Annahmen: heuristischer Wert = Anzahl positiver abgedeckter – Anzahl negativer zulässige Literale solche, in denen nur Variablen als Argumente vorkommen Aufruf von find_a_rule(P,N) konstruiert folgende bodies: body1: initialisiert mit true beide negativen Beispiele werden aus daughter(X1,X2) :- true abgeleitet body2: Alternativen: female(X1), female(X2), parent(X1,X2), parent(X2,X1) heur. Wert: 2-1 1-2 0-0 2-1 1. und 4. Alternative gleich gut, nehmen wir female(X1) negatives Beispiel daughter(eve,ann) wird aus B und daughter(X1,X2) :- female(X1) abgeleitet body3: Auswertung ergibt max. heuristischen Wert für parent(X2,X1): kein negatives Beispiel mehr abgeleitet aus B und daughter(X1,X2) :- female(X1), parent(X2,X1) diese Regel wird also ausgegeben da diese Regel alle positiven Beispiele abdeckt -> fertig Immenser Suchraum: Einschränkung der Literale, die betrachtet werden, notwendig. 4. Instance Based Learning (Case Based Reasoning) Bisher: Lernen der gesuchten Funktion/Klassifikation durch Erzeugen allgemeiner Regeln: Beispiele: (x1, y1) ... (xn, yn) Í Regeln: y1(x) :- Bedingung ... ym(x) :- Bedingung neues Objekt xi: y-Wert durch Anwendung der erzeugten Regeln ermittelt kann man nicht den Wert gleich aus den Beispielen ablesen? Ja, wenn es geeignetes Ähnlichkeitsmaß zwischen Objekten/Fällen gibt: Idee: f(xi) = yj falls das Paar (xj,yj) in den Beispielen enthalten ist und xj das Objekt in den Beispielen ist, das xi am ähnlichsten ist. Zur Erhöhung der Zuverlässigkeit werden oft die k nächsten Objekte betrachtet: sim(xi,xj) liefert numerisches Maß der Ähnlichkeit zweier Objekte/Fälle gegeben: Menge von Beispielpaaren (xi,yi). Sei x ein neues Objekt, N die Menge der k Paare (xi,yi), für die sim(x,xi) am größten ist. Der für x prognostizierte Wert yi ist der y-Wert, für den der folgende Ausdruck maximal wird: Σ(xi,yi) ∈ N sim(x,xi) Beispiel: k = 4, die x ähnlichsten Beispiele sind (x1,a) (x2,a) (x3,a) (x4,b) es gelte sim(x,x1) = sim(x,x2) = sim(x,x3) = 1 und sim(x,x4) = 2 Damit: Σ(xi,a) ∈ N sim(x,xi) = 3 Σ(xi,b) ∈ N sim(x,xi) = 2 Der für x prognostizierte Wert ist also a (obwohl x4 näher an x liegt). Für k = 1 wäre der Wert also b gewesen. Ähnliche Ideen liegen dem fallbasierten Schließen (case based reasoning) zugrunde: Datenbank mit vorliegenden Fällen (jeweils Problem mit Lösung) neuer Fall F. Suche den F ähnlichsten Fall F’ und verwende die Lösung von F’. gegebenenfalls muss Lösung noch an F angepasst werden. Hauptproblem: was ist das geeignete Ähnlichkeitsmaß? Knowledge Discovery in Databases (KDD) und Data Mining Begriffe teils synonym verwendet, teils Data Mining als ein spezieller Teilaspekt von KDD KDD is the non-trivial process of identifying valid, novel, potentially useful, and ultimately understandable patterns in data (Fayyad et al.) Pattern: statement in a given language that describes (relationships among) the facts in a subset of the given data and is (in some sense) simpler than the enumeration of all facts in the subset. (Gleichungen, Regeln, Cluster, Entscheidungsbäume, ...) Ziel: Entdecken nützlicher Information in großen Datenmengen Prozeß hochgradig interaktiv (Benutzer von KDD-tools muß Domäne gründlich verstehen um richtige Teilmenge der Daten sowie Kriterien für Interessantheit zu wählen) und iterativ, da etwa Resultate des data mining zu neuer Aufbereitung der Daten führen können. Gebiet etabliert seit 1990 Der KDD-Prozeß: Mannila 1. 2. 3. 4. 5. understanding the domain preparing the data set discovering patterns (data mining) postprocessing of patterns putting results to use 1. gewisses Vorverständnis unerläßlich, vielversprechend, wenn es Experten gibt, aber zugrundeliegende Eigenschaften der Domäne sich häufig ändern (Käufergewohnheiten) 2. Auswahl der Datenquellen, Integration heterogener Daten, Fehlerbehandlung, fehlende Werte etc. 3. Techniken aus Statistik und Machine Learning verwendet 4. Auswahl/Ordnen der gefundenen Patterns, Visualisierung, etc. 5. Anwendung Hier Focus auf 3. Zushang KDD – Machine Learning: Methoden des ML (etwa decision tree learning, rule induction) Kern des data mining. Unterschiedliche Focussierung in den communities: große Mengen einfacher Daten, Prozeßcharakter vs. Einzelner Lernschritt, bloße Daten vs. angenommene Regularität, bescheidene vs. große Ziele, Typische Data Mining Aufgaben Gegeben Menge von Datenbankeinträgen : Klassifikation:Vorhersage eines Attributwertes (target attribute) aus den anderen Clustering: Einteilen der Objekte in Klassen ähnlicher Objekte Assoziation: Finden von Zusammenhängen zwischen häufig vorkommenden itemsets (kein target) (Warenkorb: wer Brot kauft, kauft auch häufig Butter, wer Wurst und Senf kauft, kauft auch häufig Bier) Anwendungen: Gesundheitswesen, wissenschaftliche Daten, Finanzdaten ... Bsp.: SKICAT (Sky Image Cataloging and Analysis Tool), 3 terabyte Bilddaten, klassifiziert 2 Milliarden Himmelsobjekte (Sterne/Galaxien), 40 Attribute pro Objekt, basiert auf decision tree learning, statistische Optimierung über mehrere gelernte Bäume, 94% korrekte Klassifizierung Entdecken von Assoziationsregeln in binären Daten R = {A1, ..., Ap} binäre Attribute Eine Relation r = {t1, ..., tn} über Schema R ist eine Matrix mit p Spalten und n Reihen, jede Reihe Vektor aus 0 und 1. Beispiele: Studentendatenbank, R Kurse, n Studenten, 1 in (s,c) bedeutet Student s hat Kurs c belegt. Oder: Kunde n hat Produkt k gekauft; Publikation p zitiert Publikation p‘, ... Assoziationsregel X => B, X ⊆ R, B ∈ R\X Intuitiv: wenn ein Objekt die Eigenschaften in X hat, dann (meist) auch Eigenschaft B Gegeben W ⊆ R, s(W,r) ist die Häufigkeit von W in r: Anteil der Zeilen die für alle Attribute in W Wert 1 haben (nicht Anzahl!). Häufigkeit einer Regel X => B: s (X ∪ {B}, r) Konfidenz einer Regel X => B: s (X ∪ {B}, r) / s(X, r) Aufgabe: finde alle Regeln X => B mit Häufigkeit ≥ σ und Konfidenz ≥ θ. In realistischen Retail Anwendungen ca: 106 Zeilen, 5000 Spalten σ = 10-2 - 10-5 Hunderte oder Tausende von Regeln zu finden Suchraum exponentiell in Anzahl der Attribute (beliebige Teilmengen als body) X frequent set in r falls s(X,r) ≥ σ. Wenn frequent sets bestimmt, Bestimmung Assoziationsregeln einfach: Für jeden frequent set X und B ∈ X, teste ob X \ {B} => B genügend hohe Konfidenz hat. Wie findet man frequent sets? Ausnutzen der Eigenschaft: Teilmengen von frequent sets sind frequent. Starte mit einelementigen Mengen Finde die, die frequent sind, bilde daraus 2 elementige Mengen etc., bis keine neuen mehr gefunden eine n-elementige Menge ist Kandidat nur wenn alle ihre n-1-elementigen Teilmengen (n Stück) frequent sind C := {{A} | A ∈ R}; F := {}; i := 1; While C ≠ {} do F‘ := the sets X ∈ C that are frequent; F := F ∪ F‘; i := i+1; C := the sets of size i such that each subset of size i-1 is in F‘ od output F Beispiel: items A, B ,C, D, E, F. Die Mengen {A,B,C} und {C,D,E} sowie alle ihre Teilmengen seien frequent, sonst keine frequent sets: C1: {A}, {B}, {C}, {D}, {E}, {F} F1: {A}, {B}, {C}, {D}, {E} C2: {A, B}, {A,C}, {A,D}, {A,E}, {B,C}, {B,D}, {B,E}, {C,D}, {C,E}, {D,E} F2: F1 + {A, B}, {A,C}, {B,C}, {C,D}, {C,E}, {D,E} C3: {A, B, C}, {C, D, E} F3: F2 + {A, B, C}, {C, D, E} C4: leer Wieviele mögliche Assoziationsregeln gibt es? aus jedem mindestens 2-elementigen set können alle Elemente als Regelköpfe ausgewählt werden: also 2 * 6 + 3 * 2 = 18 In typischen Fällen hat der größte frequent set bis zu 10 Elemente (damit sind mindestens alle 210 Teilmengen auch frequent sets !!) Funktioniert für bis zu mehreren Dutzend Millionen Beispielen (Zeilen), falls nicht zu viele frequent sets vorkommen. Algorithmen können viel Zeit verbrauchen, da keinerlei Echtzeitverhalten erforderlich.