380 likes | 393 Views
Погружение в Machine Learning. Участвуем в Kaggle соревнованиях!. Январь 2019. О спикере. Январь 2019. Алексей Перминов. Р уководитель группы по разработке, MERA.
E N D
Погружение в Machine Learning. Участвуем в Kaggle соревнованиях! Январь 2019
О спикере Январь 2019 Алексей Перминов Руководитель группы по разработке, MERA Инженер-программист, руководитель группы. 9 лет в компании (в сфере телекоммуникаций). Опыт изучения машинного обучения около полугода.
О чём этот доклад • Что такое Kaggle • Что с ним делать и зачем • С чем мы столкнулись • Что делали • Что получили
Что такое Kaggle Kaggle Возможности: • Участвовать в соревнованиях • Находить и публиковать наборы данных • Исследовать и строить разнообразные ML модели – “Kernels” • Обучаться • Общаться с сообществом
Зачем Kaggle соревнования • Для разработчиков: • Опыт • Репутация • Иногда деньги • Иногда предложение работы • Для компаний/организаторов: • Новые решения и подходы для бизнес задачи от огромного числа людей • Помощь в исследованиях • Поиск сотрудников
Процесс соревнования Выбрать соревнование Создать или присоединиться к команде Делать Data Science (Magic) Получить результат (Submission) Завершить участие? Нет Конец соревнования Да Profit
Какие соревнования бывают • Коммерческие: • Featured • Humpback Whale Identification • Home Credit Default Risk • Research • LANL Earthquake Prediction • Freesound General-Purpose Audio Tagging Challenge • Некоммерческие: • Getting started • Digit Recognizer • Titanic: Machine Learning from Disaster • Playground • New York City Taxi Trip Duration • Dogs vs. Cats Redux: Kernels Edition • Рекрутинговые: • Airbnb New User Bookings • Facebook Recruiting IV: Human or Robot?
Какие соревнования мы выбирали и почему • Соревнование укладывается в наш тайм фрейм (примерно 2 месяца) • Соревнование с табличными данными • Размер выгружаемых данных не больше 1 Гб • Как можно шире охватить DS подходы и методы
PUBG Finish Placement Prediction • PlayerUnknown'sBattleGrounds (PUBG): • Релиз в конце 2017 • Battle Royale • До 100 игроков • Миллионы активных игроков • Задача: • Train dataset – 45К матчей • Test dataset – 15K матчей • Статистика завершённых матчей по игрокам • Предсказать распределение мест команд в матче • Особенности: • Места распределяются по командам
Two Sigma: Using News to Predict Stock Movements • TwoSigma: • Хедж-фонд, штаб-квартира в Нью Йорке • Крупный спонсор Kaggle • Управляемые активы: 51 миллиард USD (2017 г.) • Задача: • Стоимость активов с 2007 по 2017 год • Новости про эти активы за то же время • Предсказать, вырастет или упадёт актив в цене через 10 дней • Особенности: • Time-series • Тестовые данные выдаются порционно • Новостные данные уже предобработаны
С чего начать? • Смотрим, что уже сделали другие (открытые ядра) • Читаем обсуждения на форуме • Выбираем интересные идеи • Придумываем свои гипотезы
Анализ данных • Открытые “Exploratory Data Analysis”(EDA) ядра • Смысловой анализ исходных данных • Зависимости • Распределения • Аномалии: • выкинутые данные • странные значения • возможные причиныотклонений
PUBG: Анализ данных – смысловойанализ • Статистика игрока: • kills • heals • damageDealt • vehicleDestoys • Целевая переменная: • winPlacePercϵ[0;1] • walkDistance • rankPoints • weaponsAcquired • etc. n = 5 0.0 0.75 0.25 0.5 1.0 • Статистика матча: • matchDuration • matchType • numGroups
PUBG: Анализ данных – зависимости(2)
PUBG: Анализ данных – зависимости(3) • swimDistance / winPlacePerc • rideDistance / winPlacePerc • walkDistance / winPlacePerc
PUBG: Анализ данных – зависимости(4)
PUBG: Анализ данных – распределения
PUBG: Предобработка данных • Дополнительные фичина основе существующих • Агрегация данных (переходим от игроков к командам) • Новые фичи из агрегированных данных • Уменьшение объёма занимаемой памяти
PUBG: Агрегация данных Игрок 1 Игрок 2 Команда 1 Игрок 3 … … Игрок N Игрок N+1 Команда N Игрок N+2
PUBG: Агрегация данных Игрок 1 Игрок 2 Команда 1 Игрок 3 … … … Игрок N Игрок N+1 Команда N Игрок N+2
PUBG: Агрегация данных Игрок 1 Игрок 2 Команда 1 Игрок 3 … … … Игрок N Игрок N+1 Команда N Игрок N+2 min max mean
PUBG: Агрегация данных Игрок 1 rank Игрок 2 Команда 1 Игрок 3 … … … Игрок N Игрок N+1 Команда N Игрок N+2 min max mean
PUBG: Агрегация данных Игрок 1 rank Игрок 2 Команда 1 Игрок 3 … … … Игрок N Игрок N+1 Команда N Игрок N+2 min Модель max mean
PUBG: Модели • Регрессионная • Ранжирующая • Ансамблинескольких моделей • Библиотеки: • CatBoost • LightGBM • XGBoost Картинка мясо
PUBG: Постобработка и результат • Сортировка и ручное ранжирование на основе выданных моделью предсказаний • Обработка граничных значений • Обратный переход от команд к игрокам • Результат: • Score: MAE ~ 0.0205 • Top Leaderboard score:MAE ~ 0.0139 • Место: 225/1453 (top 20%)
Two Sigma соревнование и его отличия Прогноз: Данные: Курсы активов на рынке выше рынка Новости про эти активы среднее по рынку ниже рынка 10 дней Целевая переменная: yϵ [-1; 1] («уверенность» в возрастании или падении)
Two Sigma соревнование и его отличия (2) Интерфейс 2sigma Получение тренировочных данных вызывается только один раз
Two Sigma соревнование и его отличия (2) Целевая переменная Интерфейс 2sigma news_train market_train Получение тренировочных данных Обучение по данным с 2007 по 2017 года вызывается только один раз
Two Sigma соревнование и его отличия (2) Целевая переменная Интерфейс 2sigma news_train market_train Получение тренировочных данных Обучение по данным с 2007 по 2017 года вызывается только один раз Предобработка данных Тренировка модели (например, LightGBM) Обученная модель
Two Sigma соревнование и его отличия (2) Целевая переменная Интерфейс 2sigma news_train market_train Получение тренировочных данных Обучение по данным с 2007 по 2017 года вызывается только один раз Предобработка данных Тренировка модели (например, LightGBM) Получение данных для проверки модели news_obs market_obs Обученная модель вызывается только поочерёдно Цикл валидации – предсказание следующего значения по данным за 1 день Сохранение результатов предсказания
Two Sigma соревнование и его отличия (2) Целевая переменная Интерфейс 2sigma news_train market_train Получение тренировочных данных Обучение по данным с 2007 по 2017 года вызывается только один раз Предобработка данных Тренировка модели (например, LightGBM) Получение данных для проверки модели news_obs market_obs Обученная модель вызывается только поочерёдно Цикл валидации – предсказание следующего значения по данным за 1 день Сохранение результатов предсказания predictions
Two Sigma: Из чего состояло наше решение • Основные элементы решения: • Учёт разрывов в данных по рынку • Модель с постоянной статистикой • Переход к «скользящей» статистике • Многое другое: • предобработка данных • сгенерированные фичи • независимая схема валидации • настройка гиперпараметровмодели • …
Two Sigma: выводы LightGBM Feature Importance • Место: 1161/2902 (top 40%) • Данные по новостям не дали значительной прибавки к точности предсказания • Учёт статистики активов даёт существенное увеличение точности предсказания Активы Новости
Подведение итогов • Что удалось вынести, что получили: • Понимание общего ML пайплайна • Опыт работы с временными рядами • Опыт работы с Pandas • Опыт визуализации имеющихся данных (matplotlib, seaborn, plotly) • Опыт работы с популярными библиотеками градиентного бустинга (CatBoost, LightGBM, XGBoost) • Что можно сделать лучше: • Работа над ошибками, когда будут опубликованы топ решения • Следует участвовать дальше? • Однозначно да!
Вопросы! Хорошая статья для погружения в тему: Как правильно «фармить» Kagglehttps://habr.com/ru/company/ods/blog/426227/