Прогнозирование оттока с помощью деревьев решений

Машинное обучение для маркетинга на Python

Karolis Urbonas

Head of Analytics & Science, Amazon

Введение в деревья решений

Правила дерева решений на данных о выживаемости на Титанике

Машинное обучение для маркетинга на Python

Этапы построения модели

  1. Разделите данные на обучающую и тестовую выборки
  2. Инициализируйте модель
  3. Обучите модель на обучающей выборке
  4. Предскажите значения на тестовой выборке
  5. Оцените качество модели на тестовой выборке
Машинное обучение для маркетинга на Python

Обучение модели

Импортируйте модуль дерева решений

from sklearn.tree import DecisionTreeClassifier

Инициализируйте модель дерева решений

mytree = DecisionTreeClassifier()

Обучите модель на обучающей выборке

treemodel = mytree.fit(train_X, train_Y)
Машинное обучение для маркетинга на Python

Оценка точности модели

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
Машинное обучение для маркетинга на Python

Оценка точности и полноты

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
Машинное обучение для маркетинга на Python

Подбор параметра глубины дерева

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))
Машинное обучение для маркетинга на Python

Выбор оптимальной глубины

Подбор максимальной глубины

Машинное обучение для маркетинга на Python

Выбор оптимальной глубины

Подбор максимальной глубины

Машинное обучение для маркетинга на Python

Давайте потренируемся!

Машинное обучение для маркетинга на Python

Preparing Video For Download...