НБА

Как я пообещал всех победить с помощью бота и провалился

Некоторое время назад я анонсировал создание бота который бы делал достаточно успешные предсказания по Fantasy NBA и даже сделал достаточно смелые заявления что смогу победить всех (ведь бот предсказывает так хорошо). Прошло 10 недель и пора подвести предварительные итоги, а так же ответить на вопросы которые были заданы в прошлый раз в комментариях

  

Начнем со статистики - на текущий момент мой профиль занимает 1067ое место из 4443ех. Не густо, мягко говоря, и конечно же в начале сезона я очень рассчитывал на место выше. Разочарован ли я? Несомненно, все лето пока считались мои модели я чувствовал уверенность что смогу добиться большего.

 

Почему же все пошло так плохо?

Оказалось, что неспособность предсказывать идеальное расположение команды - оказалось КРИТИЧЕСКИМ для игры в фентези. В виду технических ограничения - на текущий момент я могу только предсказать набор фентези очков в каком то будущем матче и не способность предсказать качественные замены - привела к провалу. Как и ожидалось это оказалось слабым местом в текущей реализации и я планирую этот недостаток в скором времени исправить.

 

Многие заметили, что замены я делаю в начале недели и это не оптимальный вариант - да, конечно же. Но целью этого сезона я (уже) поставил возможность научиться как делать все верно и при этом не прикладывать НИКАКОГО ручного усилия - то есть все эти тетрадки, таблички, планы замены остались в прошлом. Еще раз, я не прикладываю никакого собственного размышления кроме того, что кликаю замены и проверяю что подсказанные мне замены не травмированы. То есть если бот советует на этой неделе взять ДеАндре Джордана - никогда бы его не взял если бы решал сам - то я его и беру.

 

Да, результаты упали, но на текущий момент все что мне нужно это запустить мой обработчик в понедельник рано утром перед работой, вернуться вечером домой и сделать замены которые подходят в мой бюджет. Все, ничего больше. А впереди только более амбициозные планы (надеюсь успею закончить хотя бы в течении пары месяцев)

Из интересного, боту удалось даже находить довольно интересных персонажей для замен - о существования этих игроков я не особо и подозревал, а уж тем более не надеялся что они будут набирать прилично. Так, например, было с Харрисом из Клипперс. Он был куплен 17 октября, при том, что я вообще не ожидал от него ничего такого.

Из обидных багов первые несколько недель я не получал полную статистику по командам, потому что у двух команд сменилась аббревиатура, например PHX сменился на PHO и была еще одна команда, которую не помню. Оказалось что эта часть очень важна в коде. 

 

Технические подробности

Все что я использую написано на языке Python c применением фреймворка Keras и Scikit-learn. Все вычисления я произвожу используя свой домашний компьютер с видеокартой (помогает ускорить машинное обучение) 

В качестве данных я достаю большую часть данных с сайта https://www.basketball-reference.com/ 

Для создания модели я использую разные временные промежутки. Изначально я надеялся что чем больше данных я захвачу - тем точнее будет модель. К сожалению оказалось что данные по NBA из 60х годов практически никак не помогаю предсказывать ФО в 2018ом, поэтому приходится ограничиваться куда более короткими промежутками (начиная с конца 90х)

Данными являются не только числовые показатели, но и данные того за какую команду играет игрок, а так же кто является тренером. Чтобы добавить возможность различать одних и тех же личностей но в разные годы - используется параметр года. Так же всегда оценивается по тем же характеристикам команда соперника.

Сама модель представляет из себя классичекую полносвязную нейронную сеть, состоящую из 7 слоев с количество нейронов от 2500 до 100.

Стандартное напоминание

Следить за неуспехами (успехами) бота можно здесь - https://www.sports.ru/fantasy/basketball/team/447290.html

Писать гневные или радостные комментарии можно мне в личку - https://www.sports.ru/profile/124504888/. Изначально думал создать специальный профиль для бота, но решил что времени заниматься двумя командами у меня нет.

Создавать телеграм канал я поленился - ибо не очень понятно о каких успехах сообщать если их нет.

 

Этот пост опубликован в блоге на Трибуне Sports.ru. Присоединяйтесь к крупнейшему сообществу спортивных болельщиков!
Другие посты блога
Баскетбольный Fantasy-блог
+36
Популярные комментарии
Skaner
+2
Второй год пытаюсь обогнать
fantasmagoria
+1
Ну недостаток времени тоже свел мои ручные усилия на нет.)))
Так 10-15 минут на планирование замен - включая в это время и проверку на травмированных.

Но идея бота конечно очень интересна !
Молодец.
А сам - второй командой играешь?
Опережаешь свое детище?))...
Dynatron
+1
Спасибо, очень дельный комментарий. По поводу слоев - это все было просто в рамках летнего обучения модели на старых данных с проверкой (примерно как Вы и написали, только я варьировался по разным временным периодам + варьировал мета параметры модели (кол-во слоев, например)
Ответ на комментарий Денис Руднев
Ну на самом деле очень даже неплохой результат! Уверен, если продолжите допиливать, то должно получится что-то очень хорошее!! Первые шахматные движки тоже были слабоваты, а теперь где они и где люди? :) Насчёт захвата данных за 60ые годы, то ИМХО это конечно перебор. Меняется баксетбол, меняются правила игры, тренды и т.д. Обычно для бек-теста временных рядов берут окно, а для его проверки 1/5-1/4 длины от этого окна. Учитывайте также, что это сезон с новыми правилами и к нему надо быстрее адаптировать модель. Исходя из этого, преполагаю что есть смысл брать диапазон для теста 2012/13-2016 года не более, а для проверки модели 2017. Это перед стартом сезона, а сейчас постепенно смещать окно, например, после 8-10 туров. Чем больше вы возьмёте истории, тем усреднённее будут результаты и тем больше их дисперсия и в итоге полученные результаты прогноза будут хуже. Дальше надо смотреть - почему именно 7 слоев, какая логика в них заложена?
Денис Руднев
+1
Ну на самом деле очень даже неплохой результат! Уверен, если продолжите допиливать, то должно получится что-то очень хорошее!! Первые шахматные движки тоже были слабоваты, а теперь где они и где люди? :) Насчёт захвата данных за 60ые годы, то ИМХО это конечно перебор. Меняется баксетбол, меняются правила игры, тренды и т.д. Обычно для бек-теста временных рядов берут окно, а для его проверки 1/5-1/4 длины от этого окна. Учитывайте также, что это сезон с новыми правилами и к нему надо быстрее адаптировать модель. Исходя из этого, преполагаю что есть смысл брать диапазон для теста 2012/13-2016 года не более, а для проверки модели 2017. Это перед стартом сезона, а сейчас постепенно смещать окно, например, после 8-10 туров. Чем больше вы возьмёте истории, тем усреднённее будут результаты и тем больше их дисперсия и в итоге полученные результаты прогноза будут хуже. Дальше надо смотреть - почему именно 7 слоев, какая логика в них заложена?
Dwyane Wade 2
+1
Количество ФО в отдельно взятом матче - это очень амбициозная задача.
На мой взгляд она не решается нейронной сетью, как и частотным анализом.
Она решается некоей функцией, в которой должно быть очень много коэффицентов.

"Но целью этого сезона я (уже) поставил возможность научиться как делать все верно и при этом не прикладывать НИКАКОГО ручного усилия - то есть все эти тетрадки, таблички, планы замены остались в прошлом"
В этом вся магия. Я играю как в шахматы + молюсь на рандом. Я смотрю план замен, при этом у меня есть и алгоритмы для расчета, я смотрю матчи и анализирую защиту, нападение, темп. Если этого нет, есть только рутина. Это для тех кто играет во все фэнтези подряд.
Написать комментарий 13 комментариев

Новости

Реклама 18+