Уравнение выборочной линейной среднеквадратической регрессии

Корреляция и регрессия

Линейное уравнение регрессии имеет вид y=bx+a+ε
Здесь ε — случайная ошибка (отклонение, возмущение).
Причины существования случайной ошибки:
1. Невключение в регрессионную модель значимых объясняющих переменных;
2. Агрегирование переменных. Например, функция суммарного потребления – это попытка общего выражения совокупности решений отдельных индивидов о расходах. Это лишь аппроксимация отдельных соотношений, которые имеют разные параметры.
3. Неправильное описание структуры модели;
4. Неправильная функциональная спецификация;
5. Ошибки измерения.
Так как отклонения εi для каждого конкретного наблюдения i – случайны и их значения в выборке неизвестны, то:
1) по наблюдениям xi и yi можно получить только оценки параметров α и β
2) Оценками параметров α и β регрессионной модели являются соответственно величины а и b, которые носят случайный характер, т.к. соответствуют случайной выборке;
Тогда оценочное уравнение регрессии (построенное по выборочным данным) будет иметь вид y = bx + a + ε, где ei – наблюдаемые значения (оценки) ошибок εi, а и b соответственно оценки параметров α и β регрессионной модели, которые следует найти.
Для оценки параметров α и β — используют МНК (метод наименьших квадратов).
Система нормальных уравнений.

Для наших данных система уравнений имеет вид:

10a + 356b = 49
356a + 2135b = 9485

Из первого уравнения выражаем а и подставим во второе уравнение
Получаем b = 68.16, a = 11.17

Уравнение регрессии:
y = 68.16 x — 11.17

1. Параметры уравнения регрессии.
Выборочные средние.

1.1. Коэффициент корреляции
Рассчитываем показатель тесноты связи. Таким показателем является выборочный линейный коэффициент корреляции, который рассчитывается по формуле:

Линейный коэффициент корреляции принимает значения от –1 до +1.
Связи между признаками могут быть слабыми и сильными (тесными). Их критерии оцениваются по шкале Чеддока:
0.1 Y фактором X весьма высокая и прямая.

1.2. Уравнение регрессии (оценка уравнения регрессии).

Линейное уравнение регрессии имеет вид y = 68.16 x -11.17
Коэффициентам уравнения линейной регрессии можно придать экономический смысл. Коэффициент уравнения регрессии показывает, на сколько ед. изменится результат при изменении фактора на 1 ед.
Коэффициент b = 68.16 показывает среднее изменение результативного показателя (в единицах измерения у ) с повышением или понижением величины фактора х на единицу его измерения. В данном примере с увеличением на 1 единицу y повышается в среднем на 68.16.
Коэффициент a = -11.17 формально показывает прогнозируемый уровень у , но только в том случае, если х=0 находится близко с выборочными значениями.
Но если х=0 находится далеко от выборочных значений x , то буквальная интерпретация может привести к неверным результатам, и даже если линия регрессии довольно точно описывает значения наблюдаемой выборки, нет гарантий, что также будет при экстраполяции влево или вправо.
Подставив в уравнение регрессии соответствующие значения x , можно определить выровненные (предсказанные) значения результативного показателя y(x) для каждого наблюдения.
Связь между у и x определяет знак коэффициента регрессии b (если > 0 – прямая связь, иначе — обратная). В нашем примере связь прямая.

1.3. Коэффициент эластичности.
Коэффициенты регрессии (в примере b) нежелательно использовать для непосредственной оценки влияния факторов на результативный признак в том случае, если существует различие единиц измерения результативного показателя у и факторного признака х.
Для этих целей вычисляются коэффициенты эластичности и бета — коэффициенты. Коэффициент эластичности находится по формуле:

Он показывает, на сколько процентов в среднем изменяется результативный признак у при изменении факторного признака х на 1%. Он не учитывает степень колеблемости факторов.
В нашем примере коэффициент эластичности больше 1. Следовательно, при изменении Х на 1%, Y изменится более чем на 1%. Другими словами — Х существенно влияет на Y.
Бета – коэффициент показывает, на какую часть величины своего среднего квадратичного отклонения изменится в среднем значение результативного признака при изменении факторного признака на величину его среднеквадратического отклонения при фиксированном на постоянном уровне значении остальных независимых переменных:

Т.е. увеличение x на величину среднеквадратического отклонения этого показателя приведет к увеличению среднего Y на 0.9796 среднеквадратичного отклонения этого показателя.

1.4. Ошибка аппроксимации.
Оценим качество уравнения регрессии с помощью ошибки абсолютной аппроксимации.

Поскольку ошибка больше 15%, то данное уравнение не желательно использовать в качестве регрессии.

1.6. Коэффициент детерминации.
Квадрат (множественного) коэффициента корреляции называется коэффициентом детерминации, который показывает долю вариации результативного признака, объясненную вариацией факторного признака.
Чаще всего, давая интерпретацию коэффициента детерминации, его выражают в процентах.
R 2 = 0.98 2 = 0.9596, т.е. в 95.96 % случаев изменения x приводят к изменению у . Другими словами — точность подбора уравнения регрессии — высокая. Остальные 4.04 % изменения Y объясняются факторами, не учтенными в модели.

xyx 2y 2x·yy(x)(yi— y ) 2(y-y(x)) 2(xi— x ) 2|y — yx|:y
0.37115.60.1376243.365.7914.11780.892.210.18640.0953
0.39919.90.1592396.017.9416.02559.0615.040.1630.1949
0.50222.70.252515.2911.423.04434.490.11760.09050.0151
0.57234.20.32721169.6419.5627.8187.3240.780.05330.1867
0.60744.5.36841980.2527.0130.20.9131204.490.03830.3214
0.65526.80.429718.2417.5533.47280.3844.510.02180.2489
0.76335.70.58221274.4927.2440.8361.5426.350.00160.1438
0.87330.60.7621936.3626.7148.33167.56314.390.00490.5794
2.48161.96.1726211.61402158.0714008.0414.662.820.0236
7.23391.99.1833445.25545.2391.916380.18662.543.381.81

2. Оценка параметров уравнения регрессии.
2.1. Значимость коэффициента корреляции.

По таблице Стьюдента с уровнем значимости α=0.05 и степенями свободы k=7 находим tкрит:
tкрит = (7;0.05) = 1.895
где m = 1 — количество объясняющих переменных.
Если tнабл > tкритич, то полученное значение коэффициента корреляции признается значимым (нулевая гипотеза, утверждающая равенство нулю коэффициента корреляции, отвергается).
Поскольку tнабл > tкрит, то отклоняем гипотезу о равенстве 0 коэффициента корреляции. Другими словами, коэффициент корреляции статистически — значим
В парной линейной регрессии t 2 r = t 2 b и тогда проверка гипотез о значимости коэффициентов регрессии и корреляции равносильна проверке гипотезы о существенности линейного уравнения регрессии.

2.3. Анализ точности определения оценок коэффициентов регрессии.
Несмещенной оценкой дисперсии возмущений является величина:

S 2 y = 94.6484 — необъясненная дисперсия (мера разброса зависимой переменной вокруг линии регрессии).
Sy = 9.7287 — стандартная ошибка оценки (стандартная ошибка регрессии).
S a — стандартное отклонение случайной величины a.

Sb — стандартное отклонение случайной величины b.

2.4. Доверительные интервалы для зависимой переменной.
Экономическое прогнозирование на основе построенной модели предполагает, что сохраняются ранее существовавшие взаимосвязи переменных и на период упреждения.
Для прогнозирования зависимой переменной результативного признака необходимо знать прогнозные значения всех входящих в модель факторов.
Прогнозные значения факторов подставляют в модель и получают точечные прогнозные оценки изучаемого показателя. (a + bxp ± ε) где
Рассчитаем границы интервала, в котором будет сосредоточено 95% возможных значений Y при неограниченно большом числе наблюдений и X p = 1 (-11.17 + 68.16*1 ± 6.4554)
(50.53;63.44)
С вероятностью 95% можно гарантировать, что значения Y при неограниченно большом числе наблюдений не выйдет за пределы найденных интервалов.

Индивидуальные доверительные интервалы для Y при данном значении X.
(a + bx i ± ε)
где

xiy = -11.17 + 68.16xiεiyminymax
0.37114.1119.91-5.834.02
0.39916.0219.85-3.8335.87
0.50223.0419.673.3842.71
0.57227.8119.578.2447.38
0.60730.219.5310.6749.73
0.65533.4719.4913.9852.96
0.76340.8319.4421.460.27
0.87348.3319.4528.8867.78
2.48158.0725.72132.36183.79

С вероятностью 95% можно гарантировать, что значения Y при неограниченно большом числе наблюдений не выйдет за пределы найденных интервалов.

2.5. Проверка гипотез относительно коэффициентов линейного уравнения регрессии.
1) t-статистика. Критерий Стьюдента.
Проверим гипотезу H0 о равенстве отдельных коэффициентов регрессии нулю (при альтернативе H1 не равно) на уровне значимости α=0.05.
tкрит = (7;0.05) = 1.895

Поскольку 12.8866 > 1.895, то статистическая значимость коэффициента регрессии b подтверждается (отвергаем гипотезу о равенстве нулю этого коэффициента).

Поскольку 2.0914 > 1.895, то статистическая значимость коэффициента регрессии a подтверждается (отвергаем гипотезу о равенстве нулю этого коэффициента).

Доверительный интервал для коэффициентов уравнения регрессии.
Определим доверительные интервалы коэффициентов регрессии, которые с надежность 95% будут следующими:
(b — tкрит Sb; b + tкрит Sb)
(68.1618 — 1.895 • 5.2894; 68.1618 + 1.895 • 5.2894)
(58.1385;78.1852)
С вероятностью 95% можно утверждать, что значение данного параметра будут лежать в найденном интервале.
(a — ta)
(-11.1744 — 1.895 • 5.3429; -11.1744 + 1.895 • 5.3429)
(-21.2992;-1.0496)
С вероятностью 95% можно утверждать, что значение данного параметра будут лежать в найденном интервале.

2) F-статистики. Критерий Фишера.
Проверка значимости модели регрессии проводится с использованием F-критерия Фишера, расчетное значение которого находится как отношение дисперсии исходного ряда наблюдений изучаемого показателя и несмещенной оценки дисперсии остаточной последовательности для данной модели.
Если расчетное значение с lang=EN-US>n-m-1) степенями свободы больше табличного при заданном уровне значимости, то модель считается значимой.

где m – число факторов в модели.
Оценка статистической значимости парной линейной регрессии производится по следующему алгоритму:
1. Выдвигается нулевая гипотеза о том, что уравнение в целом статистически незначимо: H0: R 2 =0 на уровне значимости α.
2. Далее определяют фактическое значение F-критерия:

где m=1 для парной регрессии.
3. Табличное значение определяется по таблицам распределения Фишера для заданного уровня значимости, принимая во внимание, что число степеней свободы для общей суммы квадратов (большей дисперсии) равно 1 и число степеней свободы остаточной суммы квадратов (меньшей дисперсии) при линейной регрессии равно n-2.
4. Если фактическое значение F-критерия меньше табличного, то говорят, что нет основания отклонять нулевую гипотезу.
В противном случае, нулевая гипотеза отклоняется и с вероятностью (1-α) принимается альтернативная гипотеза о статистической значимости уравнения в целом.
Табличное значение критерия со степенями свободы k1=1 и k2=7, Fkp = 5.59
Поскольку фактическое значение F > Fkp, то коэффициент детерминации статистически значим (Найденная оценка уравнения регрессии статистически надежна).

Проверка на наличие автокорреляции остатков.
Важной предпосылкой построения качественной регрессионной модели по МНК является независимость значений случайных отклонений от значений отклонений во всех других наблюдениях. Это гарантирует отсутствие коррелированности между любыми отклонениями и, в частности, между соседними отклонениями.
Автокорреляция (последовательная корреляция) определяется как корреляция между наблюдаемыми показателями, упорядоченными во времени (временные ряды) или в пространстве (перекрестные ряды). Автокорреляция остатков (отклонений) обычно встречается в регрессионном анализе при использовании данных временных рядов и очень редко при использовании перекрестных данных.
В экономических задачах значительно чаще встречается положительная автокорреляция, нежели отрицательная автокорреляция. В большинстве случаев положительная автокорреляция вызывается направленным постоянным воздействием некоторых неучтенных в модели факторов.
Отрицательная автокорреляция фактически означает, что за положительным отклонением следует отрицательное и наоборот. Такая ситуация может иметь место, если ту же зависимость между спросом на прохладительные напитки и доходами рассматривать по сезонным данным (зима-лето).
Среди основных причин, вызывающих автокорреляцию, можно выделить следующие:
1. Ошибки спецификации. Неучет в модели какой-либо важной объясняющей переменной либо неправильный выбор формы зависимости обычно приводят к системным отклонениям точек наблюдения от линии регрессии, что может обусловить автокорреляцию.
2. Инерция. Многие экономические показатели (инфляция, безработица, ВНП и т.д.) обладают определенной цикличностью, связанной с волнообразностью деловой активности. Поэтому изменение показателей происходит не мгновенно, а обладает определенной инертностью.
3. Эффект паутины. Во многих производственных и других сферах экономические показатели реагируют на изменение экономических условий с запаздыванием (временным лагом).
4. Сглаживание данных. Зачастую данные по некоторому продолжительному временному периоду получают усреднением данных по составляющим его интервалам. Это может привести к определенному сглаживанию колебаний, которые имелись внутри рассматриваемого периода, что в свою очередь может служить причиной автокорреляции.
Последствия автокорреляции схожи с последствиями гетероскедастичности: выводы по t- и F-статистикам, определяющие значимость коэффициента регрессии и коэффициента детерминации, возможно, будут неверными.

Обнаружение автокорреляции

1. Графический метод
Есть ряд вариантов графического определения автокорреляции. Один из них увязывает отклонения ei с моментами их получения i. При этом по оси абсцисс откладывают либо время получения статистических данных, либо порядковый номер наблюдения, а по оси ординат – отклонения ei (либо оценки отклонений).
Естественно предположить, что если имеется определенная связь между отклонениями, то автокорреляция имеет место. Отсутствие зависимости скоре всего будет свидетельствовать об отсутствии автокорреляции.
Автокорреляция становится более наглядной, если построить график зависимости ei от ei-1.

29. Линейная регрессия

Рассмотрим двумерную случайную величину (X, Y), где X и Y – зависимые случайные величины.

Представим приближенно одну случайную величину как функцию другой. Точное соответствие невозможно. Будем считать, что эта функция линейная.

Для определения этой функции остается только найти постоянные величины a и b.

Определение. Функция G(X) называется Наилучшим приближением случайной величины Y в смысле метода наименьших квадратов, если математическое ожидание

принимает наименьшее возможное значение. Также функция G(X) называется Среднеквадратической регрессией Y на X.

Теорема. Линейная средняя квадратическая регрессия Y На Х вычисляется по формуле:

В этой формуле Mx=M(X), My=M(Y), коэффициент корреляции величин Х И Y.

Величина называется Коэффициентом регрессии Y На Х.

Прямая, уравнение которой

,

Называется Прямой сренеквадратической регрессии Y На Х.

Величина называется Остаточной дисперсией Случайной величины Y относительно случайной величины Х. Эта величина характеризует величину ошибки, образующейся при замене случайной величины Y линейной функцией G(X)=aХ + B.

Видно, что если R=±1, то остаточная дисперсия равна нулю, и, следовательно, ошибка равна нулю и случайная величина Y точно представляется линейной функцией от случайной величины Х.

Прямая среднеквадратичной регрессии Х на Y определяется аналогично по формуле:

Прямые среднеквадратичной регрессии пересекаются в точке (Тх, ту), которую называют Центром совместного распределения Случайных величин Х И Y.

Линейные модели. Регрессия.

Идея этого поста в том, что бы разобрать одно из заданий курса машинного обучения на Coursera.org по линейной регрессии. Под словом разобрать я подразумеваю понимание постановки и решения задачи. Я не буду углубляться в тонкие детали посвященные машинному обучению, всевозможной настройке алгоритмов и тому подобное. Естественно, разобранный пример можно (и нужно) решать другим способом и многие представленные функции нельзя использовать “на продакшине”. Представленный здесь код скорее нужен для базового понимания работы алгоритма линейной регрессии. Итак, начнем.

Итак, работать будем с данными Advertising.csv, что представляют собой набор данных из книги Introduction to Statistical Learning. Данные нужно загрузить в Pandas Dataframe, что очень просто в python. Так как в таблице разделитель это запятая и заголовок уже присудствует, то никаких дополнительных параметров указывать не надо.

Далее, нужно посмотреть на первые 5 записей и статистику по признакам. Первые 5 записей показать очень просто — нужно вызвать метод head у объекта DataFrame. В качестве аргумента можно передать число строк, которые нужно показать, которое по умолчанию равно 5.

Этим можно увидеть, что данные считались правильно и ожидаемые значения стоят в каждой колонке. Вот насчет статистики, тут уже интереснее. Для начала, посмотрим сколько у нас вообще данных с помощью команды shape :

200 строк и 4 переменные — для статистики это конечно маловато, но линейные (и не только) модели построить можно. Метод, который мне нравится для того, что бы наглядно увидеть возможную статистическую зависимость в данных — построение парных графиков. Сделать это удобно с помощью библиотеки https://seaborn.pydata.org в которой есть метод pairplot который строит попарные зависимости признаков из датасета (признаки — это колонки).

На диагонали показы распределения соответствующего признака, например, сколько всего было Sales каждого вида. Из данных графиков уже можно сделать несколько интересных выводов по данным, касательно того, как влияет реклама в газетах, радио и рекламе на продажи. Видно, что меньше всего виляет реклама в газетах, потом в радио и наконец больше всего влияет реклама на ТВ. Далее, можно посмотреть корреляцию данных с помощью простого метода .corr() в котором можно указать какую корреляцию считать — по умолчанию это корреляция пирсона, которая показывает существование линейной зависимости между величинами. Корреляция рекламы на ТВ и продажами порядка 78 процентов, далее идет радио с 57 процентами ну и наконец газеты с 22 процентами.

Далее, в задании хотят отдельно выделить матрицу признаков и целевую переменную в отдельные массивы и затем их пронумеровать. Я же хочу рассмотреть другой подход с которым нормировка получается такой же простой но и остается структура данных. Существует несколько способов нормировки данных и я хочу рассмотреть два из них: нормировать на среднее и дисперсию, и нормировать на отрезок [0, 1]. Рассмотрим сначала первый вариант:

Видно, что величины уже лишены большого разброса (от 17 до 250 для рекламы в ТВ). Вообще, для выполнения такой нормировки есть специальный класс в пакете sklearn.preprocessing .

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

Добавьте к матрице X столбец из единиц, используя методы hstack, ones и reshape библиотеки NumPy. Вектор из единиц нужен для того, чтобы не обрабатывать отдельно коэффициент w0 линейной регрессии.

Следующим пунктом нас просят добавить еще один столбец в матрицу признаков и заполнить его единицами, что делается элементарно.

Реализуйте функцию mserror — среднеквадратичную ошибку прогноза. Она принимает два аргумента — объекты Series y (значения целевого признака) и y_pred (предсказанные значения). Не используйте в этой функции циклы — тогда она будет вычислительно неэффективной.

Нужно реализовать среднеквадратичную ошибку не используя циклы в питоне (Это действительно логично делать без циклов). Нам нужно просуммировать сумму квадратов отклонения предсказанного значения от реального и поделить все на количество данных. Так и напишем:

Конечно же в питоне уже есть готовая реализация подсчета среднеквадратичной ошибки, и выглядит он просто:

что дает нам такое же значение ошибки. Едем далее.

Какова среднеквадратичная ошибка прогноза значений Sales, если всегда предсказывать медианное значение Sales по исходной выборке? Запишите ответ в файл ‘1.txt’.

Пока все просто: вычисляем медианное значение продаж (это же 50 персентиль) и считаем среднеквадратичное отклонение:

То, что ошибка получилась маленькая — 1.041286 — ничего не значит, так как мы пронумеровали данные. Эту ошибку нужно сравнивать со среднеквадратичной ошибкой, полученной другим методом.

Реализуйте функцию normal_equation, которая по заданным матрицам (массивам NumPy) X и y вычисляет вектор весов w согласно нормальному уравнению линейной регрессии.

Так как задача линейной регрессии можем быть решена аналитически, то это аналитическое решение можно явно посчитать, что сейчас и сделаю. Итак, мы решаем уравнение $\vec<\textbf>* \vec<\textbf> \textbf <=>\vec<\textbf>$ которое необходимо помножить на $\vec<\textbf>^T$ что бы матрица перед весами была квадратная и можно было искать обратную матрицу (но не всегда это возможно). Т.е. $\vec^\cdot\vec\cdot \vec = \vec^T\cdot\vec$ и матрица $\vec^T\cdot\vec$ теперь квадратная.

Для решения уравнений вида $A\cdot x =b$ в питоне есть специальная функция np.linalg.solve которой нужно указать матрицу А и свободный вектор b. В нашем случае матрица A это $\vec^T\cdot\vec$ а свободный вектор — $\vec^T\cdot\vec$. Таким образом, можно реализовать нашу функцию:

Вспомним корреляцию между признаками и видно, что коэффициенты очень походи на корреляцию. Теперь посчитаем какую ошибку мы получили, если будет предсказывать продажи через линейную модель. Для этого надо вектор признаков умножить на вектор весов. Реализуем сразу функцию для расчета предсказаний

Значение ошибки уже меньше, чем предсказания по среднему на порядок. Но на самом деле это еще не предел.

Какие продажи предсказываются линейной моделью с весами, найденными с помощью нормального уравнения, в случае средних инвестиций в рекламу по ТВ, радио и в газетах? (то есть при нулевых значениях масштабированных признаков TV, Radio и Newspaper).

Действительно, при такой нормировке данных, среднее значение будет нуль, именно по этому вектор признаков из всех нулей — это вектор признаков средних значений признаков.

Действительно, получилось так, что при средних значениях признаков, целевая переменная тоже принимает среднее значение. Едем дальше к градиентному спуску.

5. Напишите функцию stochastic_gradient_step, реализующую шаг стохастического градиентного спуска для линейной регрессии. Функция должна принимать матрицу X, вектора y и w, число train_ind — индекс объекта обучающей выборки (строки матрицы X), по которому считается изменение весов, а также число $\eta​$ (eta) — шаг градиентного спуска (по умолчанию eta=0.01). Результатом будет вектор обновленных весов. Наша реализация функции будет явно написана для данных с 3 признаками, но несложно модифицировать для любого числа признаков, можете это сделать.

Давайте сначала реализуем шаг градиентного спуска для каждой переменной, а затем запишем реализацию в общем. Но сначала опять вспомним, как решается задача линейной регрессии.

Идея линейной регрессии заключается в том, что мы предполагаем, что наша целевая переменная, определенная на всем числовом пространстве, представима в виде линейной комбинации признаков $\tilde = (\vec, \vec)$ c весами $\vec$. Зная, как представлен наш алгоритм для получения предсказания для целевой переменной мы можем записать функционал квадратичной ошибки:

\[Q(\vec, \vec, \vec) = \frac<1>\sum_^(\tilde_i — y_i)^2 \rightarrow \min_\]

Так как функционал мы будем минимизировать по $\vec$ то нам нужно найти такой способ изменения весов, что бы функционал ошибки уменьшался (по сути $\vec$ это единственный параметр функционала, на который мы можем влиять и этот параметр напрямую влияет на наше решение и мы его оптимизируем). И как раз один из таких способов изменения весов с целью минимизации функционала является градиент. Градиентом функции является вектор, составленный из частных производных по вектору переменных (в данном случае $\vec$):

Градиент функционала ошибки показывает направление наискорейшего роста ошибки по параметрам весов, значит нам нужно менять веса в обратную сторону градиента:

\[\vec = \vec — \eta*\bigtriangledown Q (\vec)\]

тут $\eta$ — это гиперпараметр обучения, который определяет шаг, с которым веса будут меняться. Идея в том, что градиент функции может быть очень большим и поэтому локальный минимум можно пропустить, и “болтаться” вокруг него долго. Поэтому если уменьшить шаг градиента, то можно быстрее попасть в локальный минимум. Параметр $\eta$ как правило берут в диапазоне (0.01, 0.001, 0.1). Для случая линейной регрессии градиент функции потерь можно легко посчитать (векторно и покомпонентно):

\[\bigtriangledown Q (\vec) = \frac<2>\sum_^(\tilde_i — y_i)*\vec,\\ \bigtriangledown Q (\vec) _i = \frac<2>\sum_^(\tilde_i — y_i)*x_i.\]

Таким образом, выражение для обновления весов получается в виде

Но, когда у нас очень большая матрица с данными ($N$ велико), то на каждом шаге пересчитывать все значения не очень эффективно, поэтому используют так называемую стохастическую реализацию градиентного спуска в котором мы суммирование по всем данным заменяем на случайный объект из нашей матрицы признаков:

где $k$ — случайный индекс из матрицы признаков.

Все, теперь можно написать реализацию шага градиентного спуска.

Или компактная запись

6. Напишите функцию stochastic_gradient_descent, реализующую стохастический градиентный спуск для линейной регрессии. Функция принимает на вход следующие аргументы:

  • X — матрица, соответствующая обучающей выборке
  • y — вектор значений целевого признака
  • w_init — вектор начальных весов модели
  • eta — шаг градиентного спуска (по умолчанию 0.01)
  • max_iter — максимальное число итераций градиентного спуска (по умолчанию 10000)
  • max_weight_dist — максимальное евклидово расстояние между векторами весов на соседних итерациях градиентного спуска, при котором алгоритм прекращает работу (по умолчанию 1e-8)
  • seed — число, используемое для воспроизводимости сгенерированных псевдослучайных чисел (по умолчанию 42)
  • verbose — флаг печати информации (например, для отладки, по умолчанию False)

На каждой итерации в вектор (список) должно записываться текущее значение среднеквадратичной ошибки. Функция должна возвращать вектор весов $w$, а также вектор (список) ошибок.

У нас есть все параметры, что бы рассчитать новый вектор весов, ошибку функционала и принять решение — нужно ли дальше продолжать расчет.

Обучим нашу модель

Построим график как убывает среднеквадратичная ошибка

Интересно отметить, что значения получились почти такие же, как и в случае решения линейных уравнений. Примерно такой же получается ошибка: 0.10235771 против 0.102275.

Какие можно сделать выводы?

На самом деле все достаточно просто:

  • линейные модели могут предсказывать нам целевую переменную с достаточно хорошей точностью и просто
  • на больших объемах данных стохастический градиентный спуск даст нам хорошее решение за небольшие вычислительные ресурсы

Но с другой стороны, линейные модели редко где используются. А когда понадобится использовать линейные модели, то конечно лучше воспользоваться готовой реализацией, скажем из пакета sklearn


источники:

http://matica.org.ua/metodichki-i-knigi-po-matematike/kurs-vysshei-matematiki-4/29-lineinaia-regressiia

http://artemarakcheev.com/2017-12-31/linear_regression