Цель этой статьи — продемонстрировать различные подходы, которые мы можем использовать для построения одномерной линейной регрессии в python. Мы увидим формулы, используемые для каждого подхода, и сравним их предсказания.
Введение
Линейная регрессия — это алгоритмический метод поиска линейной зависимости между предиктором (независимым) и целевыми (зависимыми) переменными (т. е. x и y). Модель LR пытается соответствовать линии, которая определяет отношение между x и y.
Линейная регрессия с одним предиктором или независимой переменной называется одномерной линейной регрессией
Общее уравнение линейной регрессии:
Есть два способа найти эту связь.
- Нормальное уравнение
- Градиентный спуск
Нормальное уравнение
Есть два способа представить нормальную форму уравнения
- Матричная форма
- Ковариация/дисперсия
а. Матричная форма
б. Форма ковариации/дисперсии
Для задач одномерной регрессии m равно 1 (т.е. m=1)
Градиентный спуск
Любой вариант алгоритма градиентного спуска может быть использован для минимизации функции стоимости LR.
Функция гипотезы
Функция стоимости
Градиентный спуск
Подготовка данных
import pandas as pd import numpy as np import matplotlib.pyplot as plt import pathlib path = pathlib.Path.cwd()/’input’ data = pd.read_csv(f’{path}/ex1data1.txt’, names=[‘population’,’profit’]) data.head()
Преобразование переменных X и Y в массивы numpy (матрицы/векторы), а также добавление столбца 1 к X (поскольку значение X0 равно 1 в w0. x0, т.е. предполагается, что коэффициент перехвата равен 1)
X = np.column_stack([np.ones(len(data), dtype=np.float32),data['population'].values]) y = data['profit'].values
Матричная форма
Intercept: -3.895780878311868 Slope:1.1930336441895961 Profit Prediction for 6110.1 is 33937.73991050984 R Squared: 0.70203155378414 Adj. R-Squared: 0.6988950438239729 Std.Error: 3.023647930875245 F Static: 223.8257052264462 MeanAbsPercErr. : 2.194245398827008
Использование OLS в StatsModel
Использование Scikit-Learn
explained Var.: 0.7020315537841397 R Square: 0.7020315537841397 Mean Abs Error:2.194245398827005 Mean Squared Error:8.953942751950358
Градиентный спуск — Пакетный
theta: [-3.89577557 1.19303311] | cost: 4.476971375977743 | iteration: 15000
Ковариация и дисперсия
Intercept: -3.8957808783118653 Coefficient: 1.1930336441895943
Вывод
Как мы видели, все подходы линейной регрессии для прогнозирования абсолютно одинаковы (с полным кодом, доступным @ ядро Kaggle), и я оставляю профилирование подходов (кодов), чтобы найти оптимизированный подход для будущих целей. Другие сообщения из этой серии с использованием R и Pyspark
[Обновлен пост с вставками кода]
Ссылка:
https://sebastianraschka.com/faq/docs/closed-form-vs-gd.html