Работа с категориальными данными

Для машинного обучения - многоцелевая регрессия

В нашем предыдущем разделе мы смогли значительно улучшить наш показатель R², изменив нашу модель единственной линейной регрессии на модель многомерной линейной регрессии. Это было сделано путем добавления оставшихся предикторов (функций) в нашу модель линейной регрессии и ее переоборудования (переобучения).

Это было легко сделать, потому что все наши дополнительные предикторы были числовыми значениями, но что, если это не так? Просмотрите набор данных ниже и обратите внимание, что он содержит как числовые, так и категориальные данные. Вы заметите, что наш набор данных в основном категориален.

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

Примером порядковых категориальных переменных может быть размер, записанный как маленький, средний или большой, при этом большой ›средний› маленький.
С другой стороны, номинальной категориальной переменной может быть домашнее животное, зарегистрированное как кошка, собака или птица, с точки зрения модели машинного обучения Cat не должен содержать никакой внутренней ценности, меньшей или большей, чем Dog или Bird.

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

Для порядковых данных нет проблем с присвоением данных следующих числовых значений.

L - 3
M - 2 
S - 1 

Наша модель будет учитывать внутреннюю природу разницы в размерах L ›M› S с соответствующими 3 ›2› 1.

С другой стороны, присвоив Кошке значение 1, Собаке значение 2 и Птице значение 3 может привести к неправильной интерпретации нашей моделью значений Кошка, Собака и Птица, что значительно повлияет на функцию ошибок нашей модели.

Error function — a method of evaluating how well specific algorithm models the given data

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

Теперь вернемся к нашему исходному набору данных. Похоже, что наш целевой тип данных тоже категоричен. Кроме того, наша цель не двоичная, а мультиклассовая. И снова цель набора данных - предсказать один из трех сценариев. В зависимости от текущего статуса пациента, следует ли направить его в отделение интенсивной терапии (I), на пол больницы общего профиля (A) или домой (S). Если бы наша цель была двоичной, мы могли бы снова использовать модель линейной регрессии, как только наш набор данных будет закодирован в горячем режиме, но в данном случае это невозможно.

Наш следующий вариант - изучить логистическую регрессию. Хотя в названии есть слово «регрессия», логистическая регрессия на самом деле является моделью классификации, а не регрессии. Чаще всего модели логистической регрессии предназначены для решения проблемы двоичной классификации, но SciKit Learn позволяет нам настраивать классификатор логистической регрессии для обработки мультиклассовых целей.

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

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

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

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

Обратите внимание, что два исхода возникают, когда наша логистическая регрессия сбалансирована и несбалансирована. Наши несбалансированные прогнозы состоят в основном из А, тогда как наши сбалансированные прогнозы более точно представляют истинные данные.

Давайте посмотрим на наш окончательный результат.

Здесь есть о чем подумать. Наша модель только предсказывала немного лучше, чем пропорциональность A остальным нашим данным. Это должно заставить нас относиться к нашей модели немного скептически, но мы сбалансировали нашу модель логистической регрессии, так что, возможно, наша модель в порядке (предпочтительнее 80% и выше). С этого момента цель - вернуться назад и посмотреть, есть ли лучшие способы точной настройки нашей модели и улучшения результатов.

«Логистическая регрессия предназначена для классификации - и проблема, с которой мы имеем дело, - это классификация - логистическая регрессия - самая простая линейная модель для классификации» - Дэйв