Градиентный спуск для ортогональной линейной регрессии с нуля в Numpy Python - PullRequest
0 голосов
/ 28 февраля 2020

enter image description here

Я хотел получить градиентный спуск с нуля, используя функцию ошибки для ортогональной линейной регрессии. Чтобы я мог написать python код в NumPy. Однако я не уверен насчет функции ошибки в этом.

y = W0 + W1 * X

Может кто-нибудь помочь мне получить это !! Заранее спасибо.

1 Ответ

0 голосов
/ 28 февраля 2020

Допустим, у вас есть y = m*x + p с параметрами (m; p), которые вы настраиваете.

Когда вы пропускаете образец наблюдения X из X 'через вашу модель, вы получаете вектор Y'. Затем вы можете вычислить вашу потерю, скажем среднеквадратичную ошибку, как e = 1 / n * sum_i (Yi - Yi')²', где Y - это координаты y, связанные с координатами x в X.

Теперь мы хотим дифференцировать е относительно ваших параметров:

  • de / dm = -2 / sigma² * sum_i ( Xi' * ( Yi - p - m * Xi' ) )
  • de / dp = -2 / sigma² * sum_i ( Yi - p - m * Xi' )

Затем вы хотите минимизировать e благодаря этому градиенту:

  • m <- m - lr * de / dm
  • p <- p - lr * de / dp

При скорости обучения lr.

Выполняйте математику самостоятельно хотя, на всякий случай, я допустил ошибку.

РЕДАКТИРОВАТЬ: я реализовал это быстро, используя эти формулы, и математика кажется в порядке (по крайней мере, она быстро сходится к решению)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...