Comments 13
Выводы интересные, но от количества кода и дупликаций болят глаза, многие функции работают с конкретными переменными (ну это ладно, но вдруг захочется переиспользовать), и не сказано откуда взяты гиперпараметры под каждую модель.
Спасибо за рекомендации! По логистической регрессии возможные варианты гиперпараметров принимались в зависимости от типа solver’а. В моделях случайного леса и бустингов использовались одинаковые гиперпараметры - часть из них находилась в диапазоне дефолтных значений всех рассматриваемых моделей (например, кол-во деревьев в диапазоне 100…1000 – макс. значение не ставил, т.к. и так не малое время обучения увеличилось бы в разы), другие (такие как learning rate и subsample, снижение которых способствует улучшению качества моделей) принимались со значениями меньше дефолтных.
Спасибо, крутая работа. Нужно было ансамбль взять из 5 моделей, было бы ещё точнее
Хорошая статья. Однако, надо понимать, что часть матчей может оказаться "договорными" и не соответствовать общему уровню играющей команды или спортсмена. И как раз ML имеет возможности это определить. Сделать это можно, выделив именно выпадающие результаты из датасетов игр, и проанализировав их отдельно. Высокий процент выпадающих игр можно какими-то признаками разделить на пулы, некоторые можно объяснить естественными ошибками, а какие-то - необъяснимые случаи (вот они-то и являются кандидатами на "договорные игры"). И если процент таких случаев аномально высок по сравнению с другими командами, мы получаем команду, которая с высокой долей вероятности играет "нечисто". Интереснейшая задача, предложил бы ее вам для анализа и еще одной статьи.
Я может чего не понял, но как это позволяет определить победителя?
Наиболее значимыми признаками для лучшей модели оказались разность очков играющих команд и разность времени, проведенного ими в атаке.
Я правильно понимаю что разность очков это положение в чемпионате? Условно говоря у лидера чемпионата больше шансов на победу, чем у аутсайдера?
Очевидно чем больше команда проводит в атаке, тем больше шансов у нее забить, и тем меньше шансов забить у ее соперника.
Разница очков известна заранее, а вот время в атаке известно постфактум. Где тут предсказательная сила?
время в атаке можно по сумме предыдущих матчей
я особо код не всматривался, но надеюсь, что автор для предсказания использует только исторические данные, иначе совсем бессмыслица (и результаты были бы намного лучше). а суммарное или среднее время в атаке для каждой команды известно заранее
автору же могу порекомендовать использовать другой способ подбора гиперпараметров, например optuna, и поперебирать побольше параметров для бустинга. также было бы интересно соорудить попарные датасеты (среднее время в атаке, количество удалений, выиграных вбрасываний и тд команды А против команды Б) и использовать их при обучении. а ещё было бы круто всё это обернуть в GUI, в который пользователь вводит два названия команд получает вероятности победы каждой
с таким можно уже будет идти грабить буков ???
Модель позволяет определять победителя с учетом разных параметров, наиболее часто используемыми из которых оказались разность очков команд и разность времени в атаке. Помимо них есть еще 20+ параметров, которые также учитываются моделью и вносят вклад в её качество.
Да, можно сказать, что разность очков это положение в турнирной таблице. При этом и лидеры проигрывают середнякам и аутсайдерам.
Время в атаке берется по предыдущим матчам. Параметры в работе делятся на 2 типа - те, которые известны до матча (время отдыха, наличие переезда, разность очков и т.д.) и те, которые рассчитываются из предыдущих матчей (время в атаке, кол-во бросков, силовые приемы и т.д.). Игровая статистика после матча не используется.
Как тут правильно возник вопрос, что в качестве фичей используются данные полученные для того же матча для которого и делается предсказание, таким образом имеется заглядывание в будущее.
От себя добавлю, что эксперимент с разными скейлерами подтвердил лишь давно известный математический факт, что деревья инвариантны относительно монотонных преобразований. Скейлеры в основном имеет смысл применять лишь для линейных моделей или иных случаях когда в построениях используется какая-то "пространственная метрика".
Определение победителей матчей регулярного чемпионата КХЛ методами классического ML