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

Введение

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

Часто людей привлекает чрезмерная сложность из-за «шумихи» вокруг последних исследований и выпусков новаторских моделей, таких как RNN, GRU и т. Д., Когда более простая модель, требующая меньше времени на обучение, может быть легко внедрена с большей точностью. Вся пословица «Лошади для курсов» звучит правдоподобно в области науки о данных, где размерность должна быть согласована со сложностью моделей.

Мы рассмотрим, что скрывается за различными моделями регрессии.

Регрессия

Data Science посвящена двум основным проблемам прогнозирования: «Классификация» или «Регрессия».

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

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

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

Имейте в виду, что я работаю в автомобильном издательстве в Австралии и хотел использовать то, что было бы понятно большинству людей: цены на автомобили.

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

Простая линейная регрессия

Здесь у нас очень простая регрессия с использованием одной независимой переменной («кВт»: киловатты) и одной зависимой переменной («Цены на автомобили»).

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

Здесь показатель r2 модели равен 0,703, что означает, что прогнозы могут отличаться на 30%.

Регрессия полиномиальных функций

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

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

Ну да, действительно. Если мы сравним оценки r2 линейной и полиномиальной моделей, мы увидим, что полиномиальная модель имеет более высокий балл (70 против 75).

Ансамблевое / машинное обучение.

Следующим строительным блоком на основе линейного моделирования являются методы машинного обучения.

Деревья решений

Дерево решений - это следующий уровень моделей машинного обучения. Поначалу они могут показаться пугающими, но на самом деле их легко настроить, развернуть и дать точные прогнозы. В двух словах (и в моей неудачной попытке объяснения) деревья решений пытаются «разбить» обучающую выборку простым двоичным решением «да» или «нет». В некотором смысле он объединяет линию линейной регрессии на подвыборки.

Вы можете быстро найти пример, выполнив быстрый поиск картинок в Google.



и для объяснения:

Https://towardsdatascience.com/the-complete-guide-to-decision-trees-17a874301448

Просто используя настройку по умолчанию, мы получаем невероятно быструю модель, которую можно легко установить прямо из коробки с результатом 87%:

Если вы внимательно посмотрите на фактические прогнозы, представленные на графике, вы увидите, что модель подвержена высокому риску переобучения, в частности, с такими строками данных исключения, как автомобиль с данными 0 кВт стоимостью 200 тыс. Долларов.

Случайный лес

Следующая модель поверх дерева решений - это набор деревьев решений!

Вы можете прочитать об этом здесь, чтобы получить довольно емкое объяснение:



Случайные леса, как и деревья решений, можно легко настроить и обучить.

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

Ансамблевые модели: XGBoost

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

для объяснения см .:



или пример того, кто использовал xgboost для классификации изображений:



а также:



Для кого-то, кто возился с созданием CNN для классификации изображений в пакетах Keras и Torch, я нахожу увлекательным, что этот «более простой» пакет может затмить сложные модели глубокого обучения для определенных задач.

Вы можете убедиться в привлекательности xgboost, сравнив его со сложностью моделей глубокого обучения, посмотрев мой код и статью в https://towardsdatascience.com/torch-vs-keras-for-cnn-image-classification-Things-on- the-rock-paper-scissor-dataset-5042f966efae , чтобы получить ясное представление.

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

CatBoost

Еще одно недавнее дополнение - это собственная модель Яндекса CatBoost. Он очень похож на xgboost, за исключением того, что Catboost был построен с учетом обработки категориальных данных. Это невероятно полезная функция, если учесть, что от 70% до 80% времени на самом деле посвящено форматированию и кодированию данных.

Если вы знакомы с модулем предварительной обработки sklearn и масштабированием / кодированием данных Hate, CatBoost определенно является отличным пакетом, который стоит рассмотреть.

Без лишних слов, вот простая регрессия от KW к цене:

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

Просто интуитивно судя по графикам, Catboost пытается уменьшить переобучение в рамках своих собственных параметров по умолчанию. Подробнее читайте на: https://catboost.ai/

Глубокое обучение: Керас

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

Здесь у нас есть искусственная нейронная сеть со скрытым слоем.

Заключение

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