С момента своего появления в Японии в 1996 году «Покемон» стал самой прибыльной медиа-франшизой всех времен. Охватывая коллекционные карточки, видеоигры и игры для мобильных телефонов, сериалы и фильмы, музыку, книги, комиксы манга, товары и даже два временных тематических парка, Pokémon является международным культурным явлением. Чаты, сабреддиты и другие коммуникационные форумы существуют в Интернете для явных целей обсуждений, посвященных покемонам, включая сравнение особенностей различных покемонов (например, атаки, защиты, скорости), того, какими могут быть покемоны. классифицируется в соответствии с этими характеристиками, и как данная функция (например, особая атака) может быть регрессивно предсказана на основе других известных особенностей покемонов. В этом заключается отличная возможность применить алгоритмы классификации и регрессионного машинного обученияк особенно интересному набору данных: видам вселенной покемонов.

Данные, использованные здесь, общедоступны по адресу https://www.kaggle.com/hamdallak/the-world-of-pokemons и содержат 11 характеристик для всех 1045 существующих покемонов, включая эволюционировавшие формы, поскольку данный вид может развиваться через до трех форм. В отношении названия каждого вида даны две характеристики: базовая форма и развитая форма (если применимо, в противном случае значение эволюционного имени пусто). В следующем анализе игнорируются оба типа строковых данных имени. Исходные данные дополнительно включают как первичные, так и вторичные типы (если применимо) для каждого вида; вторичные типы игнорируются в следующем анализе, потому что у большинства видов нет вторичного типа, а перезапись первичного типа вторичным типом, когда он существует, снижает уникальность типового признака всего набора данных. Таким образом, данные из источника сокращаются и включают только следующие 8 функций:

  1. тип: основной тип (строка)
  2. hp: очки жизни (целое число)
  3. атака: очки атаки (целое число)
  4. защита: защитные очки (целое число)
  5. sp_attack: специальные точки атаки (целое число)
  6. sp_defense: особые очки защиты (целое число)
  7. скорость (целое число)
  8. всего: общая сила, сумма признаков 2–7 (целое число)

К данным типа применяется функция преобразования строки в целое число, чтобы сделать его совместимым с другими числовыми функциями, в котором каждая буква в переменной типа взвешивается в соответствии с ее индексом в алфавите, а все буквы в слове суммируются. для получения преобразованного целочисленного значения строки типа. Следует отметить, что эта система может вносить ложные корреляции в данные о видах (например, «ТРАВА» будет преобразована в целое число, более близкое к «ЗЕМЛЯ», чем к «ЯД»), и в будущем могут заслуживать изучения дополнительные методы преобразования признака типа. , но результаты, показанные позже, показывают, что предложенный метод преобразования достаточен для целей анализа данной публикации.

Имея данные о характеристиках каждого существующего покемона, мы можем задать несколько вопросов и ответить на них. Как связаны эти особенности? Можно ли создать отдельные группы покемонов на основе данных этой функции, которые могут, например, помочь игроку Pokémon Go разнообразить свою личную коллекцию? Кроме того, можно ли предсказать одну особенность покемона на основе других его известных атрибутов, чтобы игроки могли, например, формировать обоснованные прогнозы определенных атрибутов (например, особая атака) нового, невыпущенного покемона с ограниченной другой информацией (например, типом). и обычная атака)? С новыми каноническими дополнениями к франшизе Pokémon, происходящими каждые из последних 25 лет, с еще одним выпуском, запланированным на 2022 год, хорошо информированные прогностические мнения всегда представляют своевременный интерес для миллионов в международном сообществе Pokémon.

На каждый из поставленных выше вопросов можно ответить, используя алгоритмы машинного обучения. Более того, вам не нужно быть экспертом по алгоритмам, чтобы присоединиться к веселью применения машинного обучения во вселенной покемонов. Этот отчет включает простой алгоритм классификации k-средних для группировки покемонов в соответствии с заданными отношениями признаков, а также алгоритм регрессии случайного леса для прогнозирования целевого признака на основе других известных признаков. особенности вида. Для каждого алгоритма предоставляется описание метода применения, чтобы другие могли с удовольствием воспроизвести этот беззаботный анализ, а результаты производительности приведены для каждого алгоритма для обсуждения и проверки поведения модели.

Визуализация данных

При работе с набором данных вселенной покемонов или с чем-то значительным, может быть сложно определить, как применить алгоритм группировки к данным — какие из многих функций коррелируют? Должны ли мы вручную сопоставлять каждую функцию с каждой другой, чтобы сказать? Чтобы ответить на этот вопрос, я хотел бы подключить программное обеспечение под названием ParaView, которое первоначально было разработано в частном порядке Kitware, Inc. и Лос-Аламосской национальной лабораторией при финансовой поддержке ASCI Views Министерства энергетики США, а теперь общедоступное бесплатное многоплатформенное приложение для анализа и визуализации данных с открытым исходным кодом. Программное обеспечение доступно для загрузки на https://www.paraview.org/. После загрузки данных Pokémon .csv в это приложение и применения фильтра Таблица в точки пользователь может выбрать представление Матрица графика, чтобы автоматически создавать графики каждой функции по отношению друг к другу, а также гистограмму для каждой функции. Для данных этого проекта ParaView создает следующее представление матрицы графика:

Классификация K-средних

Кластеризация K-средних – это неконтролируемый алгоритм классификации машинного обучения, в котором пользователь предоставляет данные для группировки и желаемое количество n групп, которые необходимо создать, а затем данные разделяются на n группирует с помощью следующего процесса:

  1. nцентроиды инициализируются координатами (значение признака 1, значение признака 2). Координаты могут быть рандомизированы (как в этом анализе) или установлены более интуитивно, используя некоторую известную информацию.

Итеративно,

2. Все точки «помечены» как принадлежащие группе, от центра тяжести которой они имеют самое близкое евклидово расстояние.

3. Местоположение каждого центроида обновляется на основе среднего положения всех точек в его группе.

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

Я успешно применил алгоритм машинного обучения k-means для создания 5 различных групп в нормализованной скорости покемонов по сравнению с данными о хитпоинтах. Полученные группы определяют четкие пороги между видами с низким, средним и высоким показателем как по скорости, так и по очкам жизни. Кроме того, группы демонстрируют a) редкость покемонов с высоким нормализованным количеством очков жизни (желтый) по сравнению с покемонами с высокой нормализованной скоростью (фиолетовый), b) виды с высоким скорость (желтый) не имеет высоких очков жизни, и c)группа видов с высоким количеством очков жизни (желтый) не имеет высокой скорости. Этот алгоритм устанавливает компромисс между скоростью и жизненными очками в мире покемонов.

Случайная лесная регрессия

Алгоритм случайного леса — это тип контролируемого алгоритма машинного обучения, который можно использовать как для классификации, так и для регрессии. Его название напрямую описывает его методологию прогнозирования: объединение результатов прогнозирования нескольких независимых деревьев решений, которые «случайно» различаются по своим методам прогнозирования, для получения более надежного результата, чем у одного дерева решений. Python позволяет пользователям легко создавать такие алгоритмы с помощью функции RandomForestRegressor в его пакете SciKit Learn.

Я предсказал многие особенности покемонов, используя алгоритм случайного леса, и приведу случай предсказания специальной атаки в качестве примера. Алгоритмы SciKit, такие как RandomForestRegressor (RFR), обучаются с помощью простого вызова функции: RFR.fit(x_train, y_train). Обучающие данные (x_train, y_train) представляют собой некоторую часть test_size общего набора данных (x,y), который также включает данные, на которых тестируется модель (x_test, y_test). Подмножества данных для обучения и тестирования можно легко создать с помощью функции train_test_split в SciKit Learn, например: x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=75) . Добавление целого числа random_state в качестве аргумента исправляет способ перетасовки данных (x,y) для назначения в наборы данных для обучения и тестирования, чтобы результаты воспроизводились при нескольких вызовах функций.

Путем проб и ошибок я определил, что мой алгоритм SciKit Random Forest лучше всего предсказал специальную атаку с максимальной глубиной дерева 10. В этом случае моя модель дала оценку R² (статистическое описание модели, подходящей для обучающих данных) 0,7333 и Out- Оценка вне пакета (OOB) (статистическое описание модели, подходящей для обучения и ранее невидимых данных тестирования) 0,7320. В дополнение к приличным оценкам R² и OOB моя модель проверяется путем сравнения прогнозируемой специальной атаки с фактической специальной атакой для набора тестовых данных. Этот проверочный график приведен ниже и демонстрирует хорошее совпадение с тенденцией прогнозирования, четко повторяющей линию соответствия всем данным; идеальная модель будет предсказывать каждое тестовое значение как его точное фактическое значение, помещая все красные точки на синюю линию. Я ожидал, что сила атаки покемона наиболее сильно повлияет на его особую силу атаки, но моя модель показывает, что тип вида на самом деле является наиболее важной характеристикой для предсказания особой силы атаки (при моей текущей системе преобразования строкового типа в целочисленное), как показано. ниже на графике ранжирования объектов.

Специальная атака не может быть аналитически рассчитана с использованием других признаков — по этой причине методы прогнозирования машинного обучения особенно ценны для этого признака. Для общей силы существует аналитическая формула: сумма атаки, защиты, очков жизни, особой атаки, особой защиты и скорости. Поскольку набор данных функций предоставляет всю информацию для расчета общей силы, это отличная практика или набор проверки для моей модели прогнозирования регрессии случайного леса. Я не сообщаю явным образом ни одному из деревьев решений в лесу формулу общей силы; они должны вывести это между собой.

Путем проб и ошибок я определил, что мой алгоритм SciKit Random Forest лучше всего предсказывает общую силу с максимальной глубиной дерева 11. В этом случае моя модель дала фантастический показатель R² 0,9529 и показатель Out-Of-Bag (OOB) 0,9433. . Модель научилась предсказывать общую силу по другим функциям с точностью почти 95%! График проверки этого прогноза общей прочности ниже демонстрирует соответствие между прогнозируемыми и реальными значениями общей прочности. График ранжирования характеристик показывает, что тип, а затем и сила атаки снова являются наиболее важными характеристиками в прогнозировании, хотя они не так важны для прогнозирования общей силы, как для специальной силы атаки. Сила защиты и очки жизни более важны для предсказания общей силы, чем специальная атака, в то время как скорость практически незначительна.

Заключение

Мир покемонов полон приложений для алгоритмов машинного обучения классификации и регрессии, таких как классификация k-средних и случайный лес. Методы регрессии демонстрируются здесь. Это беззаботное применение методов машинного обучения может быть легко расширено до самых разных приложений, насколько позволяет воображение — возможно, вместо того, чтобы группировать виды покемонов в соответствии с особыми атаками и очками жизни, вы группируете фильмы в соответствии с производственным бюджетом и валовым доходом. для Нетфликс. Или, может быть, вместо того, чтобы предсказывать особую атаку или общую силу покемона на основе его других характеристик, вы предсказываете вектор скорости капли топлива, выходящей из двигателя, на основе его других известных характеристик, таких как заряд, масса и место выброса. . При наличии достаточного количества данных и методов машинного обучения, таких как продемонстрированные здесь, возможности действительно безграничны.

Рекомендации

[1] Карим, Хамдалла Ф. Мир покемонов. Kaggle, 29 сентября 2021 г., https://www.kaggle.com/hamdallak/the-world-of-pokemons.

[2] Покемон. Википедия, Фонд Викимедиа, 25 ноября 2021 г., https://en.wikipedia.org/wiki/Pok%C3%A9mon.

[3] Бортник, Джейкоб. «Введение в машинное обучение для физических наук». Калифорнийский университет, Лос-Анджелес, Атмосферные и океанические науки, 204. 2021.