supervised ml in practice: tips & tricks

31
Денис Пирштук Supervised ML in Practice: Tips & Tricks

Upload: dzianis-pirshtuk

Post on 14-Jul-2015

185 views

Category:

Science


7 download

TRANSCRIPT

Page 1: Supervised ML in Practice:  Tips & Tricks

Денис Пирштук

Supervised MLin Practice: Tips & Tricks

Page 2: Supervised ML in Practice:  Tips & Tricks

2 Что такое машинное обучение и Data Science?

Page 3: Supervised ML in Practice:  Tips & Tricks

3

Обучение с учителем: типы задач

• Бинарная классификация (письмо/спам)

• Классификация (собака, кошка, мышь)

• Регрессия (курс доллара)

• Ранжирование (поисковая выдача)

Page 4: Supervised ML in Practice:  Tips & Tricks

Задача: Конкурс ОТП Банка 2011Предсказание отклика клиентов банкана маркетинговую кампанию

Главная страница конкурса: http://bit.ly/1DPWwG2

Page 5: Supervised ML in Practice:  Tips & Tricks

5

Примеры входных данных (признаков)

• Бинарные– наличие в собственности квартиры

– адрес регистрации и адрес фактического пребывания совпадают

– наличие в собственности автомобиля российского производства :-)

• Числовые– возраст клиента

– личный доход (в рублях)

– количество месяцев проживания по месту фактического пребывания

– сумма последнего кредита клиента (в рублях)

• Категориальные– отрасль работы клиента– должность– семейное положение

Page 6: Supervised ML in Practice:  Tips & Tricks

6

Какую метрику выбрать?

• Чувствительность (sensitivity, recall rate) – доля найденных классификатором «1» из всех «1».

• Точность (precision) – доля истинных «1» из всех предсказанных «1».

• Специфичность (specificity, false positive rate) – доля предсказанных «1» из всех «0».

• F1 = 2 * recall * precision / (precision + recall).

Page 7: Supervised ML in Practice:  Tips & Tricks

7

ROC AUC (площадь под кривой ошибок)

ROC = Receiver operating characteristic

http://en.wikipedia.org/wiki/Receiver_operating_characteristic

Page 8: Supervised ML in Practice:  Tips & Tricks

8

Результаты (2011)

Место AUC

1 0.6935

2 0.6895

3 0.6865

4 0.6835

5 0.6780

6 0.6725

7 0.6706

8 0.6580

9 0.6455

10 0.6380

Page 9: Supervised ML in Practice:  Tips & Tricks

9

Метод опорных векторов (SVM)

Page 10: Supervised ML in Practice:  Tips & Tricks

10

SVM: преобразование пространства

https://www.dtreg.com/solution/view/20

Page 11: Supervised ML in Practice:  Tips & Tricks

11

Переобучение SVM

Page 12: Supervised ML in Practice:  Tips & Tricks

Переобучение: пример

Higgs Boson Machine Learning Challenge

http://www.kaggle.com/c/higgs-boson

Page 13: Supervised ML in Practice:  Tips & Tricks

13 Переобучение в конкурсе Higgs Boson

Page 14: Supervised ML in Practice:  Tips & Tricks

14

SVM: качество в конкурсе ОТП БанкаC Train AUC Test AUC

0.05 0.68866 0.65710

0.5 0.74619 0.66544

1.0 0.77207 0.66102

3.0 0.81860 0.64397

7.0 0.85313 0.63001

Page 15: Supervised ML in Practice:  Tips & Tricks

15

SVM: качество в конкурсе ОТП БанкаC Train AUC Test AUC Количество

опорных вект.

0.05 0.68866 0.65710 13608

0.5 0.74619 0.66544 12262

1.0 0.77207 0.66102 11988

3.0 0.81860 0.64397 11500

7.0 0.85313 0.63001 11013

Page 16: Supervised ML in Practice:  Tips & Tricks

16

Наивный Байес: качество в конкурсе

from sklearn.naive_bayes import GaussianNBgnb = GaussianNB().fit(X_scaled, y)

from sklearn.naive_bayes import BernoulliNBbnb = BernoulliNB().fit(X_scaled, y)

• GaussianNB– Train AUC: 0.64978– Test AUC: 0.64447

• BernoulliNB– Train AUC: 0.65662– Test AUC: 0.65017

Page 17: Supervised ML in Practice:  Tips & Tricks

Решающие деревья и бустинг

Page 18: Supervised ML in Practice:  Tips & Tricks

18

Решающие деревья

from sklearn.tree import DecisionTreeClassifierdtc = DecisionTreeClassifier(max_depth=2)dtc.fit(X, y)print roc_auc_score(y, dtc.predict_proba(X)[:,1])print roc_auc_score(answers, dtc.predict_proba(X_test)[:,1])

–Train AUC: 0.60553–Test AUC: 0.59706

Page 19: Supervised ML in Practice:  Tips & Tricks

19

Bagging (Bootstrap aggregating)

Classification tree + bagging + random subspace method = RandomForestClassifier

• For max_depth=8 – Train AUC: 0.82832– Test AUC: 0.68455

• For max_depth=None (unlimited)– Train AUC: 1.0– Test AUC: 0.66077

from sklearn.ensemble import RandomForestClassifierrfc = RandomForestClassifier(n_estimators=400, max_depth=8, max_features=17, n_jobs=-1, random_state=1).fit(X, y)

Page 20: Supervised ML in Practice:  Tips & Tricks

20

Важность признаковПризнак Важность

PERSONAL_INCOME 0.113595

AGE 0.094166

FST_PAYMENT 0.091336

CREDIT 0.082360

WORK_TIME 0.078107

FACT_LIVING_TERM 0.075747

LOAN_NUM_PAYM 0.053088

TERM 0.047470

LOAN_AVG_DLQ_AMT 0.046917

LOAN_MAX_DLQ_AMT 0.043202

sorted(zip(rfc.feature_importances_, real_features, ), reverse=True)

Page 21: Supervised ML in Practice:  Tips & Tricks

21

AdaBoost

–Train AUC: 0.72852

–Test AUC: 0.68854

from sklearn.ensemble import AdaBoostClassifierada = AdaBoostClassifier(n_estimators=500, learning_rate=0.5).fit(X, y)

Page 22: Supervised ML in Practice:  Tips & Tricks

22

Стохастический градиентный бустинг

Page 23: Supervised ML in Practice:  Tips & Tricks

23

XGBoost (eXtreme Gradient Boosting)

• https://github.com/tqchen/xgboost

• Apache License 2.0

• Generalized linear and regression tree boosters

• «Быстрый старт» для задач классификации, регрессии, ранжирования

• Обертки для Python, R, Julia

• Hadoop & MPI-версии (distributed version)– Column-based data splitter – разбиение на узлы по колонкам

– Row-based data splitter – разбиение на узлы по строкам

Page 24: Supervised ML in Practice:  Tips & Tricks

24

Настройка (eta = 0.02, subsample=1.)

Page 25: Supervised ML in Practice:  Tips & Tricks

25

Настройка (eta = 0.005, subsample=1.0)

Page 26: Supervised ML in Practice:  Tips & Tricks

26

Настройка (eta = 0.005, subsample=0.4)

Page 27: Supervised ML in Practice:  Tips & Tricks

27

Категориальные признаки

• Стратегия 1: заменить категории на доли «1» в ней

• Стратегия 2: заменить категориальные признак из N возможных значений на N бинарных

Page 28: Supervised ML in Practice:  Tips & Tricks

28

Настройка (eta = 0.005, subsample=0.3)

Page 29: Supervised ML in Practice:  Tips & Tricks

29

Результат

–Train AUC: 0.7908–Test AUC: 0.7031

import xgbparams = {'max_depth': 5, 'eta': 0.005, 'subsample': .3, 'silent': 0, 'objective': 'binary:logistic', 'min_child_weight': 1, 'seed': 1234, 'eval_metric': 'auc'}

dtrain = xgb.DMatrix(X, y, missing=-9999.)bst = xgb.train(params, dtrain, num_boost_round=1300)

Page 30: Supervised ML in Practice:  Tips & Tricks

30

Data Science != Аналитика

Традиция:

Human readable output

https://hbr.org/2014/08/the-question-to-ask-before-hiring-a-data-scientist/

Data Science:

Machine readable output

Page 31: Supervised ML in Practice:  Tips & Tricks

Денис Пирштук

[email protected]

Спасибо