Линейная регрессия — это старейший, простой и широко используемый алгоритм машинного обучения с учителем для прогнозного анализа.

Каждый 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 является дискретным) .

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

  1. Простая линейная регрессия.
  2. Объяснение того, как определить «наиболее подходящую связь».
  3. Множественная линейная регрессия.
  4. Пример базового кода.

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

Простая линейная регрессия (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) не зависят друг от друга.

Давайте попробуем понять, что это уравнение пытается сказать, взяв несколько примеров:

  1. a1 = O, a2 = 1,5, c = 1: в этом случае уравнение говорит о том, что цена (t+1) не зависит от цены акции предыдущего дня, а зависит только от даты, и это слишком положительно, т. е. цена увеличивается с увеличением даты.
  2. a1 = 1,5, a2 = O, c = 1: В этом случае уравнение говорит о том, что Цена (t+1) зависит только от цены предыдущего дня, и она также увеличивается.
  3. a1 = -1, a2 = 2, c = 1: в этом случае Цена (t + 1) зависит от обоих, но она уменьшается по мере увеличения Цены (t) и увеличивается с датой.
  4. 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, выберите набор данных и попытайтесь выполнить регрессию, это может быть предсказание цен на жилье или цен на акции или даже времени, потраченного на чтение среднего поста;