Der Entscheidungsbaum ist ein Algorithmus, der für ** überwachtes Lernen ** verwendet wird. Indem wir die angegebenen Daten wie einen Baum verzweigen, machen wir Vorhersagen und fassen die Daten zusammen. Ein Lernmodell, das sowohl für die Regression als auch für die Klassifizierung verwendet werden kann.
Die folgende Abbildung zeigt den Entscheidungsbaum für die Klassifizierung der Daten in "Hunde", "Menschen", "Vögel" und "Mücken". In jedem Zweig werden die Daten anhand des Merkmalsbetrags klassifiziert. Der Teil, der zum letzten Blatt wird, bestimmt das Klassifizierungsergebnis.
Hier als ein Punkt zu berücksichtigen, wenn jeder Zweig erweitert wird
Wird wichtig.
Zunächst wird das Kriterium ** Informationsgewinn ** als Kriterium für die Beurteilung von 1 verwendet.
Einfach ausgedrückt ist der Informationsgewinn ein Wert, der angibt, ** wie gut der untergeordnete Knoten die Daten im Vergleich zum übergeordneten Knoten klassifizieren konnte **. Alternativ ist es ein Wert, der angibt, ** um wie viel die Standardabweichung an jedem Knoten reduziert wird **. Ein Wert namens ** unrein ** wird verwendet, um zu berechnen, wie hoch dieser Informationsgewinn ist. Es gibt verschiedene Arten von Unreinheiten, aber dieses Mal werden wir die repräsentativsten ** Gini ** und ** Entropie ** vorstellen. Gini Gini wird durch die folgende Formel ausgedrückt.
G = 1 - \sum_{n = 1}^{classes}P(i|t)^2
Sie können sehen, dass an jedem Knoten Gini näher an 0 liegt, je höher die Wahrscheinlichkeit ist, dass die Daten einer bestimmten Klasse zugeordnet werden. Wenn es nur eine Klasse gibt, ist Gini 0. Umgekehrt nähert sich Gini 1 an, wenn alle Stichproben verschiedenen Klassen angehören. Zusätzlich berechnet jeder Knoten ** Information Gain (IG) ** von Gini.
IG = G(parent) - \sum_{children}\frac{N_j}{N}G(child_j)
Hier wird die Differenz zwischen dem gewichteten Durchschnitt der Gini des übergeordneten Zweigs und des Gini des untergeordneten Zweigs (das Verhältnis der Anzahl der in jeder Klasse enthaltenen Daten) als Informationsgewinn erfasst.
Entropy Die Entropie wird durch die folgende Formel ausgedrückt.
E = - \sum_{i = 1}^{N}P(i|t)*log(P(i|t))
Wo P.(i|t)Ist 0.Je näher es an 5 ist(Ich weiß nicht, ob es 1 oder 0 ist, ich kann nicht klassifizieren)Sie können sehen, dass die Entropie umso höher ist. Im Gegenteil, P.(i|t)Ist 0か1の時、エントロピーは0となります。
IG = E(parent) - \sum_{children}\frac{N_j}{N}E(child_j)
Wie zuvor wird die Differenz zwischen dem gewichteten Durchschnitt der Schnittpunktentropie des übergeordneten Zweigs und der Schnittpunktentropie des untergeordneten Zweigs als Informationsgewinn erfasst.
Für jeden Knoten wird eine Teilungsmethode mit einem großen Informationsgewinn ausgewählt.
Gigi ist gut für Regressionsprobleme und Entropy ist gut für Klassifizierungsprobleme.
Je tiefer der ** Baum des Entscheidungsbaums ist, desto mehr wird das Modell ** ausgewählt, das zu den Trainingsdaten passt. Wenn der letzte untergeordnete Knoten 1 Daten enthält, können alle Daten perfekt klassifiziert werden. Dies würde jedoch die Probendaten ** überanstrengen ** und das Modell bedeutungslos machen. Daher ist es beim Erstellen eines Lernmodells erforderlich, die Tiefe des Baums zu begrenzen. In Skitlearn wird die Tiefe des Baums durch einen Parameter festgelegt.
from sklearn.tree import DecisionTreeRegressor
clf = DecisionTreeRegressor(criterion="entropy", max_depth=3)
clf = clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)
from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier(criterion="entropy", max_depth=3)
clf = clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)
Parameter- | Überblick | Möglichkeit | Standard |
---|---|---|---|
criterion | Kriterien teilen | "gini", "entropy" | "gini" |
splitter | Split-Auswahlstrategie | "best", "random" | "best" |
max_depth | Die tiefste Tiefe des Baumes | int | None |
min_samples_split | Minimale Stichprobengröße des Post-Split-Knotens(Wenn es klein ist, neigt es dazu, überlernt zu werden.) | int(Anzahl von Beispielen)/float(Verhältnis zu allen Proben) | 2 |
min_samples_leaf | Blatt(Letzter Knoten)Mindeststichprobengröße erforderlich für(Wenn es klein ist, neigt es dazu, überlernt zu werden.) | int/float | 2 |
max_features | Anzahl der für die Teilung verwendeten Merkmale(Größere neigen dazu, zu viel zu lernen) | int/float, auto, log2 | None |
class_weight | Klassengewicht | "balanced", none | none |
presort | Vorsortierung von Daten(Die Berechnungsgeschwindigkeit ändert sich je nach Datengröße) | bool | False |
min_impurity_decrease | Begrenzen Sie die Unreinheit und die Dehnung des Kontrollknotens | float | 0. |
Recommended Posts