Predikce odchodu zákazníků pomocí rozhodovacích stromů

Machine Learning for Marketing in Python

Karolis Urbonas

Head of Analytics & Science, Amazon

Úvod do rozhodovacích stromů

Pravidla rozhodovacího stromu na datasetu přežití z Titaniku

Machine Learning for Marketing in Python

Kroky modelování

  1. Rozdělení dat na trénovací a testovací
  2. Inicializace modelu
  3. Trénování modelu na trénovacích datech
  4. Predikce hodnot na testovacích datech
  5. Měření výkonu modelu na testovacích datech
Machine Learning for Marketing in Python

Trénování modelu

Import modulu rozhodovacího stromu

from sklearn.tree import DecisionTreeClassifier

Inicializace modelu rozhodovacího stromu

mytree = DecisionTreeClassifier()

Trénování modelu na trénovacích datech

treemodel = mytree.fit(train_X, train_Y)
Machine Learning for Marketing in Python

Měření přesnosti modelu

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 for Marketing in Python

Měření přesnosti a úplnosti

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 for Marketing in Python

Ladění parametru hloubky stromu

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 for Marketing in Python

Výběr optimální hloubky

Ladění parametru Max Depth

Machine Learning for Marketing in Python

Výběr optimální hloubky

Ladění parametru Max Depth

Machine Learning for Marketing in Python

Pojďme sestavit rozhodovací strom!

Machine Learning for Marketing in Python

Preparing Video For Download...