Что ж, модельная программа в итоге закончилась. Он работал нормально и предсказывал точные результаты для , но у меня есть несколько выводов, которыми я решил поделиться с теми из вас, кто разрабатывает свои собственные модели. Если у вас есть мысли или вопросы, не стесняйтесь комментировать ниже.
Прогнозы модели показаны ниже и включают сравнение PFinishRank с ActualFinish каждого водителя в последнем столбце. Эти прогнозы верны, и если бы между квалификацией и днем гонки было больше времени, я бы внес некоторые изменения в модель.
Мой процесс
Во-первых, позвольте мне объяснить вам процесс моей программы моделирования. У меня есть база данных результатов гонщиков в каждой гонке в современную эпоху. Моя статистика в настоящее время ограничена гонщиком, названием команды, производителем, стартовой позицией, финишной позицией, пройденными кругами и окончательным статусом. После квалификации я делаю выборку из базы данных, чтобы получить данные для всех подходящих водителей. Для каждого результата водителя в выборке данных я рассчитываю более 200 новых статистических данных, которые затем используются моделью для прогнозирования будущей производительности. Это называется созданием функций.
Как эти новые функции помогают нам? Давайте рассмотрим конкретный пример: как мы узнаем, что у водителя полоса горячих или холодных гонок? Большинство из нас использовали бы свою память. Если в последнее время у гонщика были в основном хорошие выступления, мы бы сказали, что у него полоса везения. Это может быть в основном субъективным/качественным и даже эмоциональным для некоторых из нас. Два человека, вероятно, ответили бы по-разному, если бы им задали этот вопрос обо всех 40 гонщиках в поле. Как мы это моделируем?
Я создаю функцию под названием HotColdStreak, используя среднюю (среднюю) финишную позицию за два разных периода времени. Эта статистика прикрепляется к каждой записи в базе данных, чтобы помочь модели определить важные тенденции.
У Тони Стюарта горячая полоса. Как моя модель узнает об этом? Среднее место на финише в последних 3 гонках (14,0) будет сравниваться со средним положением на финише в последних 6 гонках (20,0). Разница +6,0 говорит мне, что у Тони все хорошо, и дает мне количественную меру, которую можно использовать в модели.
Кайл Буш — отдельная история. Его средняя финишная позиция в последних 3 гонках — 26,0. За последние 6 гонок он составляет 25,2. Его показатель HotColdStreak составляет -0,8.
Мой процесс создания функций сосредоточен в основном на тенденциях производительности отдельных водителей на всех трассах за последние 2 недели, 3 недели, 4 недели и т. д., а также на производительности каждого гонщика на протяжении всей жизни на трассе этой недели.
После создания функции… модель!
После создания функции я запускаю модель, которая выбирает важные функции и предсказывает финишную позицию и количество кругов. Каждый водитель может иметь разные предикторы и разные тенденции производительности в своих данных, поэтому я запускаю отдельную модель для каждого водителя, используя только их исторические данные о производительности.
Модель выводит прогнозируемую финишную позицию, которая затем используется для ранжирования водителей с 1-го по 40-е. Я также получаю минимальную вероятную финишную позицию (PRangeMin на скриншоте выше), максимально вероятную финишную позицию (PRangeMax), а также менее вероятный минимум (PAbsMin) и максимумы (PAbsMax). Программа также выводит отчет с подробным описанием того, какие функции в данных являются самыми сильными предикторами для каждого драйвера. Затем данные результатов применяются к формуле оценки DraftKings для прогнозирования оценок для каждого водителя.
Изменения на будущее
Дорожные курсы бывают разные. Основываясь на исторических данных, я бы никогда не доверился модели, которая, по прогнозам Мэтта Кенсета, финиширует четвертой на шоссейной трассе. Он ужасно бегает на дорожных курсах. Я понимаю, почему модель предсказала это, но это крайне маловероятно, учитывая его историю на трассе такого типа. Мой процесс создания функций создает возможность того, что все сгенерированные функции равны, и пытается найти наиболее важные функции. Использование всех доступных данных могло привести к краху. Другими словами, программа определила особенности, важные для Мэтта на других треках, но не для Сономы. Мэтт был не единственным водителем, затронутым этой проблемой, но он был наиболее очевидным для меня.
Я буду пересматривать создание функций, выбор функций, а также процесс отбора проб, особенно на дорожных курсах. Я также буду искать способы заставить модель работать быстрее. В идеальном мире у меня будет достаточно времени, чтобы дважды запустить модель перед гонкой, чтобы я мог оценить, изменить и повторно запустить модель, прежде чем сделать свой выбор.
Победители и проигравшие
Я думаю, что все еще полезно видеть, кто превзошел и уступил модели. Это может указывать на драйверы, которые работают лучше или хуже, чем ожидалось в модели, исходя из общей производительности. Крупнейшими победителями на этой неделе стали Тони Стюарт и Денни Хэмлин. Каждый из них финишировал на 14 позиций впереди, чем моя модель. Знание того, что они часто превосходят модель, может помочь изменить наши ожидания в отношении вероятных результатов, используя модель в качестве руководства, но также осознавая, что модель не идеальна.
Больше всего на этой неделе проиграли Чейз Эллиот и Клинт Бойер. Причудливый электрический огонь Бойера и плохой результат Чейза Эллиота могут не указывать на какую-либо значительную тенденцию, но нам придется следить за ними, если они продолжат отставать от модели.