Ключевые идеи алгоритмов обучения по прецедентам и почему про них следует помнить при выборе алгоритма и его настройке, поиске оптимальных параметров. Какие подходы позволяют повысить качество модели, какие программные средства удобно использовать при проведении экспериментов и где спрятаны любимые “грабли”.
3. 3
Обучение с учителем: типы задач
• Бинарная классификация (письмо/спам)
• Классификация (собака, кошка, мышь)
• Регрессия (курс доллара)
• Ранжирование (поисковая выдача)
4. Задача:
Конкурс ОТП Банка 2011
Предсказание отклика клиентов банка
на маркетинговую кампанию
Главная страница конкурса:
http://bit.ly/1DPWwG2
5. 5
Примеры входных данных (признаков)
• Бинарные
– наличие в собственности квартиры
– адрес регистрации и адрес фактического пребывания совпадают
– наличие в собственности автомобиля российского производства :-)
• Числовые
– возраст клиента
– личный доход (в рублях)
– количество месяцев проживания по месту фактического пребывания
– сумма последнего кредита клиента (в рублях)
• Категориальные
– отрасль работы клиента
– должность
– семейное положение
6. 6
Какую метрику выбрать?
• Чувствительность (sensitivity, recall rate) – доля
найденных классификатором «1» из всех «1».
• Точность (precision) – доля истинных «1» из
всех предсказанных «1».
• Специфичность (specificity, false positive rate) –
доля предсказанных «1» из всех «0».
• F1 = 2 * recall * precision / (precision + recall).
14. 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. 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. 16
Наивный Байес: качество в конкурсе
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB().fit(X_scaled, y)
from sklearn.naive_bayes import BernoulliNB
bnb = BernoulliNB().fit(X_scaled, y)
• GaussianNB
– Train AUC: 0.64978
– Test AUC: 0.64447
• BernoulliNB
– Train AUC: 0.65662
– Test AUC: 0.65017
23. 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 – разбиение на узлы по строкам
27. 27
Категориальные признаки
• Стратегия 1: заменить категории на доли
«1» в ней
• Стратегия 2: заменить категориальные
признак из N возможных значений на N
бинарных