Przewidywanie rezygnacji za pomocą drzew decyzyjnych

Uczenie maszynowe w marketingu w Pythonie

Karolis Urbonas

Head of Analytics & Science, Amazon

Wprowadzenie do drzew decyzyjnych

Reguły drzewa decyzyjnego na zbiorze danych Titanic

Uczenie maszynowe w marketingu w Pythonie

Etapy modelowania

  1. Podział danych na zbiór treningowy i testowy
  2. Inicjalizacja modelu
  3. Trenowanie modelu na danych treningowych
  4. Przewidywanie wartości na danych testowych
  5. Ocena wydajności modelu na danych testowych
Uczenie maszynowe w marketingu w Pythonie

Trenowanie modelu

Importowanie modułu drzewa decyzyjnego

from sklearn.tree import DecisionTreeClassifier

Inicjalizacja modelu drzewa decyzyjnego

mytree = DecisionTreeClassifier()

Trenowanie modelu na danych treningowych

treemodel = mytree.fit(train_X, train_Y)
Uczenie maszynowe w marketingu w Pythonie

Pomiar dokładności 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
Uczenie maszynowe w marketingu w Pythonie

Pomiar precyzji i czułości

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
Uczenie maszynowe w marketingu w Pythonie

Dostrajanie parametru głębokości drzewa

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))
Uczenie maszynowe w marketingu w Pythonie

Wybór optymalnej głębokości

Dostrajanie maksymalnej głębokości

Uczenie maszynowe w marketingu w Pythonie

Wybór optymalnej głębokości

Dostrajanie maksymalnej głębokości

Uczenie maszynowe w marketingu w Pythonie

Zbudujmy drzewo decyzyjne!

Uczenie maszynowe w marketingu w Pythonie

Preparing Video For Download...