Prédire l'attrition avec des arbres de décision

Machine Learning pour le marketing en Python

Karolis Urbonas

Head of Analytics & Science, Amazon

Introduction aux arbres de décision

Règles d'un arbre de décision sur l'ensemble Titanic Survival

Machine Learning pour le marketing en Python

Étapes de modélisation

  1. Diviser en ensembles d'entraînement et de test
  2. Initialiser le modèle
  3. Ajuster le modèle sur l'entraînement
  4. Prédire sur l'ensemble de test
  5. Évaluer les performances sur le test
Machine Learning pour le marketing en Python

Ajuster le modèle

Importer le module d'arbre de décision

from sklearn.tree import DecisionTreeClassifier

Initialiser le modèle Decision Tree

mytree = DecisionTreeClassifier()

Ajuster le modèle sur les données d'entraînement

treemodel = mytree.fit(train_X, train_Y)
Machine Learning pour le marketing en Python

Mesurer la justesse du modèle

from sklearn.metrics import accuracy_score

pred_train_Y = mytree.predict(train_X) pred_test_Y = mytree.predict(test_X)
train_accuracy = accuracy_score(train_Y, pred_train_Y) test_accuracy = accuracy_score(test_Y, pred_test_Y)
print('Training accuracy:', round(train_accuracy,4)) print('Test accuracy:', round(test_accuracy, 4))
Training accuracy: 0.9973
Test accuracy: 0.7196
Machine Learning pour le marketing en Python

Mesurer la précision et le rappel

from sklearn.metrics import precision_score, recall_score

train_precision = round(precision_score(train_Y, pred_train_Y), 4) test_precision = round(precision_score(test_Y, pred_test_Y), 4)
train_recall = round(recall_score(train_Y, pred_train_Y), 4) test_recall = round(recall_score(test_Y, pred_test_Y), 4)
print('Training precision: {}, Training recall: {}'.format(train_precision, train_recall)) print('Test precision: {}, Test recall: {}'.format(train_recall, test_recall))
Training precision: 0.9993, Training recall: 0.9906
Test precision: 0.9906, Test recall: 0.4878
Machine Learning pour le marketing en Python

Réglage du paramètre de profondeur

depth_list = list(range(2,15))
depth_tuning = np.zeros((len(depth_list), 4))
depth_tuning[:,0] = depth_list

for index in range(len(depth_list)): mytree = DecisionTreeClassifier(max_depth=depth_list[index]) mytree.fit(train_X, train_Y) pred_test_Y = mytree.predict(test_X)
depth_tuning[index,1] = accuracy_score(test_Y, pred_test_Y) depth_tuning[index,2] = precision_score(test_Y, pred_test_Y) depth_tuning[index,3] = recall_score(test_Y, pred_test_Y)
col_names = ['Max_Depth','Accuracy','Precision','Recall'] print(pd.DataFrame(depth_tuning, columns=col_names))
Machine Learning pour le marketing en Python

Choisir la profondeur optimale

Réglage de la profondeur maximale

Machine Learning pour le marketing en Python

Choisir la profondeur optimale

Réglage de la profondeur maximale

Machine Learning pour le marketing en Python

Créons un arbre de décision !

Machine Learning pour le marketing en Python

Preparing Video For Download...