Работа с моделями Практика 2,
Работа с моделями Практика 2, 26. 10. 2014 Алексей Натёкин
Agenda DM Labs 12: 10 -12: 40 лекция: различные множества данных 12: 40 -13: 00 задачи/команды 13: 00 -13: 15 перерыв 13: 15 -14: 00 командная работа, часть 1 14: 00 -14: 15 перерыв 14: 30 -15: 00 «развязывание рук» (заказ пиццы на это время) 15: 00 -15: 15 перерыв 15: 15 -16: 00 командная работа 16: 00 -16: 15 перерыв 16: 15 -17: 00 командная работа 17: 00 -17: 15 перерыв 17: 15 -18: 00 обсуждение результатов, обсуждение хорошей структуры проектов 18: 00 -19: 00 консультации, . . . рассчет на то, что расписание съедет. . . 2
Схема DM+ML решений DM Labs Гипотезы Обработка Модель Результат (стратегия) (тактика) (замес) Задача на сегодня – начать работать с моделями: Часть 1: линейные и аддитивные модели, формулы Часть 2: (почти) все остальные модели 3
Recap: процесс подготовки данных DM Labs Сбор данных Обработка сырых Анализ, модели, данных . . . Документируются все действия над • Данные просто • Удобные для данными: чистки, уалось считать работы таблицы заполнения, merge, subset, … • Над ними Желательны: ничего ни разу • Адекватные Должна быть не запускали заголовки четкая процедура (Risk_Indicator с 100% вместо RI) reproducibility • Code book (и обоснованием) (описание данных) 4
Recap: лекция про модели DM Labs • Наша задача – подбирать коэффициенты. • Встречаются разные эффекты, которые нам предстоит моделировать. • Есть универсальные аппроксиматоры, которые прожуют любые эффекты. • Классификация (и не только) решается также как и регрессия, с парой оговорок. 5
Recap: оценка качества регрессий DM Labs А что с классификацией? 6
Оценка качества классификации DM Labs • Есть метки: • Мы построили модель, которая отдает нам. . . вероятности-принадлежности расстояния до границы • Нужны ли метки? 7
Оценка качества классификации DM Labs • Есть метки: • Мы построили модель, которая отдает нам. . . вероятности-принадлежности расстояния до границы • Преобразовываем значения: round(), sign() True positive False positive False negative True negative 8
Оценка качества классификации DM Labs True positive False positive (I) False negative (II) True negative Просто запомнить: 9
Оценка качества классификации DM Labs TP FP FN TN • Самые простые меры: • Взвешенное среднее Все величины лежат в [0, 1] 10
Оценка качества классификации DM Labs 11
Оценка качества классификации DM Labs TP FP FN TN • Максимум контроля: ROC кривая Sensitivity vs (1 -Specificity) ~ как сильно мы готовы накосячить ради увеличения чувствительности 12
ROC backup [wiki] DM Labs 13
Оценка качества классификации DM Labs TP FP FN TN • Мы можем выбирать отсечку • AUC = Area Under Curve наиболее релевантная и устойчивая характеристика качества классификации Лежит в [0. 5, 1] !!! 14
Оценки качества в R DM Labs • R 2, RMSE – пишутся в 1 строчку лучше держать формулами • Accuracy, F 1 – аналогично, вручную через table() • ROC, AUC – пакет p. ROC – пакет ROCR 15
О моделях DM Labs Начнем с простого: • Обощенные линейные модели: glm() Обобщенные аддитивные модели: gam() library(mgcv) • Привыкаем к «хорошему» – работать с теми типами целевой переменной, которую нам дадут • Есть специальный параметр “family” – он это задает: – Gaussian: просто вещественная целевая переменная – Gamma: строго положительная ц. п. – Binomial: факторная ц. п. ~ классификация – Poisson: целочисленная ц. п. 16
О моделях DM Labs Как выглядит математика: Моделируем преобразование: Обратное преобразование: 17
О моделях: общий вид формул DM Labs glm(), gam() • Я лукавил. В моделях на все начинается с формулы y~. y~x 1+x 2 ? formula y~. -x 3+0 y~f 1: f 2 y~(f 1+f 2+f 3)^2 =f 1: f 2 + f 2: f 3 + f 1: f 3 y~I(x 1^2) y~I(x 1+x 2)+log(x 3) 18
О моделях: частные формулы DM Labs gam() • Имеет более интересный вид • Формулы можно интереснее задавать gam(y~. ) gam(y ~ s(x)) gam(y ~ s(x) + s(z) + s(v) + w, family=poisson) gam(y ~ s(x, z, by=w) + s(v), family=binomial) • s(x, k=20, id=2, bs="tp") – то, чем мы будем аппркосимировать конкретную координатную функцию http: //www 3. nd. edu/~mclark 19/learn/GAMS. pdf 19
О моделях DM Labs glm(), gam() • Осталось самое интересное – данные, на которых это все нужно запустить Есть еще b 2 <- gam(y~s(x, bs="cr")+z, параметры, но family=poisson, это их можно data=dat) посмотреть в ? gam ? glm • Тут есть потенциал для кулстори. 20
Об обучающих множествах DM Labs Допустим мы запустили модель 1. Построили gam 2. Посмотрели что там в summary() 3. Сделали predict() на каких-то данных 4. Посчитали что-то – R 2, RMSE – Accuracy, F 1 ROC, AUC Значит ли это что мы не сделали фигню? 21
Об обучающих множествах DM Labs Допустим мы запустили модель 1. Построили gam 2. Посмотрели что там в summary() 3. Сделали predict() на каких-то данных 4. Посчитали что-то – R 2, RMSE – Accuracy, F 1 ROC, AUC Как на самом деле оценить, нормально ли мы построили модель? 22
Обучение на 2 множествах DM Labs Вроде все просто: делим данные на 2 части • Тренировочное множество (train set) ~ 50 -80% • Тестовое множество (test set) ~ 20 -50% 1. Строим модель на train set Либо случайным перемешиванием, 2. Считаем R 2 на test set либо по времени ~ … и все? ходу добавления данных 23
Обучение на 2 множествах DM Labs Вроде все просто: делим данные на 2 части • Тренировочное множество (train set) ~ 50 -80% • Тестовое множество (test set) ~ 20 -50% 1. Строим модель на train set Либо случайным перемешиванием, 2. Считаем AUC на test set либо по времени ~ ходу добавления данных 1. Строим новую модель на train. set 2. Считаем ее AUC на test. set 3. Вторая модель лучше – выберу ее Так можно делать? 24
Обучение на 2 множествах DM Labs Пока что все было ОК, но мы ходили по грани: 1. Строим модель на train set 2. Считаем AUC на test set 1. Строим новую модель на train. set 2. Считаем ее AUC на test. set 3. Вторая модель лучше – выберу ее 4. Меняю настройки (гиперпараметры) первой модели 5. Считаю что вышло на test. set 6. Стало лучше – выберу ее А теперь норм? 25
Обучение на 2 множествах DM Labs Пока что все было ОК, но мы ходили по грани: 1. Строим модель на train set 2. Считаем AUC на test set 1. Строим новую модель на train. set 2. Считаем ее AUC на test. set 3. Вторая модель лучше – выберу ее 4. Меняю настройки (гиперпараметры) первой модели 5. Считаю что вышло на test. set 6. Стало лучше – выберу ее Мы превратили test. set в train. set! 26
Обучающие множества DM Labs Но как тогда настраивать модели? Нельзя построить их бексонечно много, иначе выбор будет ангажирован. 27
Обучающие множества DM Labs Есть 3 варианта решить проблему: 1. Жадный, только на train. set: – Bootstrap – K-fold cross validation 2. Обычный: разбить данные – Обучать модели на train. set(60%) – Отбирать модели на validation. set(20%) – Финальное тестирование на test. set(20%) 3. Практичный: – Использовать на train. set bootstrap и CV – Отбирать модели на validation. set 28
Обучающие множества DM Labs Bootstrap 1. Генерируются выборки с повторами исходных данных: in-bag samples 2. На каждой из них учится модель 3. Либо на out-of-bag, либо на validation. set, либо (чревато) на test. set сэмплах смотрим целевую точность: • Среднее/медиана/дисперсия • Гистограмма Хорошая практика: после отбора моделей, рапортовать на test. set распределение точности на основе бутстрапа тренировочных данных с нашими параметрами. 29
Обучающие множества DM Labs Bootstrap 1. Генерируются выборки с повторами исходных данных: in-bag samples 2. На каждой из них учится модель 3. Либо на out-of-bag, либо на validation. set, либо (чревато) на test. set сэмплах смотрим целевую точность: • Среднее/медиана/дисперсия • Гистограмма Хорошая практика: после отбора моделей, рапортовать на test. set распределение точности на основе бутстрапа тренировочных данных с нашими параметрами. 30
Обучающие множества DM Labs K-fold cross-validation 1. Данные делятся на K частей 2. Каждый раз, одна из K частей (fold) используется в качестве временного test. set 3. Агрегируем точность по fold’aм • Среднее/медиана/дисперсия • Обычно их слишком мало для гистограмм Популярные варианты: – Данных много (>10 k). K= 5 – Данных средне(500 -10 k). K = 10 – Данных очень мало(<100). K = N. Leave-one-out 31
Команды DM Labs 1. Те кто хочет только Python – организуйтесь отдельно. – Насколько (не)адекватны там формулы и работа с gam – не проверял. – Насколько неудобно будет визуализаторам с их портом ggplot 2 – надо проверить на добровольцах. (Скорее всего неудобно. ) 2. В командах обязательно должен быть хардкорщик с хорошим знанием R. Не раз видавший формулы 3. Визуализаторы будут вашими глазами. Помогать придумать формулы, увидеть распределения, преобразования, артефакты. 32
Задачи DM Labs Первая часть: 1. Разбираемся с данными: задача, распределения, формулы. Виузализаторы помогут, им в помощь еще plotmatrix (ggplot 2) 2. Строим простые модели (glm, gam) 3. Интепретируем их (summary, plot. gam, http: //stackoverflow. com/questions/19735149/is-it-possible- to-plot-the-smooth-components-of-a-gam-fit-with-ggplot 2 4. Стараемся построить наилучшую формулу • Всем в команде должно быть понятно что происходит. Спрашивайте друга! Уже потом нас, другие команды 33
Задачи DM Labs Kaggle: 1. Разбираемся с данными: задача, распределения, формулы. Виузализаторы помогут, им в помощь еще plotmatrix (ggplot 2) 2. Строим простые модели (glm, gam) 3. Интепретируем их (summary, plot. gam, http: //stackoverflow. com/questions/19735149/is-it-possible- to-plot-the-smooth-components-of-a-gam-fit-with-ggplot 2 4. Стараемся построить наилучшую формулу • Всем в команде должно быть понятно что происходит. Спрашивайте друга! Уже потом нас, другие команды 34
DM Labs Спасибо! Алексей Натёкин +7 960 276 41 33 natekin@dmlabs. org 35

