logisti c регрессия python понимание сходимости градиентного спуска. (моя стоимость просто увеличивается) - PullRequest
0 голосов
/ 17 января 2020

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

Мой вопрос, когда речь идет о линейной регрессии forumla sum (h (x) - y), где y - целевое значение для данных, то есть X = рост кого-либо, а Y - тот вес для этой высоты

, когда дело доходит до регрессии логистики c, мы присваиваем Y значению 0 или 1 или истинному целевому значению? например, данные x = высота и y будет просто 0 или 1, который мы назначим для этого значения? для формулы sum (h (x) - y)?

Кажется, я не могу получить снижение стоимости, и более того, как бы я даже проверил данные, исходя из того, что, как я понимаю, сигмоидальная функция позволит мне предсказать данные, если это 1 или 0

import numpy as np
import matplotlib.pyplot as plt

np.seterr(divide='ignore')

learning_rate = 0.0001

epoch = 10

x = np.matrix([[1, 3, 1.5],
               [1, 2, 1],
               [1, 4, 1.5],
               [1, 3, 1],
               [1, 3.5, .5],
               [1, 2, .5],
               [1, 5.5, 1],
               [1, 1, 1]]).T

y = np.matrix([1, 0, 0, 0, 1, 0, 1, 1]).T
theta = np.matrix([0, 0, 0])
m = len(x)



def sigmoid(x):
    return 1 / (1 + np.exp(-np.dot(theta, x)))


for _ in range(epoch):
    cost = -(1 / m)* np.sum(np.dot(y, np.log(sigmoid(x))) + np.dot((1 - y), np.log(1 - sigmoid(x))))
    derivative = theta - learning_rate * np.dot((1 / m), np.dot(x, sigmoid(x) - y).T)
    theta = sum(derivative)
    print(cost)
...