Я попытался использовать методологию науки о данных для построения модели машинного обучения, чтобы найти способ предсказать, будет ли игра иметь высокие продажи во всем мире, и, надеюсь, создать хорошую прогностическую модель на основе заданных параметров. Я использую методологию CRISP-DM. CRISP-DM расшифровывается как межотраслевой стандартный процесс интеллектуального анализа данных. Весь процесс разбит на шесть основных этапов, а именно:

  1. Понимание бизнеса
  2. Понимание данных
  3. Подготовка данных
  4. Моделирование
  5. Оценка
  6. Развертывание для обратной связи

1. Деловое понимание

В связи с быстрым ростом игровой индустрии в последние несколько лет появилось множество инвесторов, желающих инвестировать. Однако им не всегда везет. Есть несколько историй, когда инвесторы теряли большие деньги на неудачных игровых проектах. Стало непреклонным, что необходимы надлежащие исследования.

Игровая индустрия является быстрорастущей отраслью с оборотом 196,92 млрд долларов по состоянию на 2022 год и, как ожидается, достигнет 221,37 млрд долларов к концу 2023 года (Statista, 2022). Таким образом, можно четко сказать, что инвестиции в такую ​​прибыльную отрасль очень выгодны. Несколько компаний начали инвестировать в него из-за высокой узнаваемости и узнаваемости бренда, которую он обеспечивает для брендов.

Однако вопрос выбора правильной игры для соответствующей аудитории всегда оказывается проблемой. Ежегодно выпускаются тысячи игр. Однако многим из них не удается должным образом выйти на рынок и добиться высоких продаж. Требуется хорошее исследование рынка, чтобы правильно понять, какая комбинация функций для игры приведет к удовольствию игроков и, следовательно, к увеличению продаж. Это особенно важно, потому что для создания игр уровня AAA требуется много ресурсов, и каждый инвестор и организация хотят, чтобы вложенные средства окупились после продажи игры. Однако надлежащее исследование рынка, особенно в такой отрасли, как игровая индустрия, требует много ресурсов.

AT&T — телекоммуникационный гигант в США. Их доход по состоянию на 2021 год составил 168,86 млрд долларов США (Statista, 2022). Чтобы решить проблему высокой стоимости маркетинговых исследований, они внедряют науку о данных, чтобы понять, какие функции в игре обеспечивают высокое взаимодействие с пользователем и, следовательно, более высокие продажи.

Компания хотела бы увидеть, что заставляет продажи игр превышать 500 000 единиц по всему миру, поэтому мы просматриваем набор данных о прошлых играх, их функциях и объемах продаж, которые они получили среди глобальной аудитории. Для этого потребуется подход к прогнозному анализу, поскольку мы стремимся спрогнозировать, принесет ли игра большой объем продаж. Модель машинного обучения сможет правильно предсказать, будет ли игра иметь высокие продажи или нет. Контрольная точка для того, высока ли продажа или нет, составляет 0,5 миллиона проданных единиц игры (500 000 проданных единиц игры).

2. Понимание данных

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

  • Требования к данным
    Полученный набор данных представляет собой набор данных о последних играх за последние несколько лет и их продажах по всему миру, а также в Северной Америке, Европе и Японии. Рынки. Набор данных содержит следующие столбцы:

Название: Название игры

Платформа: консоль, на которой запущена игра

Year_of_release: год выпуска игры

Жанр: категория игры

Издатель : издатель игры

NA_Sales: продажи игр в Северной Америке (в миллионах единиц)

EU_Sales: продажи игр в Европейском Союзе (в миллионах единиц)

JP_Sales: продажи игр в Японии (в миллионах единиц)

Other_Sales: продажи игры в остальном мире, за исключением Австралии, Японии, ЕС и Северной Америки (в миллионах единиц)

Global_Sales: общий объем продаж в мире (в миллионах единиц)

Critic_Score: совокупный балл, составленный персоналом Metacritic

Critic_Count: количество критиков, использованных при подсчете Critic_Score

User_Score: совокупный балл по подписчикам Metacritic

User_Count: количество пользователей, использованных для получения User_Score

Данные для варианта использования получены из Kaggle, где мне и членам моего класса было поручено создать хорошую прогностическую модель.

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

3. Подготовка данных

Чтобы правильно подготовить данные для обучения и тестирования нашей модели. Я скачал CSV-файл с Kaggle и импортировал его в блокнот Jupyter, который является нашей предпочтительной интегрированной средой разработки (IDE), с помощью следующей команды:

Мы также импортировали несколько библиотек для использования в этом проекте.

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

Как показано на диаграмме выше, в моем наборе данных есть некоторые отсутствующие значения. Я не собираюсь использовать Year_of_Release, Developer of Rating в качестве какой-либо из своих функций, поэтому нет необходимости исправлять отсутствующие значения. Однако мне нужно работать с User_Score, User_Count, Critic_Score и Critic_Count. Есть несколько способов удалить эти пропущенные значения. Однако я решил просто заполнить эти пропущенные значения медианой значений выше и ниже него.

Однако для Critic_Score и User_Score были такие значения, как tbd, которые нельзя было преобразовать в числовое значение. Я использовал функцию замены в python, чтобы заменить эти значения на None (Python по умолчанию), прежде чем преобразовывать их в медиану.

Еще одна проблема, которую я заметил, заключалась в том, что в моих столбцах «Издатель» и «Платформа» есть несколько разных издателей и платформ. Некоторые из них не нужны для моей модели (некоторые платформы являются платформами старого поколения). Я выбрал важные платформы и издатели из набора данных и избавился от остальных, чтобы сделать набор данных чище.

Наконец, нам нужно превратить все экземпляры категориальных типов данных (например, строк) в целые числа, чтобы модель машинного обучения работала эффективно. Для этого нам нужно закодировать наши данные, и это делается двумя способами — кодирование меток (преобразование меток в числовую форму, чтобы их было легче преобразовать в машиночитаемую форму) и кодирование One-Hot (работает с бинаризацией данных). Категориальные данные). Для этого проекта я использовал LabelEncoder Sci-Kit Learn для переноса нашей кодировки меток.

Как видно из таблицы, Жанр, Платформа и Издатель — это три функции, которые нам нужно закодировать. Итак, применяем наш LabelEncoder:

Когда мои столбцы были должным образом очищены и готовы к использованию, я выбрал «Платформа», «Жанр», «Издатель», «Critic_Score», «Critic_Count», «User_Score» и «User_Count» для использования в качестве столбцов функций.

Однако я заметил, что Global_Scores имеет значения с десятичными точками. Поскольку я создаю модель классификации, этот столбец должен быть преобразован в двоичные значения (0 и 1). Модель машинного обучения, как определено в постановке задачи, должна была проверять, является ли продажа высокой или нет, основываясь на том, преодолела ли она отметку в 0,5 миллиона единиц. Для этого я запустил цикл for, чтобы перебрать все значения в Global_Score и установить для каждого из них значение 0 или 1 в зависимости от того, меньше или больше они 0,5. Затем я устанавливаю эти новые значения в массив и устанавливаю массив как новый столбец в наборе данных. Я назвал этот новый столбец new_global_Sales и установил его в качестве целевого столбца.

Когда я создавал свой целевой столбец, я заметил, что мои new_global_Sales расположены в порядке убывания. Я быстро запустил строку кода, чтобы перетасовать строки.

4. Моделирование

Пришло время построить реальную модель машинного обучения. Модель будет использовать контролируемое обучение (из-за маркированного характера моего набора данных) и будет моделью двоичной классификации. Прежде всего, я разделил свои функции и целевые наборы данных на четыре: features_train, features_test, target_train и target_test, чтобы обучить и протестировать мою модель ML. Я разделил свои данные на 70% для обучения и 30% для тестирования.

Для этого проекта я протестировал четыре различных типа моделей алгоритмов: логистическая регрессия, классификатор дерева решений, классификатор случайного леса и SVC.

Я остановился на использовании классификатора Random Forest по трем причинам:

  • Он менее подвержен переоснащению, потому что использует несколько деревьев решений и берет голоса от каждого из них, чтобы делать выводы.
  • Было показано, что он имеет более высокую точность по сравнению с другими алгоритмами.
  • Он может легко обрабатывать сложные отношения между функциями и целевой переменной.

Я импортировал RandomForestClassifier и использовал его для построения модели машинного обучения.

5. Оценка

Результат вышел в виде массива. Чтобы лучше рассмотреть. Я завернул его в словарь и использовал Data Frame, предлагаемый библиотекой pandas, чтобы он выглядел презентабельно.

Результат вышел в виде массива. Чтобы лучше рассмотреть. Я завернул его в словарь и использовал Data Frame, предлагаемый библиотекой pandas, чтобы он выглядел презентабельно. Точность моей модели варьировалась от 71% до 80%, поскольку я продолжал переобучать свою модель.

Чтобы правильно оценить мою модель, я проанализировал матрицу путаницы.

Мое истинное положительное значение (количество действительно высоких продаж, которые были предсказаны правильно) равно 213. Мое ложноположительное значение (количество предсказанных высоких продаж, которые на самом деле были низкими) равно 57. Мое истинное отрицательное значение (число действительно низких продаж, которые были предсказаны правильно) равно 416. и False Negative (количество предсказанных низких продаж, которые были на самом деле высокими) равно 109. Я ясно вижу, что Модель смогла получить (416 + 213) 629 значений, а не (57 + 109) 166 значений. Я заметил, что более вероятно предсказать высокие продажи как низкие продажи, чем низкие продажи как высокие продажи. Это хорошо, потому что инвестор, который видит прогнозируемую высокую продажу и инвестирует, потеряет много денег, если на самом деле это будет низкая продажа. Однако, если это низкая продажа, которая на самом деле является высокой продажей, инвестор, вероятно, не будет вкладывать средства и не потеряет намного меньше.

6. Развертывание и обратная связь

После проверки моей точности и оценки производительности моей модели я могу развернуть модель машинного обучения.

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