Supervised ML in Practice: Tips & Tricks

  • View
    186

  • Download
    7

  • Category

    Science

Preview:

Citation preview

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

Supervised MLin Practice: Tips & Tricks

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

3

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

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

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

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

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

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

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

5

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

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

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

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

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

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

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

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

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

6

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

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

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

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

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

7

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

ROC = Receiver operating characteristic

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

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

9

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

10

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

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

11

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

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

Higgs Boson Machine Learning Challenge

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

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

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

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

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

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

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

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)

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)

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)

22

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

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 – разбиение на узлы по строкам

24

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

25

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

26

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

27

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

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

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

28

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

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)

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

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

dzianis.pirshtuk@yandex.by

Спасибо

Recommended