Привет, народ! Помимо написания шейдеров в свободное время, в реальности я еще немного DS :D И заготовил для вас развлекательный пост
😄 Этот анализ ниже - чисто экспериментальный и не претендует на точность или практическую применимость. Я провел его из личного интереса к символьной регрессии и любви к поиску математических закономерностей в данных. Рассматривайте это как увлекательное исследование, а не как серьезную прогностическую модель.
Решил я тут поэкспериментировать с интересной штукой - символьной регрессией. Вообще существуют такие решения, которые могут аппроксимировать данные и выдать формулу например для будущих предсказаний.
Меня осенило попробовать предсказать продажи игр на основе разных метрик.
Для анализа был сформирован обезличенный датасет из 50 строк, включающий следующие признаки: жанр (кодированный категориальный), бюджет (в млн $), длительность (в часах), оценка критиков (по 100-балльной шкале), наличие мультиплеера (бинарный) и объем продаж (в млн копий). Структура данных выглядела следующим образом:
Жанр,Бюджет,Длительность,Оценка_критиков,Мультиплеер,Продажи
1,50,40,85,0,2.5
2,30,10,75,1,1.8
3,15,100,70,0,0.9
...
Где первый столбец Жанр, там указаны просто коды жанров, например:
1: RPG
2: Шутер
3: Симулятор
Для анализа использовал TuringBot (
https://turingbotsoftware.com/) - крутую, но платную программу (у меня, к счастью, есть лицензия). Загрузил туда свой датасет, указал входные переменные и целевое значение. Данные были разделены на обучающую и тестовую выборки в соотношении 50/50 для проведения кросс-валидации. В качестве целевой метрики оптимизации использовалось среднеквадратичное отклонение (RMSE).
После 5 минут работы программа выдала оптимальную формулу. Она отлично справилась с тренировочными данными и более-менее с тестовыми. Главное - удалось найти зависимости между входными параметрами и продажами. Казалось бы, полученная формула отражает нелинейные зависимости между входными параметрами и объемом продаж, учитывая взаимодействия между признаками и теперь у нас есть "формула мечты" для прогнозирования доходов
😄 (Рисунок 1)
Но не все так круто
🙈 На тестовых данных формула уже не так красиво себя вела Рисунок 2. Тут играет куча причин, например:
- Малый размер выборки (n=50) повышает риск переобучения модели.
- Наблюдается сильная корреляция между бюджетом и оценками критиков
- Категориальный признак "жанр" закодирован числовыми значениями, что может некорректно отражать его влияние. но опять же это решается размером датасета
Но хочу подчеркнуть - даже сейчас "модель" предсказала верную тенденцию на данных, которые не участвовали в обучении. Но и тут мне надо бы осторожным по причинам описанным выше.
В заключение хочу отметить, что символьная регрессия, несмотря на свою "классичность", остается мощным инструментом. Она позволяет получать интерпретируемые модели и выявлять неочевидные закономерности в данных. Хотя современные методы глубокого обучения часто превосходят ее по точности, символьная регрессия сохраняет свою ценность в задачах, требующих прозрачности и объяснимости модели. Например мне будет приятно использовать формулу отлично решающую определенную задачу, чем инференсить pytorch модели. Лично я нахожу работу с этим методом крайне увлекательной, особенно в контексте исследовательского анализа данных и генерации гипотез, как то так
💪Кстати, а вот и формула
😂def solution(Жанр, Бюджет, Длительность, Оценка_критиков, Мультиплеер):
return 0.06699618899317092*(0.686980117635591/(tan(Оценка_критиков)-1.640619407832785*Мультиплеер)+Оценка_критиков-74.61041769134356+Бюджет+(6.434509049049919-atanh(sin(Мультиплеер*(Длительность-Жанр)-0.1417795805275835)))*(Мультиплеер-cos(round((0.9990760411584179+erf(Мультиплеер))*Жанр+Оценка_критиков))))