Date post: | 16-Apr-2017 |
Category: |
Data & Analytics |
Upload: | anton-smerdov |
View: | 206 times |
Download: | 0 times |
March Machine Learning Mania 2016
Ссылка на Kaggle Смердов АнтонАпрель 2016
Timeline
Специфика• Предсказываем будущее• Соревнование проходит уже три года подряд• Значительное влияние случайности• Можно использовать любые внешние данные• Мало информации о турнирных матчах (~2000 строк)• Преобладание feature enginering’a
Данные• Исторические данные с 1985 года: кто, когда, где и с кем сыграл
• Подробные данные с 2003 года, добавляется статистика матчей: броски, подборы, …
~145K строк для регулярного сезона~2K – для турниров
~71K строк для регулярного сезона~850 – для турниров
Elo rating system• Каждой команде присваивается начальный рейтинг, например, 1500.• Для каждой команды считается матожидание выигранных очков(1 – победа, 0 – поражение):
• Обновляется рейтинг:
K – K-factor, чем меньше K, тем более консервативна система.• Можно ввести поправки на игру дома, на разность в счёте.
Wiki
Другие рейтинговые системы• Glicko – улучшенная версия Elo.• Chessmetrics – попроще, но более чувствительна к «восходящим
звёздам».• TrueSkill – рейтинговая система от Microsoft.
История встреч• Пусть дана история матчей между двумя командами.Введём для каждой из команд «вес», определяемый давностью её побед:
𝑤1=0,5+∑❑
❑
𝑤𝑖𝑛𝑠1𝑛∗ γ 𝑛 𝑤 2=0,5+∑❑
❑
𝑤𝑖𝑛𝑠2𝑛∗ γ𝑛
где – количество побед первой команды над второй n лет назад, – коэффициент затухания.
Тогда можно сделать предсказание:
p1 = p2 =
Например, если команды играли один раз в этом году и больше встреч никогда не было, вероятность повторной победы победителя оценивается в 0.75.
Как формировать датасет• Сырые данные нельзя просто так дать алгоритму
Как формировать датасет
w_team l_team w_team features l_team features target
Train:
Как формировать датасет
w_team l_team w_team features l_team features
l_team w_team l_team features w_team features
1
0
Train:
Как формировать датасет
w_team features l_team features delta features
l_team features w_team features - delta features
1
0
p1+p2 не всегда равно 1. Например, для xgboost’а.Тогда можно пересчитать по формулам:
Train:
team_1 team_2 delta features
team_2 team_1 - delta features
p1
p2
Test:
p1’ =
p2’ =
Идея регрессии• Пусть 1-я команда победила 2-ю с разницей Δ, тогда целевые
переменные будут равны +Δ и -Δ соответственно. Либо можно использовать 1+0,03*Δ и 0-0,03*Δ.• Не теряется информация о том, насколько одна команда
оказалась сильнее другой.
Признаки
History results
Статистика бросков, подборов и т.п. за последний год (скользящее среднее)
Победы, поражения и winrate за последний год
Средняя разность очков после матча за последний год
Сколько дней назад была предыдущая игра
Сколько сезонов команда участвует в турнире, домашний ли матч и т.д.
StatsTeams achievements
Например, просуммируем число игр в турнирах за последние N лет
Дополнительные данные
Massey ordinals
Kenpom data
Teams coaches
Доп. данные для всех команд с 2002 года
Рейтинги команд у разных систем(132 уникальных) с 2003 года
Информация о тренерах для каждой команды
Tourney seeds Данные о посевных номерах команд
Geography data Где проходили матчи
Идея разных датасетов
Massey ordinals
Kenpom data
Teams coaches
Geography data Teams Achievements
Coaches Achievements
Stats 1
Tourney seeds
Elo
Glicko
HistoryStats 2
Dataset 12003+
Dataset 21985+
Tourney Dataset 12003+
Tourney Dataset 21985+
2003+ 1985+
Massey ordinals
Kenpom data
Teams coaches
Tourney seeds
Geography data
Teams Achievements
Coaches Achievements
Stats
Elo
Glicko
Dataset 12003+
Dataset 21985+
Tourney Dataset 12003+
Tourney Dataset 21985+
History
XGB Level 1
XGB Regression
EloGlickoHistory
+
XGB Level 2
Logistic Regression
Level 0 Level 1 Level 2 Level 3 Final
Elo predict
Glicko predict
History predict
+
+?Net Prophet’s Entry
Prediction
x4
blending
Наиболее важные признаки• Географические данные• Elo• Δ(Δscore)• Предсказание по истории игр• Рейтинги некоторых систем
Анализ предсказаний участников
Идеи на будущее1. Добавить новую информацию (данные о ставках, игроках…)2. Использовать алгоритмы: NeuralNets, KNN…3. Можно оптимизировать не logloss, а матожидание выигрыша в
деньгах или место на leaderboard• Проанализировать предсказания других участников
4. Придумать метод симуляции турнира• Поможет получить больше данных• Будет полезен для анализа предсказаний других участников