Следует ли мне включить перехват в мою модель машинного обучения?

И краткое введение в регрессионное моделирование в Data Science

«Регрессионное моделирование и линейные отношения между переменными»… так я назвал свой первый урок, посвященный науке о данных и машинному обучению. Раньше у нас было несколько уроков по GitHub и Python, но только в тот день все в классе почувствовали это уникальное открывающее глаза ощущение, наконец, понимания некоторых реальных приложений концепций, которые мы видели еще в колледже. В моем случае все, что связано с математикой и статистикой, я посетил в последний раз около 10 лет назад, поэтому я подумал, может быть, именно по этой причине мне было так трудно обрабатывать некоторые из вещей, которые мы видели. Однако через несколько месяцев после этой сессии, разговаривая с одной из моих младших сестер, закончившей первый год обучения по экономике, она с удивлением обнаружила, что все те абстрактные концепции, которые она изучала, действительно нашли практическое применение в реальной жизни.

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

Если вы чувствуете себя связанным с этим, сегодня мы собираемся глубоко погрузиться в очень простую, но ключевую концепцию, которую иногда можно неправильно понять или просто оставить позади и забыть, когда мы начнем использовать библиотеки Sklearn, и все так просто, как написать linreg. подходят (X, y).

Кстати, хороший совет, если вы действительно хотите посвятить себя машинному обучению и науке о данных: освежите эти пыльные математические знания. Это будет, наверное, лучший способ провести время в размышлениях о будущем. И я знаю, что в мире науки о данных есть МНОГО чему поучиться, но знаете что? Технологии и языки могут приходить и уходить, но математический фон в этой области останется. Я сам иду по собственному пути, который проделал один год для достижения этой цели. В будущем я, вероятно, напишу одну или несколько историй о моем опыте обучения, так что следите за обновлениями!

Вернуться к основам

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

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

y = B0 + B1*x

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

Давайте посмотрим на практический пример. Предположим, что приготовление моего знаменитого блюда занимает у меня ровно 10 минут, чтобы разложить все по местам, а затем еще 5 минут, чтобы мелко нарезать ингредиенты для каждого обеда, плюс еще 10 минут, чтобы фактически приготовить блюдо в духовке. Наклон в этом случае будет равен 5, а точка пересечения будет равна 20 из 10 фиксированных минут настройки всего и 10 минут приготовления.

Следовательно, наше уравнение можно перевести как:

  • Y = 5X + 20

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

  • Y = 5 * 5 + 20 = 45 минут

И поскольку у нас было B1, равное минутам мелкого измельчения для каждого закусочного, мы могли бы иметь больше членов в нашем уравнении, например, B2 могли бы быть дополнительными минутами покупок для каждого закусочного, B3 могли бы быть дополнительными минутами приготовления для каждого гостя и т. на, заканчивая чем-то вроде:

Y = B1x + B2x + B3x +… + Bnx + B0

И как sklearn находит наилучшее возможное уравнение?

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

Где:

  • Yi - настоящая ценность
  • yi - прогнозируемое значение
  • А N - общее количество элементов в наборе данных / выборке.

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

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

количество гостей = x = [1, 3, 5, 10, 15, 20]

общее количество минут = y = [25, 35, 45, 70, 95, 120]

Если мы попытаемся решить это уравнение с отрезком, равным 20, и B0, равным 3, мы получим следующие значения для общего количества минут приготовления: [25, 35, 45, 70, 95, 120]. Следуя приведенному выше уравнению, мы получим MSE 506,67. Опять же, поддерживая тот же перехват, но с B0 равным 6, мы получим [26, 38, 50, 80, 110, 140] и MSE 126,67. Следовательно, 6 было бы более подходящим значением для нашего коэффициента B0, чем 3. Если бы мы продолжали пробовать значения, пока не нашли наиболее точное, мы бы делали что-то очень похожее на то, что на самом деле делает Sklearn. Только то, что Sklearn использует для этого то, что называется градиентным спуском. Если вы хотите узнать больше об этом, я рекомендую эту историю от Сагара Майнкара.

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

Так что же тогда с перехватом?

Как было сказано ранее, точка пересечения - это значение нашей целевой переменной, когда все наши функции равны нулю и наша функция пересекает ось Y. В Sklearn мы можем легко включать или не включать точку пересечения в уравнение, просто используя гиперпараметр любой линейной модели. А иногда почти по волшебству может случиться так, что когда мы удаляем точку пересечения, это значительно улучшает нашу модель. Однако учтите, что это означает только то, что мы заставляем линию проходить через начало координат. Т.е. мы говорим: когда все коэффициенты в нашем уравнении равны нулю, то есть все наши характеристики равны нулю, тогда наша целевая переменная также будет равна нулю. И есть ли в этом смысл? Ну, это зависит от вашего бизнес-кейса.

Возьмем следующие примеры:

  • Предположим, мы прогнозируем количество комнат в доме в зависимости от количества ванных комнат, спален, возраста собственности и наличия или отсутствия других функций, таких как бассейн, балкон, сад и отопление. Если все это равно нулю, что означает, что это новое здание, без спален, без ванных комнат и других перечисленных характеристик, может ли это означать, что в отеле вообще нет комнат? Возможно.
  • Однако, с другой стороны, если бы мы прогнозировали цены на жилье, используя все те же функции, что и раньше, могло ли случиться так, что стоимость недвижимости была равна нулю? Вероятно, не. Мы найдем случаи, когда X никогда не может быть нулем, и, следовательно, перехват не имеет особого значения. Когда это происходит, мы можем просто отбросить перехват, поскольку он ничего не скажет нам о взаимосвязи между X и Y.

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

Что ж, это здорово, правда? Теперь у нас есть очень простой и понятный способ определить, нужно ли нам взвешивать этого маленького человечка, называемого перехватчиком, верно? Ну, не так быстро. Иногда это может быть немного сложнее. Когда все предикторы (B1, B2, B3 и т. Д.) Являются числовыми и нецентрированными, это может быть так же просто, как упоминалось ранее. Поскольку точка пересечения - это значение Y, когда все предикторы равны нулю, это значение полезно только в том случае, если каждый X в модели фактически имеет некоторые нулевые значения. Так что если у нас есть только одна характеристика, например, чья-то высота - где у нас не должно быть никакого значения, даже близкого к нулю, тогда мы можем безопасно отказаться от точки пересечения. Однако что происходит, когда у нас есть фиктивные категориальные переменные или характеристики, сосредоточенные на их среднем значении?

Как вы, вероятно, знаете, когда мы изменяем масштаб наших переменных-предикторов, мы центрируем их все по их собственному среднему значению. Это означает, что все X равны нулю при их собственном среднем значении. Так что отбрасывание точки пересечения в этом случае, вероятно, было бы не самой разумной идеей, поскольку это будет значение Y как среднее всех переменных-предикторов и, следовательно, значимое.

Роль перехвата, когда мы имеем фиктивные категориальные признаки, - это совсем другая история. Фиктивные переменные будут принимать только значения 1 и 0, указывающие, наблюдались ли эти особенности в каждом элементе нашего набора данных. Так, например, если бы у нас было только две функции в нашем наборе данных, первая показывала, является ли цель собакой, а вторая говорила нам то же самое, что мы кошка, обе функции, равные нулю, сообщали бы нам что-то. : что Y не кошка и не собака. Здесь вы можете легко увидеть, как перехват становится значимым. И когда мы имеем дело с комбинацией как категориальных переменных, так и числовых характеристик, которые были центрированы, точка пересечения становится все более и более важной, и, вероятно, ее не следует отбрасывать.

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

Что ж, на сегодня все. Следите за новостями, в будущих статьях будут представлены другие методы работы с категориальными признаками. А пока я предлагаю вам взглянуть на мои последние две истории:

Также не стесняйтесь посетить мой профиль на Medium и проверить любые другие мои истории :). Увидимся! И спасибо за чтение!

Источники: