Краткое руководство по выбору правильной модели для вашей бизнес-задачи

Это первая неделя на работе, и вы, наконец, можете заниматься машинным обучением в реальном мире!

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

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

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

Я не хочу, чтобы вы совершали те же ошибки, что и я.

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

Каковы ваши данные?

Вам нужны данные для построения модели машинного обучения.

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

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

Количество примеров

Линейные модели намного быстрее обучаются, чем модели случайного леса.

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

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

Я дал RandomizedSearchCV поработать всю ночь только для того, чтобы увидеть, что четыре модели полностью подошли — и это было с процессором i9. Линейная регрессия заняла целых 3 минуты. Лассо-регрессия и настройка альфа-гиперпараметра также были быстрой работой.

Помните о размере вашего набора данных.

Количество функций

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

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

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

Другие данные:

  • Сколько категориальных признаков (не попадайтесь в ловушку фиктивной переменной, это не будет хорошо работать с линейной регрессией)
  • Насколько коррелированы ваши функции (линейная регрессия может взорваться, если у вас есть мультиколлинеарность, случайный лес не так уж против)
  • Проверьте, нужно ли масштабировать ваши функции (случайный лес не зависит от масштаба, а линейная регрессия — нет).
  • Проверьте наличие выбросов в цели (линейная регрессия будет более чувствительна к этому, чем случайный лес)

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

Какие предположения вы готовы сделать?

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

В двух словах:

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

Линейная регрессия — это параметрическая модель.

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

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

Заключение

Мы могли бы продолжить еще 1000 слов о том, когда какие модели использовать.

Далее следует рассмотреть объяснимость/интерпретируемость. Вы можете понять, что делает линейная регрессия, просто взглянув на коэффициенты уравнения. Для случайного леса вам придется использовать что-то вроде SHAP, что не так уж интуитивно понятно и может быть сложно объяснить.

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

Есть ряд компромиссов, на которые вы должны пойти, и я надеюсь, что этот пост помог вам понять некоторые из них.

Поздравляем! Вы дошли до конца поста.

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

Не стесняйтесь сохранять, делиться или игнорировать их!