Predicția abandonului cu arbori de decizie

Machine Learning pentru Marketing în Python

Karolis Urbonas

Head of Analytics & Science, Amazon

Introducere în arborii de decizie

Reguli ale arborelui de decizie pe setul de date Titanic

Machine Learning pentru Marketing în Python

Pașii de modelare

  1. Împărțiți datele în antrenament și testare
  2. Inițializați modelul
  3. Antrenați modelul pe datele de antrenament
  4. Predicționați valorile pe datele de testare
  5. Evaluați performanța modelului pe datele de testare
Machine Learning pentru Marketing în Python

Antrenarea modelului

Importați modulul arborelui de decizie

from sklearn.tree import DecisionTreeClassifier

Inițializați modelul arborelui de decizie

mytree = DecisionTreeClassifier()

Antrenați modelul pe datele de antrenament

treemodel = mytree.fit(train_X, train_Y)
Machine Learning pentru Marketing în Python

Măsurarea acurateței modelului

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 pentru Marketing în Python

Măsurarea preciziei și a revocării

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 pentru Marketing în Python

Ajustarea parametrului de adâncime a arborelui

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 pentru Marketing în Python

Alegerea adâncimii optime

Ajustarea adâncimii maxime

Machine Learning pentru Marketing în Python

Alegerea adâncimii optime

Ajustarea adâncimii maxime

Machine Learning pentru Marketing în Python

Să construim un arbore de decizie!

Machine Learning pentru Marketing în Python

Preparing Video For Download...