ID3 und C4.5
Der Entscheidungsbaum-Lernalgorithmus ID3 nutzt den Informationsgehalt für die Entscheidung bei der Attributwahl: Nimm das Attribut, welches einen möglichst hohen Informationsgehalt hat. Oder andersherum: Wähle das Attribut, bei dem die verbleibende mittlere Entropie der Trainingsmenge nach der Wahl des Attributs am kleinsten ist. Oder noch anders formuliert: Nimm das Attribut, bei dem die Differenz zwischen der Entropie der Trainingsmenge (vor der Wahl des Attributs) und der verbleibenden mittleren Entropie (nach der Wahl des Attributs) am größten ist (die Differenz nennt man auch "Information Gain"). Die Trainingsmenge wird entsprechend der Ausprägung in Bezug auf das eben gewählte Merkmal aufgeteilt und an die Kinder des Knotens weiter gereicht; dort wird der Baum rekursiv weiter aufgebaut.
Durch eine Normierung des Information Gain kann eine Verbesserung in Bezug auf mehrwertige Attribute erreicht werden, dies führt zum Algorithmus C4.5.
- (K3) Entscheidungsbaumalgorithmen ID3 und C4.5
Wie Attribute wählen?
Erinnerung: CAL2/CAL3
- Zyklische Iteration durch die Trainingsmenge
- Ausschließlich aktuelles Objekt betrachtet
- Reihenfolge der "richtigen" Attributwahl bei Verzweigung unklar
=> Betrachte stattdessen die komplette Trainingsmenge!
Erinnerung Entropie: Maß für die Unsicherheit
-
Entropie
der Trainingsmenge : relative Häufigkeit der Klassen zählen -
Mittlere Entropie nach Betrachtung von Attribut
-
Informationsgewinn durch Betrachtung von Attribut
=> Je kleiner
Informationsgewinn: Kriterium zur Auswahl von Attributen
- Informationsgewinn für alle Attribute berechnen
- Nehme Attribut mit größtem Informationsgewinn als nächsten Test
Nr. | ||||
---|---|---|---|---|
1 | 0 | 0 | 0 | A |
2 | 1 | 0 | 2 | A |
3 | 0 | 1 | 1 | A |
4 | 1 | 1 | 0 | B |
5 | 0 | 1 | 1 | B |
6 | 0 | 1 | 0 | A |
Informationsgewinn für
Entscheidungsbaumlerner ID3 (Quinlan, 1986)
def ID3(examples, attr, default):
# Abbruchbedingungen
if examples.isEmpty(): return default
if examples.each(class == A): return A # all examples have same class
if attr.isEmpty(): return examples.MajorityValue()
# Baum mit neuem Test erweitern
test = MaxInformationGain(examples, attr)
tree = new DecisionTree(test)
m = examples.MajorityValue()
for v_i in test:
ex_i = examples.select(test == v_i)
st = ID3(ex_i, attr - test, m)
tree.addBranch(label=v_i, subtree=st)
return tree
[Russell2020]: Man erhält aus dem "Learn-Decision-Tree"-Algorithmus [Russell2020, S. 678, Fig. 19.5]
den hier vorgestellten ID3-Algorithmus, wenn man die Funktion
Hinweis: Mit der Zeile if examples.each(class == A): return A
soll ausgedrückt werden, dass alle
ankommenden Trainingsbeispiele die selbe Klasse haben und dass diese dann als Ergebnis zurückgeliefert
wird. Das "A
" steht im obigen Algorithmus nur symbolisch für die selbe Klasse! Es kann also auch ein
anderes Klassensymbol als "A
" sein ...
Beispiel ID3
Nr. | ||||
---|---|---|---|---|
1 | 0 | 0 | 0 | A |
2 | 1 | 0 | 2 | A |
3 | 0 | 1 | 1 | A |
4 | 1 | 1 | 0 | B |
5 | 0 | 1 | 1 | B |
6 | 0 | 1 | 0 | A |
höchsten Information Gain => Beispiele 1,2 => A => Beispiele 3,4,5,6 => Information Gain berechnen, weiter teilen und verzweigen
Beobachtung: ist bei mehrwertigen Attributen höher
-
Faire Münze:
- Entropie =
- Entropie =
-
4-seitiger Würfel:
- Entropie =
- Entropie =
=>
Damit würden Attribute bei der Wahl bevorzugt, nur weil sie mehr Ausprägungen haben als andere.
Anmerkung: Im obigen Beispiel wurde einfach die Entropie für zwei "Attribute" mit unterschiedlich
vielen Ausprägungen betrachtet, das ist natürlich kein
C4.5 als Verbesserung zu ID3
Normierter Informationsgewinn:
C4.5 kann zusätzlich u.a. auch noch mit kontinuierlichen Attributen umgehen, vgl. en.wikipedia.org/wiki/C4.5_algorithm.
In einem Paper (DOI 10.1007/s10115-007-0114-2) wurde der Algorithmus zu den "Top 10 algorithms in data mining" ausgewählt.
Im Wikipedia-Artikel Information Gain finden Sie weitere Informationen zum "Informationsgewinn" (Information Gain).
Ein anderer, relativ ähnlich arbeitender Entscheidungsbaumlerner ist der CART (Classification And Regression Tree)-Algorithmus, wobei der Begriff "CART" allerdings oft auch einfach allgemein für "Entscheidungsbaumlerner" genutzt wird.
Hierzu drei lesenswerte Blog-Einträge:
- Deep dive into the basics of Gini Impurity in Decision Trees with math Intuition
- Decision Trees, Explained
- Decision Tree Algorithm With Hands-On Example
Beispiele zur Normierung bei C4.5
-
Faire Münze:
- Entropie =
- Normierung:
- Normierter Informationsgewinn:
- Entropie =
-
4-seitiger Würfel:
- Entropie =
- Normierung:
- Normierter Informationsgewinn:
- Entropie =
=> Normierung sorgt für fairen Vergleich der Attribute
Anmerkung: Auch hier ist die Entropie natürlich kein
Wrap-Up
- Entscheidungsbaumlerner ID3
- Nutze Information Gain zur Auswahl des nächsten Attributs
- Teile die Trainingsmenge entsprechend auf ("nach unten hin")
- Verbesserung durch Normierung des Information Gain: C4.5
Textklassifikation
Betrachten Sie die folgenden Aussagen:
- Patient A hat weder Husten noch Fieber und ist gesund.
- Patient B hat Husten, aber kein Fieber und ist gesund.
- Patient C hat keinen Husten, aber Fieber. Er ist krank.
- Patient D hat Husten und kein Fieber und ist krank.
- Patient E hat Husten und Fieber. Er ist krank.
Aufgaben:
- Trainieren Sie auf diesem Datensatz einen Klassifikator mit ID3.
- Ist Patient F krank? Er hat Husten, aber kein Fieber.
- [Ertel2017] Introduction to Artificial Intelligence
Ertel, W., Springer, 2017. ISBN 978-3-319-58487-4. DOI 10.1007/978-3-319-58487-4.
Entscheidungsbäume: Abschnitt 8.4 - [Mitchell2010] Machine Learning
Mitchell, T., McGraw-Hill, 2010. ISBN 978-0-0711-5467-3.
ID3: Kapitel 3 - [Russell2020] Artificial Intelligence: A Modern Approach
Russell, S. und Norvig, P., Pearson, 2020. ISBN 978-0134610993.
Entscheidungsbäume: Abschnitt 19.3