Prevedi il churn con gli alberi decisionali

Machine Learning per il marketing con Python

Karolis Urbonas

Head of Analytics & Science, Amazon

Introduzione agli alberi decisionali

Regole di un albero decisionale sul dataset Titanic Survival

Machine Learning per il marketing con Python

Fasi di modellazione

  1. Dividi i dati in train e test
  2. Inizializza il modello
  3. Allena il modello sui dati di train
  4. Predici sui dati di test
  5. Valuta le prestazioni sul test
Machine Learning per il marketing con Python

Addestrare il modello

Importa il modulo per gli alberi decisionali

from sklearn.tree import DecisionTreeClassifier

Inizializza il modello Decision Tree

mytree = DecisionTreeClassifier()

Allena il modello sui dati di train

treemodel = mytree.fit(train_X, train_Y)
Machine Learning per il marketing con Python

Misurare l'accuratezza del modello

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 per il marketing con Python

Misurare precision e recall

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 per il marketing con Python

Tuning della profondità dell'albero

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 per il marketing con Python

Scelta della profondità ottimale

Tuning Max Depth

Machine Learning per il marketing con Python

Scelta della profondità ottimale

Tuning Max Depth

Machine Learning per il marketing con Python

Costruiamo un albero decisionale!

Machine Learning per il marketing con Python

Preparing Video For Download...