Линейная регрессия — это старейший, простой и широко используемый алгоритм машинного обучения с учителем для прогнозного анализа.
Каждый Data Scientist начинает с этого. Итак, вот оно.
Прежде чем мы погрузимся в реальную технику линейной регрессии, давайте взглянем на ее интуицию.
Допустим, я даю вам следующую загадку:
Учитывая следующие значения X и Y, каково значение Y, когда X = 5.(1,1), (2,2), (4,4), (100,100), (20 , 20)
Ответ: 5. Не очень сложно, правда?
Теперь давайте посмотрим на другой пример. Допустим, у вас есть следующие пары X и Y. Можете ли вы вычислить значение Y, когда X = 5?
(1,1), (2,4), (4,16 ), (100,10000), (20, 400)
Ответ: 25. Было сложно?
Давайте немного разберемся, что произошло в приведенных выше примерах. Когда мы посмотрим на первый пример, посмотрев на данные пары, можно установить, что связь между X и Y есть Y = X. Точно так же во втором примере связь Y = X * X.
В этих двух примерах мы можем определить взаимосвязь между двумя заданными переменными (X и Y), потому что мы можем легко определить взаимосвязь между ними. В целом, машинное обучение работает точно так же.
Ваш компьютер просматривает некоторые примеры, а затем пытается определить «наиболее подходящую» связь между наборами X и Y. Используя эту идентифицированную связь, он попытается предсказать (или больше) новые примеры, для которых ты не знаешь Ю.
Помня о вышеизложенной идее, я попытаюсь объяснить, что такое линейная регрессия.
Регрессию обычно называют определением отношения (отношений) между двумя или более переменными. Например, в приведенных выше двух примерах переменными являются X и Y. X называется независимой переменной, а Y называется зависимой переменной, иYимеет непрерывный диапазон (в отличие от классификации, где Y является дискретным) .
Теперь давайте углубимся в детали регрессии. Поток остальной части поста будет выглядеть следующим образом:
- Простая линейная регрессия.
- Объяснение того, как определить «наиболее подходящую связь».
- Множественная линейная регрессия.
- Пример базового кода.
Простая линейная регрессия
Простая линейная регрессия (SLR) называется простой, потому что есть только независимая переменная.
Например, предположим, что у вас есть только дата и цены акций компании, вы можете подогнать модель регрессии к дате (как X) и цене акций (как Y).
Модель, которая выглядит примерно так:
Цена = m*Date + c
Уравнение напоминает уравнение линии с наклоном «m» и точкой пересечения y «c».
В этом суть SLR. Имея независимую и зависимую переменную, мы подгоняем уравнение прямой для прогнозирования невидимых данных.
Примечание. Дата считается целым числом. Это считается следующим образом — дата, с которой вы начали, считается O, следующий день — 1 и так далее.
Объяснение того, как определить «наиболее подходящую связь».
Теперь мы знаем, что такое SLR, но как узнать, каковы значения «m» и «c». Существует бесконечное множество значений для выбора «m» и «c», но какие из них являются наиболее подходящими?
Ответ на вопрос, какие значения выбрать, интуитивно понятен. Учитывая, что у нас есть некоторые X и Y (например, даты и цены акций), наиболее подходящими значениями "m" и "c" являются те, которые дают наименьшую ошибку по всем заданным X и Y.
Вышеупомянутая терминология также определяется как Ошибка. Например, учитывая отношение Y = m*X +c, для всех X, которые вы видели, предскажите значения Y, Й`. Возьмите сумму абсолютной разницы Y` и Y, значения с наименьшей суммой являются наиболее подходящими значениями.
Но все равно остается вопрос, для скольких значений можно это сделать? Существуют бесконечные значения «m» и бесконечные значения «c». Ответом на этот вопрос является алгоритм градиентного спуска. Градиентный спуск выходит за рамки этого поста, но я осторожно представлю его.
Градиентный спуск — это алгоритм, с помощью которого мы можем получить «наиболее подходящие значения» «m» и «c», считая, что наилучшие «m» и «c» дадут наименьшую ошибку. Основная идея градиентного спуска заключается в том, что вы обновляете «m» и «c» как функцию «Error».
m(t+1) = f(m(t), ошибка(t))
c(t+1) = f(c(t), ошибка(t))
Для получения более подробной информации о градиентном спуске, пожалуйста, обратитесь к любому онлайн-руководству по тому же самому.
Множественная линейная регрессия
Множественная линейная регрессия (MLR) относится к определению взаимосвязи между независимыми и зависимыми переменными, когда необходимо учитывать более одной независимой переменной.
Например, предположим, что нам нужно снова предсказать цены акций. В предыдущем разделе мы видели, что можем создать модель с датой в качестве независимой переменной и ценой акции в качестве зависимой переменной.
Теперь давайте рассмотрим еще один аспект, от которого будет зависеть цена акции: цена акции предыдущего дня.
Итак, наша функция регрессии теперь будет выглядеть так:
Цена(t+1) = a1 * Цена(t) + a2 * Дата(t+1) + c
Имеет смысл?
В приведенном выше уравнении мы предположили, что Цена (t) и Дата (t + 1) не зависят друг от друга.
Давайте попробуем понять, что это уравнение пытается сказать, взяв несколько примеров:
- a1 = O, a2 = 1,5, c = 1: в этом случае уравнение говорит о том, что цена (t+1) не зависит от цены акции предыдущего дня, а зависит только от даты, и это слишком положительно, т. е. цена увеличивается с увеличением даты.
- a1 = 1,5, a2 = O, c = 1: В этом случае уравнение говорит о том, что Цена (t+1) зависит только от цены предыдущего дня, и она также увеличивается.
- a1 = -1, a2 = 2, c = 1: в этом случае Цена (t + 1) зависит от обоих, но она уменьшается по мере увеличения Цены (t) и увеличивается с датой.
- a1 = ‹некоторое число›, a2 = ‹некоторое число›, c=0: В этом случае мы замечаем, что c = O и a1 и a2 могут быть любыми числами. Это просто означает, что когда Price(t) = O и Date(t+1) = O, Price(t+1) также равно O.
Приведенную выше модель можно обобщить, чтобы принять во внимание «n» независимых переменных. В этом случае уравнение будет иметь вид
Y = a1*X1 + a2*X2 + … + an*Xn
Теперь давайте посмотрим на код Python для линейной регрессии. Рассмотрим первый пример: (1,1), (2,2), (3,3), (100, 100), (20, 20)
из sklearn import linear_model
reg = linear_model.LinearRegression()
X = [[1], [2], [3], [100], [20]]
Y = [1 , 2,3,100,20]
reg.fit (X, Y)
print reg.coef_
Вывод: [1.]
Обратите внимание, что здесь мы предполагаем, что уравнение Y = m * X, а m вычисляется как «1».
Что делать дальше? Если вы знаете Python, выберите набор данных и попытайтесь выполнить регрессию, это может быть предсказание цен на жилье или цен на акции или даже времени, потраченного на чтение среднего поста;