Цель этой статьи — продемонстрировать различные подходы, которые мы можем использовать для построения одномерной линейной регрессии в 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