Функция затрат логистической регрессии, возвращающая несовместимые значения - PullRequest
0 голосов
/ 21 ноября 2018

В настоящее время я пишу функцию логистической регрессии в Python 3 с использованием Numpy и Google Colab Laboratory.В то время как все остальное работает, моя функция стоимости возвращает множество различных значений.При построении графика это выглядит так: график .

theta = np.zeros((3,1))
def sigmoid(z):
  g = (1 / (1 + np.exp(-z)))
  return g

def costFunction():
  Hx = sigmoid(np.dot(X,theta));
  mul0 = ((-y) * np.log(Hx))
  mul1 = ((1 - y) * np.log(1 - (Hx)))
  J = (1 / m) * np.sum(mul0 - mul1)
  return J

X - это матрица из 3 столбцов, как и y.m - количество обучающих примеров.Полный код на https://colab.research.google.com/drive/128biX9f0LywzBKkgkIcjGGcagkZH3fAC

1 Ответ

0 голосов
/ 21 ноября 2018

Функция логистических потерь для меток в {-1, 1} равна

np.log(1. + np.exp(-y * X.dot(theta)))

Ее градиент равен

X.T.dot(-y * sigmoid(- y * X.dot(w))

Для градиентного спуска обратное значение шага должно быть norm(X, ord=2) ** 2 / 2

...