Как машинное обучение может помочь при анализе поведения игроков
Практический пример на основе матчей NHL.
Data scientist из Zynga Бен Вебер на сайте Gamasutra опубликовал текст о попытке создать метод анализа на основе машинного обучения, который позволит собирать информацию о результатах игровых сессий и соединять их в понятную структуру. Бен показал результаты своей работы на примере датасета о ключевых моментах из матчей NHL. По словам исследователя, этот подход можно применять для анализа поведения в мобильных играх.
Одна из главных проблем в работе машинного обучения — определение того, какие входные данные обеспечивают наилучшие сигналы для обучения прогнозных моделей. Для графических данных и других неструктурированных форматов модели глубокого обучения демонстрируют значительные улучшения по сравнению с предыдущими подходами. Но для данных, уже представленных в структурированных форматах, преимущества менее очевидны.
По словам разработчика, он использует библиотеку Featuretools, чтобы значительно сократить время на построение прогностических моделей, и это открывает новый класс проблем для специалистов по data science. Вместо построения прогнозных моделей для отдельных игр и конкретных ответов, сейчас создаются пайплайны машинного обучения, которые могут быть применены к широкому набору проблем.
Автоматизированное конструирование признаков — это процесс создания векторов из тысяч или даже миллионов точек данных для каждого пользователя. Такой подход вдохновлён методами синтеза признаков из глубокого обучения, но фокусируется только на этапе генерации признаков, а не на подгонке модели.
В результате глубокого синтеза признаков можно перевести тысячи записей, описывающих действия пользователя, в одну, которую можно использовать для обучения моделей. Есть множество примеров использования машинного обучения, и Бен описал несколько из них.
Модели склонностей (Propensity Models): какие действия выполняют пользователи? Прогнозирование вероятных действий пользователей полезно для персонализации игрового процесса. Бен использовал библиотеку Featuretools, чтобы автоматизировать разработку признаков для построения моделей склонностей во всех играх Zynga.
Рекомендации: какие действия должны быть предписаны? Коллаборативная фильтрация — это ценный инструмент, чтобы предложить игрокам персонализированный контент. Вместо использования перечня прошлых покупок в качестве вектора функций для коллаборативной фильтрации, Бен изучил некоторые прокси-переменные.
Сегментация: как нужно персонализировать пользовательский опыт? Сегментация — один из ключевых результатов, который может предложить аналитическая группа. Если вы можете понять поведение различных групп пользователей в продукте, то вы можете предложить персонализированный подход для улучшения взаимодействия с вашей базой пользователей.
Обнаружение аномалий: какие пользователи дают плохой результат? В любой онлайн-среде есть плохие акторы. Бен вместе с командой пробовал применить глубокое обучение для решения этой проблемы. С помощью автокодирования на сгенерированных наборах признаков им удалось создать инструмент для маркировки проблемных пользователей.
Разработка признаков — один из основных этапов в рабочем процессе машинного обучения, где необработанные данные преобразуются в «резюме» по игроку. Такие сводки могут использоваться в качестве входных данных для контролируемых и неконтролируемых алгоритмов обучения.
Бен привёл пример того, как его команда выполняет этот шаг, используя примеры данных из датасета NHL Kaggle, в котором собраны детализированные игровые события за последние двадцать лет профессиональных хоккейных матчей.
Бен использует Python для большинства анализов и PySpark для масштабирования пайплайнов машинного обучения. Главная задача в таких пайплайнах — это извлечение данных из хранилища. Обычно разработчики получают данные из «озера данных» на S3, но в этом примере будут использоваться локальные файлы, загруженные из датасета Kaggle. В приведённом ниже фрагменте кода Python показано, как загрузить эти файлы в виде датафреймов Pandas и удалить посторонние столбцы.
Датафрейм game_df предоставляет сводки хоккейных матчей, в то время как датафрейм plays_df содержит подробные игровые события, такие как вбрасывания и броски. Последняя команда в приведённом выше фрагменте отображает первые пять игровых записей.
Цель Бена и его команды состоит в том, чтобы перевести детализированные события из узкого и глубокого формата в мелкий и широкий, где одна строка содержит сотни столбцов и результатов одной игры. Чтобы выполнить этот процесс, они используют двухэтапное преобразование, в котором сначала кодируют набор столбцов, а затем выполняют глубокий синтез функций на датафреймах с результатами.
Например, для датасета NHL нужно закодировать столбцы «events» и «description». Featuretools предоставляет функцию encode_features для преобразования столбцов со многими возможными значениями в фиктивные столбцы с двоичными значениями. Прежде чем использовать эту функцию, нужно закодировать датафрейм plays как множество сущностей, которое предоставляет метаданные о датафреймах библиотеке Featuretools.
Во фрагменте кода ниже показано, как создать множество сущностей для датафрейма plays; указать, какие столбцы являются категориальными; закодировать столбцы «events» и «description». Результатом является более широкий фрейм данных с фиктивными переменными для этих столбцов.
Выходные данные этого фрагмента показаны в таблице ниже. Датафрейм содержит то же количество записей, что и раньше, но теперь в нём 36, а не 18 столбцов.
Теперь можно выполнить глубокий синтез функций с помощью функции dfs в Featuretools. В приведённом ниже фрагменте кода показано, как преобразовать датафрейм с фиктивными переменными в множество сущностей, а затем нормализовать его. Функция normalize_entity указывает, что записи игр должны быть сгруппированы в наборы с помощью столбца game_id. После запуска dfs на результирующем множестве сущностей получится датафрейм с одной записью на игру и сотнями столбцов, описывающих действия в матче.
Результирующий датафрейм со сгенерированными функциями показан в таблице ниже. Датафрейм plays теперь состоит не из 36 столбцов, а переведён в датафрейм game summary с более чем 200 столбцами.
Этот способ помогает автоматизировать большую часть процесса сбора информации о поведении пользователей. Здесь был рассмотрен пример с игровыми данными NHL, но тот же процесс может быть применён к отслеживанию событий для мобильных игр. Полный код примера доступен на GitHub.
Насколько я люблю технологии и возможное будущее, настолько же меня на самом деле пугает что уже сейчас о том кто я, и что я делаю знают уже все компании услугами которых я пользуюсь.
И с одной стороны я рад, что многие процессы пойдут на сильные улучшения/упрощения, а с другой надеюсь что будет какая-то черта, которую не будут пересекать.
Не хочу соц рейтинг как в Китае короче, который анализирует все твои действия, и штрафует если ты не лоялен к партии.
А вообще если приводить более приземленный пример, то тот же анализ поведения позволяет узнать, как сделать микротранзакции более привлекательным для игроков. И это мне вообще не нравится, если честно
Любая власть всегда озабочена контролем населения, так что можешь ожидать еще худших нововведений.
Кратко: в статье написано о том, как разводить игроков на мобилочках на бабки еще эффективнее
проблема в том, что там даже этого не написано)
Была (и слава, блять, б-гу, сдохла) такая контора как Scientific Revenue. Вот их рекламный ролик для ознакомления. https://vimeo.com/154271693
Они тоже собирали бихдату и использовали машинное обучение. Но делали это все с худшей из возможных целей - манипулировать игроками, наиболее эффективно заставляя их покупать микротранзакции в мобильных играх.
Учитывая то, что Зинга - компания, пилящая мобилки, в которых (и это Истина В Последней Инстанции) самая сраная, самая жестокая, самая наглая и, к сожалению, прибыльная, монетизация, мне страшно, что СайнтификРевенью переродится. И не дай б-г, это увидят ЕА, Активижн и прочие так называемые триплэй-корпорации, желающие заработать все деньги.
Они уже над этим работают. См патент на систему матчмейкинга от Activision