Градиентный спуск для одномерной линейной регрессии

Итак, продолжая свой предыдущий пост о простой или одномерной линейной регрессии, в этом посте я попытаюсь реализовать ее с помощью Python и NumPy.

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

Таким образом, в основном метод работает так, что он принимает значения X и Y, две начальные теты, альфа (или скорость обучения) и количество итераций, для которых вы хотите, чтобы функция выполнялась.

Обратите внимание, что в большинстве случаев вам нужно настроить все переменные, кроме X и Y, чтобы получить более точный результат.

Итак, в начале метода я перенес свои значения X из матрицы 1 на N в матрицу N на 1. После этого я добавил перед матрицей дополнительный столбец. Этот новый столбец заполнен значениями 1. Таким образом, конечным результатом будет матрица N на 2, что-то вроде этого

# What my X matrix looks like after I transposed it and added new column with only the value of 1s
[[1, 0]
[1, 0.1]
[1, 0.2]
[1, 0.3]
[1, 0.4]
[1, 0.5]
[1, 0.6]
[1, 0.7]
[1, 0.8]
[1, 0.9]
[1, 1]]

После этого я также помещаю свои исходные тэты в матрицу и транспонирую ее в матрицу 2 на 1, что-то вроде этого:

[[theta_0]
[theta_1]]

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

После вычисления прогнозируемого значения для каждого значения X метод затем вычисляет ошибку путем вычитания прогнозируемого значения с фактическим парным значением (Y).

Затем я рассчитываю новое значение теты, формула основана на Курсе по машинному обучению профессора Эндрю Нг.

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

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