Друзья, мы продолжаем разбирать базовые алгоритмы машинного обучения. Сегодня в программе — линейная регрессия!
Из прошлых разборов вы уже кое-что знаете о классификации и кластеризации (если нет — самое время вернуться и узнать!) В этом посте поговорим о том, как быть, если не собираешься ничего делить на группы, а хочешь спрогнозировать числовое значение.
Устраивайтесь поудобнее: будут даже формулы:)
Задача регрессии относится к supervised learning. Это значит, что мы подаём программе на вход обучающую выборку — совокупность объектов, обладающих числовыми признаками, и правильных ответов, а она на ней учится.
Например, объектом может быть человек, искомым значением — стоимость его машины, а признаком, скажем, месячный доход. Если мы нарисуем двухмерный график, где примем зарплату за X, а цену автомобиля за Y, то сможем представить всю нашу выборку в виде совокупности точек.
От алгоритма требуется подобрать функцию, наиболее точно отражающую зависимость между X и Y. По ней он потом сможет рассчитывать ответы для новых данных.
Причём в рамках линейной регрессии пространство поиска ограничено функциями вида F(X) = AX + B. То есть на графике мы должны получить самую обычную прямую, проходящую как можно ближе ко всем нашим точкам.
Но как реализовать поиск «той самой» линии математически и, соответственно, программно? Очевидно, нужна какая-то система оценки вариантов.
Для этого используют функции потерь. Они измеряют разницу между предсказанными и правильными ответами: F(x) и Y — например, с помощью среднего квадратического. Чем меньше значение, тем лучше наша прямая подходит под точки.
Получается, решение задачи линейной регрессии сводится к минимизации функции потерь за счёт подбора коэффициентов A и B. Звучит не очень сложно, не правда ли?
Проблема в том, что на самом деле объекты редко описываются одним признаком. В реальной жизни, чтобы предсказать стоимость машины, скорее всего, придётся учитывать не только доход, но и пол, и возраст, и водительский стаж владельца.
Функция F(X) = AX + B в общем случае превратится в F(X) = B + A1X1 + … + AnXn. А значит, нам придётся иметь дело с новой задачей минимизации для каждого нового N. Согласитесь, приятного мало.
К счастью, здесь есть лазейка. Можно представить смещение B как ещё один «фиктивный признак»: B = B * 1 = A0 * X0. Так мы сможем записать любую функцию в виде F(X) = ∑(i=0,n) Ai * Xi, и алгоритм по подбору коэффициентов A0, A1 … An будет единым для любого количества признаков.
Само собой, такая модель имеет смысл, только если между X и Y вообще есть линейная зависимость — а с реальными данными всё обычно чуть сложнее. Но в этом и прелесть: простейшая линейная регрессия лежит в основе многих куда более сложных и функциональных методов.
#полезное@karpovcourses #ml@karpovcourses