Maschinelles Lernen mit baumbasierten Modellen in Python
Elie Kawerk
Data Scientist
Boosting: Ein Ansatz, bei dem mehrere schwache Lernalgorithmen zu einem starken Lernalgorithmus zusammengefasst werden.
Weak learner: Das Modell ist nur etwas besser als zufälliges Raten.
Beispiel für einen weak learner: Decision stump (CART mit einer maximalen Tiefe von 1)
Sequenzielles Training eines Ensembles von Prädiktoren.
Jeder Prädiktor versucht, seinen Vorgänger zu korrigieren.
Die beliebtesten Boosting-Methoden:
AdaBoost
Gradient Boosting.
Steht für Adaptive Boosting.
Jeder Prädiktor achtet mehr auf die Fälle, die von seinem Vorgänger falsch vorhergesagt wurden.
Das wird erreicht, indem man die Gewichtung der Trainingsdatenpunkte ändert.
Jedem Prädiktor wird ein Koeffizient $\alpha$ zugewiesen.
$\alpha$ hängt vom Trainingsfehler des Prädiktors ab.

Lernrate: $0 < \eta \leq 1$

Classification:
AdaBoostClassifierRegression:
AdaBoostRegressor# Import models and utility functions
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import roc_auc_score
from sklearn.model_selection import train_test_split
# Set seed for reproducibility
SEED = 1
# Split data into 70% train and 30% test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,
stratify=y,
random_state=SEED)
# Instantiate a classification-tree 'dt' dt = DecisionTreeClassifier(max_depth=1, random_state=SEED)# Instantiate an AdaBoost classifier 'adab_clf' adb_clf = AdaBoostClassifier(base_estimator=dt, n_estimators=100)# Fit 'adb_clf' to the training set adb_clf.fit(X_train, y_train) # Predict the test set probabilities of positive class y_pred_proba = adb_clf.predict_proba(X_test)[:,1]# Evaluate test-set roc_auc_score adb_clf_roc_auc_score = roc_auc_score(y_test, y_pred_proba)
# Print adb_clf_roc_auc_score
print('ROC AUC score: {:.2f}'.format(adb_clf_roc_auc_score))
ROC AUC score: 0.99
Maschinelles Lernen mit baumbasierten Modellen in Python