의사결트리로 이탈 예측

Python으로 배우는 마케팅용 Machine Learning

Karolis Urbonas

Head of Analytics & Science, Amazon

의사결정나무 소개

타이타닉 생존 데이터셋의 의사결정규칙

Python으로 배우는 마케팅용 Machine Learning

모델링 단계

  1. 데이터를 학습/테스트로 분할
  2. 모델 초기화
  3. 학습 데이터로 모델 학습
  4. 테스트 데이터로 예측
  5. 테스트 데이터로 성능 측정
Python으로 배우는 마케팅용 Machine Learning

모델 학습시키기

의사결정나무 모듈 임포트

from sklearn.tree import DecisionTreeClassifier

의사결정나무 모델 초기화

mytree = DecisionTreeClassifier()

학습 데이터로 모델 학습

treemodel = mytree.fit(train_X, train_Y)
Python으로 배우는 마케팅용 Machine Learning

정확도 측정

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으로 배우는 마케팅용 Machine Learning

정밀도와 재현율 측정

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으로 배우는 마케팅용 Machine Learning

트리 깊이 하이퍼파라미터 튜닝

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으로 배우는 마케팅용 Machine Learning

최적 깊이 선택

최대 깊이 튜닝

Python으로 배우는 마케팅용 Machine Learning

최적 깊이 선택

최대 깊이 튜닝

Python으로 배우는 마케팅용 Machine Learning

의사결정나무를 만들어 봅시다!

Python으로 배우는 마케팅용 Machine Learning

Preparing Video For Download...