Прежде чем мы погрузимся в настоящую технику линейной регрессии, давайте рассмотрим ее интуитивно.
Скажем, я даю вам следующую загадку:
Учитывая следующие значения 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).
Модель выглядит примерно так:
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) не зависят друг от друга.
Давайте попробуем понять, что это уравнение пытается сказать, на нескольких примерах:
- 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)
печать reg.coef_
Вывод: [1.]
Обратите внимание, что здесь мы предполагаем, что уравнение Y = m * X и m вычисляется как «1».
Что делать дальше? Если вы знаете Python, выберите набор данных и попытайтесь выполнить регрессию, это может быть прогноз цен на жилье или акций или даже время, потраченное на чтение среднего сообщения;)
Также попробуйте использовать регрессию в этом соревновании Kaggle: держу пари, вы будете поражены тем, чего можно достичь с помощью базовой техники регрессии.