Machine Learning

Basics

 

Random Forest

 

Created by codecentric.AI

codecentric.AI

DEEP LEARNING BOOTCAMP

Supervised

Machine Learning

Klassifikation

Regression

Algorithmus

RF

Random Forest (RF)

Random Forest basiert auf Entscheidungsbäumen

Knoten/Äste

Blätter

wenn ... dann ...

wenn ... dann ...

Feature

Optimale Feature- Aufteilung

Ergebnis / Klasse

Random Forest basiert auf Entscheidungsbäumen

By Stephen Milborrow - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=14143467

Titanic-Beispiel:

  • Männer hatten höhere Wahrscheinlichkeit zu sterben als Frauen
  • v. a. wenn sie älter als 9,5 Jahre waren

Random Forest ist ein Ensemble aus vielen

Entscheidungsbäumen

https://upload.wikimedia.org/wikipedia/commons/7/76/Random_forest_diagram_complete.png

Zufällige Teilmenge von Features

bei jedem Split!

Kombinieren von Entscheidungsbäumen

Bagging /
Bootstrap Aggregierung
Boosting
Training auf zufälligen Stichproben aus der Datenmenge (mit oder ohne Zurücklegen) Training auf zufälligen gewichteten Stichproben aus der Datenmenge mit Zurücklegen (falsche Vorhersagen erhöhen Gewicht um schwierige Fälle besonders zu beachten)
Parallel Sequenziell

Ergebnis = Durchschnitt der Vorhersagen aller Trainingsläufe ODER Mehrheitsvotum

Random Forests

Hyper-Parameter in Random Forests

  • Anzahl zu kombinierender Entscheidungsbäume
  • Maximale Baumtiefe
  • Maximale Feature pro Verästelung
  • Bagging / Bootstrapping mit oder ohne Zurücklegen
  • ...

Random Forest in Python

mit Scikit-Learn

  • Klassifizierung mit Entscheidungsbäumen
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier().fit(X, y)
  • Kombination von Entscheidungsbäumen mit Bagging (Durchschnitt der Ergebnisse aller Bäume)
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifier

tree = DecisionTreeClassifier()
bag = BaggingClassifier(tree, n_estimators = 500, 
                        max_samples = 0.75, random_state = 1)
bag.fit(X, y)

Random Forest in Python

mit Scikit-Learn

  • Klassifizierung mit Random Forest
from sklearn.ensemble import RandomForestClassifier

rf_model = RandomForestClassifier(n_estimators = 500, 
                                  random_state = 0)
  • Regression mit Random Forest
from sklearn.ensemble import RandomForestRegressor

rf_reg_model = RandomForestRegressor(500)
forest.fit(X, y)

Random Forest in Python

mit H2O

  • Initialisieren eines lokalen H2O Clusters
h2o.init()
h2o.remove_all()
  • Random Forest
from h2o.estimators.random_forest import H2ORandomForestEstimator

rf_model = H2ORandomForestEstimator(ntrees = 200,
                                    stopping_rounds = 2,
                                    score_each_iteration = True,
                                    seed = 42)

rf_model.train(X_train, y_train, 
               training_frame = train, 
               validation_frame = valid)

Vor- & Nachteile von Random Forests

Pro Con
schnell & leistungsfähig Blackbox Modelle
parallelisierbar schlechte Performance bei seltenen Klassen
liefert Wahrscheinlichkeiten anfällig für Overfitting
flexibel

Alternative Entscheidungsbaum-basierte Algorithmen:

(Extreme) Gradient Boosting & Kernel Random Forests

Machine Learning Basics - RF

By Shirin Glander

Machine Learning Basics - RF

  • 6,491
Loading comments...

More from Shirin Glander