Apprentissage par ensembles

Machine Learning avec des modèles à base d'arbres en Python

Elie Kawerk

Data Scientist

Atouts des CART

  • Simple à comprendre.

  • Simple à interpréter.

  • Facile à utiliser.

  • Souplesse : capacité de décrire des dépendances non linéaires.

  • Prétraitement : pas besoin de standardiser ou de normaliser les variables, ...

Machine Learning avec des modèles à base d'arbres en Python

Limites des CART

  • Classification : ne peut produire que des frontières de décision orthogonales.

  • Sensibles aux petites variations de l'ensemble d'entraînement.

  • Forte variance : des CART non contraintes peuvent surajuster l'ensemble d'entraînement.

  • Solution : apprentissage par ensembles.

Machine Learning avec des modèles à base d'arbres en Python

Apprentissage par ensembles

  • Entraîner différents modèles sur le même ensemble de données.

  • Laisser chaque modèle faire ses prédictions.

  • Méta-modèle : agrège les prédictions des modèles individuels.

  • Prédiction finale : plus robuste et moins sujette aux erreurs.

  • Meilleurs résultats : modèles compétents de façons différentes.

Machine Learning avec des modèles à base d'arbres en Python

Apprentissage par ensembles : explication visuelle

explication visuelle d'un ensemble

Machine Learning avec des modèles à base d'arbres en Python

En pratique : classificateur par vote

  • Tâche de classification binaire.

  • $N$ classificateurs font des prédictions : $P_1$, $P_2$, ..., $P_N$ avec $P_i$ = 0 ou 1.

  • Prédiction du méta-modèle : vote majoritaire (hard voting).

Machine Learning avec des modèles à base d'arbres en Python

Vote majoritaire (Hard Voting)

vote majoritaire

Machine Learning avec des modèles à base d'arbres en Python

VotingClassifier dans sklearn (jeu de données Breast-Cancer)

# Import functions to compute accuracy and split data
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split

# Import models, including VotingClassifier meta-model
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier as KNN
from sklearn.ensemble import VotingClassifier

# Set seed for reproducibility
SEED = 1
Machine Learning avec des modèles à base d'arbres en Python

VotingClassifier dans sklearn (jeu de données Breast-Cancer)

# 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,
                                                    random_state= SEED)
# Instantiate individual classifiers
lr = LogisticRegression(random_state=SEED)
knn = KNN()
dt = DecisionTreeClassifier(random_state=SEED)

# Define a list called classifier that contains the tuples (classifier_name, classifier) classifiers = [('Logistic Regression', lr), ('K Nearest Neighbours', knn), ('Classification Tree', dt)]
Machine Learning avec des modèles à base d'arbres en Python
# Iterate over the defined list of tuples containing the classifiers
for clf_name, clf in classifiers:
    #fit clf to the training set
    clf.fit(X_train, y_train)

    # Predict the labels of the test set
    y_pred = clf.predict(X_test)

    # Evaluate the accuracy of clf on the test set
    print('{:s} : {:.3f}'.format(clf_name, accuracy_score(y_test, y_pred)))
Logistic Regression: 0.947
K Nearest Neighbours: 0.930
Classification Tree: 0.930
Machine Learning avec des modèles à base d'arbres en Python

VotingClassifier dans sklearn (jeu de données Breast-Cancer)

# Instantiate a VotingClassifier 'vc'
vc = VotingClassifier(estimators=classifiers) 

# Fit 'vc' to the traing set and predict test set labels
vc.fit(X_train, y_train)   
y_pred = vc.predict(X_test)

# Evaluate the test-set accuracy of 'vc'
print('Voting Classifier: {.3f}'.format(accuracy_score(y_test, y_pred)))
Voting Classifier: 0.953
Machine Learning avec des modèles à base d'arbres en Python

Passons à la pratique !

Machine Learning avec des modèles à base d'arbres en Python

Preparing Video For Download...