Logisti c регрессия с использованием градиентного спуска - PullRequest
0 голосов
/ 15 января 2020

Приведенные данные о результатах студенческого экзамена и наша цель состоит в том, чтобы предсказать, будет ли студент сдавать или не сдавать, исходя из количества спящих часов и часов, потраченных на обучение. У нас есть две функции (часы сна, часы обучения) и два класса: пройденный (1) и неудачный (0).

Studied Slept Passed
4.85    9.63  1
8.62    3.23  0
5.43    8.23  1
9.21    6.34  0

Может кто-нибудь объяснить, как рассчитать первые две итерации стоимости ??

1 Ответ

0 голосов
/ 15 января 2020

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

p = sigmoid(x1*w1 + x2*w2 + b)

, где x1 и x2 - изученные и спящие входные значения. w1 и w2 - веса вашей модели, а b - вектор смещения. Это вернет значение от 0 до 1.

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

Стоимость для этой итерации, если вы используете двоичную кросс-энтропию, составит:

−(y*log(p) + (1−y)*log(1−p))

, где y - истинное значение входных данных образец. Если мы возьмем первую входную выборку в ваших тренировочных данных, истинное значение будет 1.

Следовательно, ваша стоимость , J, равна:

J = -(1*log(p) + (1-1)*log(1-p))
  = -log(p)

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

Затем вы обновите параметры модели следующими уравнениями:

wn = wn - alpha * dJ/dwn
b  = b  - alpha * dJ/db

, где n = 1, 2 и alpha - скорость обучения вашей модели.

Для следующей итерации вы просто выполните тот же процесс с другим образцом из набора данных.

...