Entropy measures how mixed a set of labels is; information gain measures how much a question un-mixes it. Together they are the ruler a decision tree uses to pick which question to ask first.
Where you meet it
- The Play-Tennis exercise: work out which attribute — Outlook, Temperature, Humidity or Wind — belongs at the root.
- Training a decision tree — scikit-learn's
DecisionTreeClassifier(criterion="entropy"). - Ranking features: "which column tells me the most about the label?"
What it does
It scores every candidate question by how much it tidies a mixed bag of labels. Before the split the Yes/No labels are jumbled; a good question sends mostly-Yes down one branch and mostly-No down another. The gain is how much that jumble shrinks.
Entropy is the mess in a bag of labels; gain is how much of that mess one question clears away.
How it works
Read entropy as the average number of yes/no questions you'd need to guess a label. A pure bag (all Yes) — you already know it — is 0 bits. A fifty-fifty bag is one honest coin-flip, exactly 1 bit. To score an attribute: measure the bag's entropy, split by that attribute, measure each branch's entropy, average those weighted by branch size, and subtract from where you started.
Guess a label with yes/no questions; entropy = how many you need on average
all Yes H = 0 bits (nothing left to ask)
50 / 50 H = 1 bit (one honest coin-flip)
Play Tennis, root — 9 Yes, 5 No H(S) = 0.940 bits
split on Outlook:
Sunny 2 Yes 3 No H = 0.971 weight 5/14
Overcast 4 Yes 0 No H = 0.000 weight 4/14 (already pure)
Rain 3 Yes 2 No H = 0.971 weight 5/14
weighted entropy left ≈ 0.694 bits
information gain ≈ 0.247 bits → largest of the four → Outlook wins
The tree does this for every attribute, greedily keeps the highest gain, and recurses on each branch. That greedy gain rule is the engine inside the Decision Tree lab.
Watch out
- Gain secretly loves many-valued attributes. Add a "Day" or "ID" column with a unique value per row: every branch holds one example, each is perfectly pure, and the gain looks maximal — yet the tree learned nothing and can't generalise. This is why C4.5 switched to gain ratio, dividing the gain by how much the attribute splinters the data.
- It's greedy, not optimal. The tree grabs the best question at each node and never backtracks — it finds a good tree, not provably the smallest or best one.
- 0·log(0) is taken as 0. A pure branch contributes no entropy; the code treats the empty side as zero rather than crashing on log(0).
- The log base is only the unit. Base 2 gives bits, natural log gives "nats" — the attribute that wins is the same either way.
The tree always asks the question that leaves the least mess behind.
Go deeper
Entropie misst, wie gemischt eine Menge von Labels ist; Information Gain misst, wie sehr eine Frage diese Mischung aufräumt. Zusammen sind sie das Lineal, mit dem ein Entscheidungsbaum wählt, welche Frage zuerst kommt.
Wo es vorkommt
- Die Play-Tennis-Übung: herausfinden, welches Merkmal — Outlook, Temperatur, Feuchte oder Wind — an die Wurzel gehört.
- Einen Entscheidungsbaum trainieren — scikit-learns
DecisionTreeClassifier(criterion="entropy"). - Merkmale ranken: „welche Spalte verrät mir am meisten über das Label?"
Was es tut
Es bewertet jede mögliche Frage danach, wie sehr sie einen gemischten Sack von Labels aufräumt. Vor dem Split sind die Ja/Nein-Labels durcheinander; eine gute Frage schickt überwiegend Ja in den einen, überwiegend Nein in den anderen Zweig. Der Gain ist, wie stark dieses Durcheinander schrumpft.
Entropie ist das Durcheinander in einem Sack Labels; Gain ist, wie viel davon eine einzige Frage wegräumt.
Wie es funktioniert
Lies Entropie als die durchschnittliche Zahl von Ja/Nein-Fragen, die du zum Raten eines Labels bräuchtest. Ein reiner Sack (alles Ja) — du weißt es schon — ist 0 bit. Ein Fifty-fifty-Sack ist ein ehrlicher Münzwurf, genau 1 bit. So bewertest du ein Merkmal: miss die Entropie des Sacks, splitte nach dem Merkmal, miss jede Zweig-Entropie, mittle sie gewichtet nach Zweiggröße und zieh sie vom Startwert ab.
Rate ein Label mit Ja/Nein-Fragen; Entropie = wie viele du im Schnitt brauchst
alles Ja H = 0 bit (nichts mehr zu fragen)
50 / 50 H = 1 bit (ein ehrlicher Münzwurf)
Play Tennis, Wurzel — 9 Ja, 5 Nein H(S) = 0.940 bit
splitte auf Outlook:
Sonnig 2 Ja 3 Nein H = 0.971 Gewicht 5/14
Bewölkt 4 Ja 0 Nein H = 0.000 Gewicht 4/14 (schon rein)
Regen 3 Ja 2 Nein H = 0.971 Gewicht 5/14
gewichtete Rest-Entropie ≈ 0.694 bit
Information Gain ≈ 0.247 bit → größter der vier → Outlook gewinnt
Der Baum tut das für jedes Merkmal, behält gierig den höchsten Gain und rekursiert auf jedem Zweig. Diese gierige Gain-Regel ist der Motor im Decision-Tree-Lab.
Worauf achten
- Gain liebt heimlich Merkmale mit vielen Werten. Häng eine „Tag"- oder „ID"-Spalte mit einem eigenen Wert pro Zeile an: jeder Zweig enthält ein Beispiel, jeder ist perfekt rein, der Gain sieht maximal aus — dabei hat der Baum nichts gelernt und generalisiert nicht. Deshalb wechselte C4.5 zum Gain Ratio, das den Gain durch die Zersplitterung des Merkmals teilt.
- Er ist gierig, nicht optimal. Der Baum greift an jedem Knoten die beste Frage und schaut nie zurück — er findet einen guten Baum, nicht beweisbar den kleinsten oder besten.
- 0·log(0) wird als 0 gesetzt. Ein reiner Zweig steuert keine Entropie bei; der Code behandelt die leere Seite als Null, statt an log(0) abzustürzen.
- Die Log-Basis ist nur die Einheit. Basis 2 gibt bit, der natürliche Logarithmus „nat" — welches Merkmal gewinnt, bleibt gleich.
Der Baum stellt immer die Frage, die das geringste Durcheinander hinterlässt.