[PYTHON] [Maschinelles Lernen] Lassen Sie uns den Entscheidungsbaum studieren

Entscheidungsbaum

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.

Screenshot 2019-11-24 at 21.29.44.png

Hier als ein Punkt zu berücksichtigen, wenn jeder Zweig erweitert wird

  1. ** Welche Funktion soll verwendet werden und wie viel **
  2. ** Wie tief möchten Sie den Baum wachsen lassen **

Wird wichtig.

Zunächst wird das Kriterium ** Informationsgewinn ** als Kriterium für die Beurteilung von 1 verwendet.

Informationsgewinn

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.

Richtige Verwendung von Gini und Entropy

Gigi ist gut für Regressionsprobleme und Entropy ist gut für Klassifizierungsprobleme.

Baumtiefe

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.

Scikit-Lernentscheidungsbaum

Rückkehr

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)

Einstufung

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)

Entscheidungsbaumparameter

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.

Vor- und Nachteile von Entscheidungsbäumen

Vorteile

Nachteile

Recommended Posts

[Maschinelles Lernen] Lassen Sie uns den Entscheidungsbaum studieren
[Maschinelles Lernen] Versuchen Sie, zufällige Wälder zu studieren
[Maschinelles Lernen] FX-Vorhersage unter Verwendung des Entscheidungsbaums
Maschinelles Lernen studieren ~ matplotlib ~
Versuchen Sie es mit Kaggle leicht maschinell
Maschinelles Lernen: Überwacht - Entscheidungsbaum
Anfänger des maschinellen Lernens versuchen, einen Entscheidungsbaum zu erstellen
Anfänger des maschinellen Lernens versuchen eine lineare Regression
[Maschinelles Lernen] Entscheidungsbäume aus Scikit-Lernen und Mathematik verstehen
Maschinelles Lernen ③ Zusammenfassung des Entscheidungsbaums
Maschinelles Lernen
SVM versucht maschinelles Lernen mit Scikit-Learn
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Beispiel für maschinelles Lernen
Versuchen Sie, den Strombedarf durch maschinelles Lernen vorherzusagen
Versuchen Sie es mit dem Jupyter Notebook von Azure Machine Learning
Zusammenfassung des Lernprogramms für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Maschinelles Lernen: Betreut --AdaBoost
Logistische Regression beim maschinellen Lernen
Versuchen Sie, den Wechselkurs (FX) mit nicht tiefem maschinellem Lernen vorherzusagen
Maschinelles Lernen unterstützt Vektormaschine
Maschinelles Lernen studieren-Pandas Edition-
Lineare Regression des maschinellen Lernens
Memo zum Kurs für maschinelles Lernen
Bibliothek für maschinelles Lernen dlib
Maschinelles Lernen (TensorFlow) + Lotto 6
Lerne irgendwie maschinelles Lernen
[Maschinelles Lernen] Versuchen Sie, Objekte mithilfe der selektiven Suche zu erkennen
Bibliothek für maschinelles Lernen Shogun
Maschinelles Lernen Kaninchen Herausforderung
Einführung in das maschinelle Lernen
Maschinelles Lernen: k-Nächste Nachbarn
Was ist maschinelles Lernen?
[Maschinelles Lernen] Starten Sie Spark mit iPython Notebook und probieren Sie MLlib aus
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Regression zu bewerten
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
Anfänger des maschinellen Lernens versuchen, Naive Bayes zu erreichen (2) - Implementierung
Anfänger des maschinellen Lernens versuchen, Naive Bayes (1) - Theorie zu erreichen
Modell des maschinellen Lernens unter Berücksichtigung der Wartbarkeit
Maschinelles Lernen mit Pokemon gelernt
Datensatz für maschinelles Lernen
Japanische Vorverarbeitung für maschinelles Lernen
Versuchen Sie es mit TensorFlow
Eine Einführung in das maschinelle Lernen
Techniken im Zusammenhang mit maschinellem Lernen / Klassifizierung
Maschinelles Lernen: Überwacht - Lineare Regression
Grundlagen des maschinellen Lernens (Denkmal)
Anfänger des maschinellen Lernens versuchten RBM
[Maschinelles Lernen] Zufällige Gesamtstruktur verstehen
Maschinelles Lernen mit Python! Vorbereitung
Versuchen Sie Deep Learning mit FPGA
Verstärkungslernen 5 Versuchen Sie, CartPole zu programmieren?
Lernressourcen-Lernblock für maschinelles Lernen
Maschinelles Lernen ② Naive Bayes Zusammenfassung
Verstehe maschinelles Lernen ~ Ridge Regression ~.
Zusammenfassung der Artikel zum maschinellen Lernen (selbst verfasst)
Über maschinelles Lernen gemischte Matrix