Proseminar Data Mining Entscheidungsbäume von Alexander M. Bielesch [email protected] SS 2000 Universität Ulm 0 Inhaltsübersicht 0 Inhaltsübersicht .................................................................................................................i 1 Entscheidungsbäume........................................................................................................1 1.1 Numerische Attribute:.................................................................................................1 1.2 Fehlende Werte: .........................................................................................................3 1.3 Pruning:......................................................................................................................3 1.4 Erwartete Fehlerrate ..................................................................................................6 1.5 Komplexität.................................................................................................................9 1.6 Vom Baum zur Regel ................................................................................................10 1.7 Literatur....................................................................................................................10 i 1 Entscheidungsbäume Das Prinzip der Erstellung eines Entscheidungsbaumes beruht auf der Methode des Teile und Herrsche-Algorithmus (divide and conquer), welcher bereits in den Grundzügen beschrieben wurde. Doch in dieser beschriebenen Vorgehensweise kann es zu Problemen führen, da die Methode nur auf nominellen Attributen gut funktioniert. Bei numerischen muss noch etwas verfeinert werden, da es nicht möglich ist alle Zahlenwerte abzuarbeiten. 1.1 Numerische Attribute: Für numerische Attribute wird die zu treffende Entscheidung auf einen 2-Wege oder Binären Splitt reduziert. Beispiel: Wetterproblem (Tabelle 1.3) reduziert auf die Zahlenwerte 64 65 68 69 70 71 yes no yes yes yes no 72 no yes 75 yes yes 80 81 83 85 no yes yes No Wo nun ein effektiver Schnitt gesetzt werden soll, hängt von dem zu erwartenden Informationswert ab, der wie schon beschrieben, für jede mögliche Trennung berechnet werden kann. Es ist üblich einen Trennwert zwischen zwei vorhanden Werten zu setzen die das Problem am besten erfassen. Am Beispiel wählen wir z.B. den Wert 71,5 der so ziemlich den Mittelweg darstellt. Der zu erwartende Informationswert ergibt sich aus den Anfragen: Temperature <71,5 → 4 yes, 2 no Temperature >71,5 → 5 yes, 3 no Der Informationsgehalt ist demnach Info ([4,2],[5,3]) = (6/14)×(info[4,2])+(8/14)×info([5,3]) = 0,939 bits Wenn man einen Entscheidungsbaum mittels des Divide-and-conquer Algorithmuses erstellt, wird, nachdem das erste Teilungsattribut festgelegt wurde, ein sogenannter top-leveltree-node (Wurzelknoten) angelegt, welcher das Attribut entsprechend teilt. Der Algorithmus verfährt nun rekursiv in den Kindknoten fort. Für jedes numerische Attribut kann es vorkommen, dass die Teilinstanzen an jedem KindKnoten entsprechend dieses Attributes neu geordnet werden müssen. (Dies ist die übliche Methode). Jedoch ist es hier nicht unbedingt immer notwendig neu zu ordnen, denn die Sortierreihenfolge an einem Elternknoten kann genutzt werden, um die Sortierreihenfolge an den Kindknoten festzulegen. Dadurch kann eine schnellere Implementierung erreicht werden. Betrachtet man die Sortierreihenfolge des Wetterproblems*: 64 65 68 69 70 71 72 72 75 75 80 81 83 85 7 6 5 9 4 14 8 12 10 11 2 13 3 1 * die zweite Zeile gib die entsprechenden Instanzen an Angenommen man teilt zuerst nach dem Attribut „outlook“. Betrachtet man nun den Kindknoten „sunny“ so stellt man fest, dass hierfür die Instanzen 1,2,8,9, 11 zutreffen. Um ein unnötiges mehrfaches Durchscannen (durchlaufen) zu vermeiden, kann man zu jedem Attribut entsprechend die Sortierreihenfolge speichern, danach ist es nicht mehr notwendig irgendwelche Sortierungen vorzunehmen. wage increase first year Numerischer Splitt > 2,5 ≤ 2,5 Working hours per week ≤ 36 > 36 health plan contribution bad none Nomineller Splitt bad half good full bad Zu beachten ist, dass man im Gegensatz zu den nominalen Attributen, die numerischen Attribute auf einen binären Splitt reduziert hat. Daraus ergibt sich ein bedeutender Unterschied. Splittet man nach einem nominellen Attribut, wurden alle Informationen aus diesem Attribut herausgenommen, splittet man nach einem numerischen Attribut kann man noch weitere Teilungen vornehmen und dadurch mehr Informationen gewinnen. Diese mögliche Mehrfachverwendung führt aber zu dem Problem der nahezu unverständlichen und sehr komplexen Bäume. Um dies zu vermeiden ist es möglich an ei- nem einzelnen Knoten nach mehreren Werten gleichzeitig zu filtern. ( einfacherer Baum, jedoch komplizierter zu erstellen). x<?*? x>?? 1.2 Fehlende Werte: Es wurde bereits beschrieben wie fehlende Werte, die oft in realen Datensätzen auftreten können, gehandhabt werden. Man kann die fehlende Attribute mit definierten Werten initialisieren (z.B. –1, ...), oder einfach nicht beachten. Die erst genannte Methode ist für diejenigen Attribute sinnvoll, die essentiell sind. D.h. beim Fehlen dieser Werte nicht weiter verfahren werden soll. Doch meist handelt es sich bei den Fehleinträgen um Attribute die nicht derart essentiell sind, dennoch eine bedeutende Informationsquelle darstellen. D.h. sie müssen beachtet werden. Doch wie soll man nun mit Instanzen umgehen, die fehlende Attribute aufweisen. Wie bereits beschrieben (Kapitel 3.1) kann man die Instanz mittels eines Gewichtungsschemas in Teile aufsplitten, und entsprechend der proportionalen Durchgangsrate absinken lassen. Dadurch kann man mehrere Lösungen erhalten, die ebenfalls nach einem Gewichtungsschema ausgewertet werden können. Eine andere Frage besteht darin, festzulegen, wie der Trainingssatz geteilt werden soll, sobald man einen Splittattribut festgelegt hat. Dies erfolgt ebenfalls durch ein Gewichtungsschema. (Absinken lassen für jede möglichen Attributwert ...) 1.3 Pruning: Eine der bedeutendsten Aufgaben ist es die gefundenen Regeln (den erstellten Baum) möglichst klein und effektiv zu halten. Deswegen ist es unausweichlich den Baum zu generalisieren, d.h. unnötige Teilbereiche zu beschneiden (Pruning) bzw. Umformungen vorzunehmen. Beim Pruning unterscheidet man zwei verschiedene Arten: Das sogenannte postpruning (backward pruning) und das sogenannte prepruning (forward pruning). Beim Postpruning baut man zuerst den gesamten Baum auf, und kürzt unnötige Teile weg, bzw. formt den Baum um. Beim prepruning versucht man beim Erstellung des Baumes alle unnötigen Knoten zu vermeiden, da dieses Verfahren aber sehr komplex, zeitaufwendig und dem ersten Verfahren teils unterlegen ist, spielt es in der nachfolgenden Betrachtung keine Rolle. Das meist umgesetzte Verfahren ist das schon genannte postpruning, das man wiederum in die zwei Teilbereiche dem subtree replacement (Teilbaumersetzung) und dem subtree raising (Teilbaum Erweiterung) aufteilt. Subtree-replacement: Die Idee liegt darin bestimmte „Teilbäume“ auszuwählen und durch einen einzelnen neuen Zweig zu ersetzen. Dieses Verfahren startet in den Blättern und arbeitet sich von unten nach oben (bis zur Wurzel). Betrachten wir wieder das Beispiel: wage increase first year > 2,5 ≤ 2,5 Working hours per week ≤ 36 Statutory holidays > 36 health plan contribution bad none bad half good ≤ 10 >10 good full bad wage increase fist year ≤4 >4 bad good Welches zu wage increase first year ≤ 2,5 > 2,5 Statutory holidays bad ≤ 10 >10 wage increase fist year good ≤4 >4 bad good Evaluiert. Subtree-raising: Das Prinzip besteht hierin mehrere Knoten zusammenzufassen, d.h. zu generalisieren. „Raising“ heißt es deswegen, weil meist ein tieferliegender Knoten mit einem darüber liegenden Knoten zusammenfällt, wobei aber nicht mehr von den ursprünglichen Konten gesprochen werden kann. Am folgenden Beispiel wird dieses Schema verdeutlicht. A A B C 1 2 4 C 5 1’ 2’ 3’ 3 Bei dem Teilästen des Knotens C handelt es sich nicht um die ursprünglichen Töchter 1, 2, 3 sondern, bedingt durch die Umformung, um neue Tochterknoten, die auch die Bedingungen von B (4,5) involvieren. Da dieses Verfahren sehr rechenaufwendig ist, wird es in heutigen Implementierungen (C 4.5 , C5) eigentlich nur für diejenigen Äste verwendet die sehr stark frequentiert sind d.h. von vielen Instanzen erreicht wird. 1.4 Erwartete Fehlerrate Doch wie soll nun entschieden werden, ob ein Knoten durch ein Blatt, einen anderen Knoten oder gar nicht ersetzt werden soll. Um diese Entscheidung rationell zu treffen, wird die Fehlerwahrscheinlichkeit benötigt, die aus dem Entfernen oder Verändern hervorgehen würde. Mittels dieser Maßzahl wird eine eindeutige Entscheidung ermöglicht. Wie berechnet man die Fehlerwahrscheinlichkeit? Es macht keinen Sinn, wenn man von der Fehlerwahrscheinlichkeit der Trainingsdaten ausgeht, da in diesem Fall keinerlei Veränderung ermöglicht würde, da der Baum schließlich aus denselben Daten generiert wurde. Eine Möglichkeit nun an diese Fehlerrate zu kommen ist, aus den ursprünglichen Daten Teilbereiche auszublenden und diese als unabhängige Testdaten anzuwenden, also die sogenannte reduced error pruning Methode. Der Nachteil besteht darin, dass weniger Daten herangezogen werden. Eine Alternative ist es Fehlerabschätzung anhand der Trainingsdaten abzufassen (C4.5). Die dahinterstehende Idee beruht darauf, dass alle Instanzen die einen Knoten erfassen betrachtet werden. Die Mehrheitsklasse wird dazu ausgewählt den Knoten zu repräsentieren, also diejenige, die für einen überwiegenden Teil der Instanzen zutrifft. Dadurch erhält man eine gewisse Fehlerzahl. (E) aus der Gesamtzahl der Instanzen (N). Mittels der bereits beschriebenen Fehlerberechnung („hold out“ Methode Kapitel 5.2) kann man die Fehlerwahrscheinlichkeit herleiten. Doch muss man beachten, dass im Gegensatz zu den beschriebenen Verfahren sich hierbei nicht um unabhängige Testdaten handelt, und dass man nicht die Erfolgsrate betrachtet sondern die Fehlerrate. Aufgrund dieser Abweichungen verwendet man eher die Vertrauensgrenze anstatt eines Vertrauensbereiches. Mittels den bereits betrachteten mathematischen (statistischen) Methoden und der vorgegebenen Vertrauensrate (c) kann man eine Grenzwert z finden so dass gilt: f −q Pr > z = c q (1−q ) N (1) gegebene Vertrauens rate ( > 25%) c f −q = E N überwachte Fehlerrate q richtige Fehlerrate Wie zuvor führt dies zu einer höheren Vertrauensrate für q welche nun als pessimistische Vorhersage an einem Knoten (e) verwendet wird. f + e= f f2 z2 z2 +z − + 2N N N 4N 2 z2 1+ N ( 2) Die Formeln (1) und (2) sind im Kapitel 5.2 hergeleitet Um zu verstehen, wie dies nun funktioniert betrachtet man das Tarifproblem mit folgenden Vorgaben: 25% Vertrauensrate damit ergibt sich für z= 0,69 wage increase first year ≤ 2,5 > 2,5 Working hours per week ≤ 36 > 36 health plan contribution 1 bad 1 good none 4 bad 2 good half 1 bad 1 good full 4 bad 2 good Betrachtet man das linke mittlere Blatt für das gilt E=2 N=6 Und somit ƒ = 0,33 Eingesetzt in die Abschätzungsformel ergibt es ein Wert von e = 0,47 Dies bedeutet, dass man anstatt der Fehlerwahrscheinlichkeit der Testdaten (33%) eine pessimistische Fehlerwahrscheinlichkeit von 47% annimmt. Und in der Tat ist dies eine sehr pessimistische Annahme, da bei einer 2-fach Entscheidung kaum mehr als 50% Fehler angenommen werden. Doch betrachtet man sich den Nachbarblatt stellt man fest, dass dieses noch eine schlechtere Bewertung erfährt (mit E = 1 und N = 2), denn hier beträgt die Fehlerwahrscheinlichkeit, mit e = 72, 72%. Das dritte Blatt erhält wiederum dieselbe Fehlerwahrscheinlichkeit als das erste. Als nächstes müssen nun die einzelnen Fehlerraten mit einem Gewichtungsschema kombiniert werden, welche zu einer agregierten Fehlerwahrscheinlichkeit von 0,51 führt (Schema: 6:2:6). Nun betrachtet man die Fehlerwahrscheinlichkeit für den Elternknoten „Health plan contribution“. Dieser beinhaltet neun schlechte und fünf gute Beispiele, so dass die Trainingsdatenwahrscheinlichkeit für ƒ=5/14 beträgt. Mit diesen Werten ergibt die obige Formel eine pessimistische Fehlerrate von 0,46%. Da dies weniger ist als die Kindknoten (hier Blätter) werden sie einfach weggeschnitten. Als Folgeschritt betrachtet man nun den Knoten „working hours per week“, welcher nun zwei Kinder in Blattform hat. Die Fehlerwahrscheinlichkeit für das erste (mit E =1 und N = 2) ist 0,72, die des zweiten 0,46. Werden diese nach einem Gewichtungsschema von 2:14 gewertet führt es wiederum zu einem Fehlerwert , der höher ist als der zu erwartende Fehler beim Knoten selbst, somit werden die Teilbäume beschnitten. wage increase first year ≤ 2,5 > 2,5 bad Dieses Verfahren schein recht effektiv zu arbeiten, dennoch kann man um einen noch bessere Anpassung zu gewährleisten den Eingangsvertrauenswert verändern. 1.5 Komplexität Wie verhält es sich aber mit der Komplexität des Erstellens von Entscheidungsbäumen. Angenommen es werden n Instanzen mit m Attributen betrachtet so ergibt sich eine Komplexität von O(mn log n): Ein Baum mit n Blättern hat eine Komplexität von O(log n), vorausgesetzt er ist nicht entartet (d.h. gleichmäßiger Verteilt, keine „lineare Liste“). Unter der Tatsache dass jedes einzelne Attribut in jeder Tiefe betrachtet werden muss (nicht zwingend an jedem Knoten), ergibt sich eine Komplexität von O(n log n) für jedes Attribut und somit für alle Attribute zusammen O(mn log n) Betrachtet man die numerischen Attribute so kommt die Tatsache hinzu, dass diese sortiert werden müssen, dies bedeutet bei einer normalen Komplexität eines Sortieralgorithmuses von (n log n) Operationen für jedes der numerischen Attribute. Als Weiteres schließt sich noch der Arbeitsaufwand für das Pruning des Baumes an. Hierunter fallen die beiden Methoden der Teilbaum-Ersetzung mit einer Komplexität von O(n) und der Teilbaum-Erweiterung mit O(n(log n)²). Wie setzt sich diese Komplexitäten zusammen? Bei der Teilbaum-Ersetzung folgt sie aus der Tatsache, dass die Komplexität von der Anzahl der Knoten abhängt (eines für jedes Attribut), also eine fixe Größe (da jeder Knoten betrachtet wird). Die Teilbaum Erweiterung hat dieselbe Grundkomplexität, hierbei kommt aber noch hinzu, dass während des gesamten Prozesses an jeder Instanz eine Klassifizierung notwendig werden kann (also O(n log n)). Da aber die Klassifikation nicht eine Einzeloperation ist ergibt sich die genannte Komplexität ( Eine Teil- baumerweiterung an der Wurzel ist komplexer als eine tief im Baum) Somit ergibt sich eine totale Komplexität von ( O(mn log n ) + O n(log n ) 1.6 2 ) Vom Baum zur Regel Es ist möglich die Regeln (wie bereits erklärt) direkt aus dem Baum auszulesen, indem man für alle Blätter Regeln generiert und den Querschnitt daraus nimmt. Die erhaltenden Regeln sind wie schon beschrieben komplexer als notwendig. Doch es gibt einige Vorgehensweise dies zu minimieren: Man nimmt die Regeln wie bei dem ursprünglichen Verfahren und wendet die o.g. Fehlererwartung auf den Regelsatz an: Man betrachtet die Fehlerwahrscheinlichkeit mit der Regel und ohne die gefundene Regel. Ist diese ohne die Regel kleiner, so lässt man die Vorschrift wegfallen. Auf diese Weise verfährt man mit allen Vorschriften und am Schluss muss nur noch nach Duplikaten durchforstet werden. Doch Vorsicht: Diese Methode garantiert keine Redundanzfreiheit, genauso wenig wie die optimale Lösung. Deswegen Grund gibt es bessere Vorgehensweisen, die ohne einen Entscheidungsbaum auskommen. 1.7 Literatur Quelle und Arbeitsgrundlage: [1] Witten, Frank: Data Mining