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

Скажем, я даю вам следующую загадку:

Учитывая следующие значения 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).

Модель выглядит примерно так:
Price = m * Date + c

Уравнение напоминает линию с наклоном m и точкой пересечения оси y.

В этом суть SLR. Учитывая независимую и зависимую переменные, мы подгоняем уравнение линии для выполнения прогнозов на основе невидимых данных.

Примечание. Дата считается целым числом. Считается это следующим образом - дата, когда вы начали, считается O, следующий день - 1 и так далее.

Объясняя, как определить «наиболее подходящие отношения».

Теперь мы знаем, что такое SLR, но как узнать, каковы значения «m» и «c». Существует бесконечное множество значений для выбора «m» и «c», но какие значения являются наиболее подходящими?

Ответ на вопрос, какие значения выбрать, очень интуитивно понятен. Учитывая, что у нас есть некоторые X и Y (например, даты и цены акций), наиболее подходящими значениями 'm' и 'c' являются те, которые дают наименьшую ошибку для всех заданных X и Y.

Вышеупомянутая терминология также определяется как Ошибка. Например, учитывая отношение Y = m * X + c, для всех X, которые вы видели, спрогнозируйте значения Y, 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), error (t))

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

Множественная линейная регрессия

Множественная линейная регрессия (MLR) относится к определению отношения между независимыми и зависимыми переменными, когда необходимо учитывать более одной независимой переменной.

Например, предположим, что нам нужно снова спрогнозировать цены на акции. Как мы видели в предыдущем разделе, мы можем создать модель с датой в качестве независимой переменной и ценой акций в качестве зависимой переменной.

Теперь давайте рассмотрим еще один аспект, от которого будет зависеть цена акций: цена акции в предыдущий день.

Итак, наша функция регрессии теперь будет выглядеть так:
Цена (t + 1) = a1 * Цена (t) + a2 * Дата (t + 1) + c

Имеет смысл?

В приведенном выше уравнении мы предположили, что Price (t) и Date (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)
печать reg.coef_

Вывод: [1.]

Обратите внимание, что здесь мы предполагаем, что уравнение Y = m * X и m вычисляется как «1».

Что делать дальше? Если вы знаете Python, выберите набор данных и попытайтесь выполнить регрессию, это может быть прогноз цен на жилье или акций или даже время, потраченное на чтение среднего сообщения;)

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