[PYTHON] Maschinelles Lernen: Überwacht - Zufälliger Wald

Ziel

Verstehen Sie den Algorithmus für zufällige Gesamtstrukturen und probieren Sie ihn mit scicit-learn aus.

Theorie

Random Forest ist eine Art Ensemble-Lernen, das als Bagging bezeichnet wird und mehrere Entscheidungsbäume kombiniert.

Kein Satz zum freien Mittagessen

Das No-Free-Lunch-Theorem bedeutete ursprünglich, dass bei der Kombinationsoptimierung die durchschnittliche Leistung für alle Algorithmen gleich wäre, wenn der Suchalgorithmus auf alle möglichen Probleme angewendet würde.

Dies liegt daran, dass jeder Algorithmus seine eigenen Voraussetzungen hat, die erfüllt sein müssen, und nicht alle möglichen Probleme diese Voraussetzungen erfüllen, sodass ein Problem möglicherweise gut funktioniert, ein anderes. Es zeigt, dass kein Algorithmus bei allen Problemen besser ist als die anderen, da er schlechter abschneidet als die anderen Algorithmen.

Es wird argumentiert, dass es keinen einheitlichen Lernenden gibt, der sich daraus entwickelt und die besten Ergebnisse für jedes Problem des maschinellen Lernens liefert.

Absacken

Das oben erwähnte No-Free-Lunch-Theorem zeigt, dass kein universeller Lernender für ein Problem ideal ist. Daher ist es eine natürliche Idee, eine Methode zum Kombinieren mehrerer Lerngeräte zu entwickeln.

Die Lernmethode, bei der der Großteil der Ergebnisse von mehreren Lernenden übernommen und zum endgültigen Ergebnis gemacht wird, wird als Ensemble-Lernen bezeichnet. Die einzelnen Klassifikatoren, die für das Lernen von Ensembles verwendet werden, werden als schwache Klassifikatoren bezeichnet, da sie nur eine etwas bessere Leistung als zufällig erbringen müssen.

Das Absacken (Boostrap AGGregatING) ist eine typische Methode des Ensemble-Lernens. Wie in der folgenden Abbildung gezeigt, trainiert das Absacken mehrere Klassifizierer unter Verwendung des Bootstrap-Beispiels der Trainingsdaten und gibt die Kategorie für neue Daten durch Mehrheitsentscheidung in der Klassifizierung und den geschätzten Wert durch den Durchschnitt in der Regression aus.

108_bagging.png

Durch das Absacken können einzelne Klassifizierer unabhängig und parallel trainiert werden. Die Bootstrap-Abtastung ermöglicht jedoch die Duplizierung. Die Verwendung eines Entscheidungsbaums als schwacher Klassifizierer erhöht die Korrelation zwischen den Entscheidungsbäumen und sie sind alle ähnlich. Es besteht die Möglichkeit, dass es zu einem Chaos wird.

Zufällige Gesamtstruktur hat dieses Problem verbessert.

Zufälliger Wald

Beim zufälligen Waldlernen wird beim Lernen eines Entscheidungsbaums mit einem Bootstrap-Beispiel anstelle aller Merkmalsgrößen eine bestimmte Anzahl von Merkmalsgrößen zufällig ausgewählt und der Bestimmungsbaum verwendet. Bauen.

Beim Absacken wurde der Entscheidungsbaum aus dem Bootstrap-Beispiel erstellt. In der zufälligen Gesamtstruktur wird jedoch die im Bootstrap-Beispiel verwendete Merkmalsmenge zufällig ausgewählt und der Entscheidungsbaum wie in der folgenden Abbildung dargestellt erstellt.

108_random_forest.png

Indem die in jedem Bootstrap-Beispiel verwendeten Merkmale auf diese Weise randomisiert werden, wird jeder Entscheidungsbaum unterschiedlich, und es kann erwartet werden, dass die Korrelation zwischen Entscheidungsbäumen verringert wird, was beim Absacken ein Problem war.

In scikit-learn kann das Argument n_estimators die Anzahl der schwachen Klassifizierer und das Argument max_features die Anzahl der zu verwendenden Features angeben. Standardmäßig ist die Anzahl der verwendeten Features die Anzahl der Quadratwurzeln der Features.

Implementierung

Ausführungsumgebung

Hardware-

・ CPU Intel (R) Core (TM) i7-6700K 4,00 GHz

Software

・ Windows 10 Pro 1909 ・ Python 3.6.6 ・ Matplotlib 3.3.1 ・ Numpy 1.19.2 ・ Scikit-Learn 0.23.2

Programm zum Ausführen

Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/MachineLearning/blob/master/Supervised).

random_forest.py


Ergebnis

Klassifizierung nach zufälligen Wäldern

Die Ergebnisse der Anwendung eines zufälligen Waldes auf den bisher verwendeten Brustkrebs-Datensatz sind nachstehend aufgeführt.

Accuracy 92.98%
Precision, Positive predictive value(PPV) 94.03%
Recall, Sensitivity, True positive rate(TPR) 94.03%
Specificity, True negative rate(TNR) 91.49%
Negative predictive value(NPV) 91.49%
F-Score 94.03%

Die folgende Abbildung zeigt die Diskriminanzgrenzen bei der Durchführung einer Mehrfachklassifizierung für einen Iris-Datensatz.

108_random_forest_classification.png

Zufällige Waldregression

Für die Daten des Regressionsproblems wurde der Sinuswelle eine Zufallszahl hinzugefügt. Bei der Regression ist der Durchschnittswert der endgültige Ausgabewert.

108_random_forest_regression.png

Referenz

1.11.2. Forests of randomized trees

  1. Leo Breiman. "Random forests", Machine learning 45.1 (2001): pp. 5-32.
  2. Yuzo Hirai. "Erste Mustererkennung", Morikita Publishing, 2012.

Recommended Posts

Maschinelles Lernen: Überwacht - Zufälliger Wald
[Maschinelles Lernen] Zufällige Gesamtstruktur verstehen
[Maschinelles Lernen] Versuchen Sie, zufällige Wälder zu studieren
Maschinelles Lernen: Betreut --AdaBoost
Maschinelles Lernen: Überwacht - Lineare Regression
Maschinelles Lernen: Überwacht - Support Vector Machine
Überwachtes maschinelles Lernen (Klassifikation / Regression)
Maschinelles Lernen: Überwacht - Entscheidungsbaum
Zufälliger Wald
Maschinelles Lernen
Random Seed Research im maschinellen Lernen
Maschinelles Lernen: Überwacht - Lineare Diskriminanzanalyse
[Maschinelles Lernen] Fassen wir die zufällige Gesamtstruktur auf leicht verständliche Weise zusammen
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung
Betreutes Lernen (Klassifizierung)
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Beispiel für maschinelles Lernen
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 2
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 3
Maschinelles Lernen Über Overlearning
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Logistische Regression beim maschinellen Lernen
Maschinelles Lernen unterstützt Vektormaschine
Maschinelles Lernen studieren ~ matplotlib ~
Lineare Regression des maschinellen Lernens
Bibliothek für maschinelles Lernen dlib
Maschinelles Lernen (TensorFlow) + Lotto 6
Lerne irgendwie maschinelles Lernen
Lernen mit einem Lehrer (Rückkehr) 1 Grundlagen
Python: Überwachtes Lernen (Rückkehr)
Bibliothek für maschinelles Lernen Shogun
Maschinelles Lernen Kaninchen Herausforderung
Einführung in das maschinelle Lernen
Python: Überwachtes Lernen (Klassifizierung)
Maschinelles Lernen: k-Nächste Nachbarn
Was ist maschinelles Lernen?
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
Balanced Random Forest in Python
Maschinelles Lernen in Delemas (Praxis)
Techniken im Zusammenhang mit maschinellem Lernen / Klassifizierung
Grundlagen des maschinellen Lernens (Denkmal)
Python: Überwachtes Lernen: Hyperparameter Teil 1
Anfänger des maschinellen Lernens versuchten RBM
Ich habe versucht, RandomForest zu verwenden
Maschinelles Lernen mit Python! Vorbereitung
Entscheidungsbaum und zufälliger Wald
Lernressourcen-Lernblock für maschinelles Lernen
Maschinelles Lernen ② Naive Bayes Zusammenfassung
Verwenden Sie Random Forest mit Python
Überwachtes Lernen 3 Hyperparameter und Abstimmung (2)
Verstehe maschinelles Lernen ~ Ridge Regression ~.
Zusammenfassung der Artikel zum maschinellen Lernen (selbst verfasst)
Über maschinelles Lernen gemischte Matrix
Lernen mit dem Lehrer 1 Grundlagen des Lernens mit dem Lehrer (Klassifizierung)
Praktisches Memo zum maschinellen Lernsystem
Maschinelles Lernen Minesweeper mit PyTorch