Функция стоимости логистической регрессии не сходитсяPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Функция стоимости логистической регрессии не сходится

Сообщение Anonymous »

Я пытаюсь создать модель логистической регрессии с Python, используя метод градиентного спуска. Функция стоимости модели логистической регрессии я знаю < /p>
$$ j (\ mathbf {w}, b) =-\ frac {1} {m} \ sum_ {i = 1}^{M} \ Left [y_i \ log \ hat {y} _i+(1-y_i) \ log (1- \ x \ \ n_i} {y} {y}}}}}}} \ x \ x \ wright {y}} _i+(1-y_i) \ hat \ hat}}} (1-Y_I) \ $$
, где
$$ \ hat {y} _i = \ frac {1} {1+e^{-(\ mathbf {w} \ cdot \ mathbf {x} _i+b)} $$
и gradient funtiine of at of hos/stisined
и gradien of at of hop of at indined
и gradien orsined
и gradien orsined at of atsined
и gradien a's define of a's at of hardine}}. /> $$ \ frac {\ partial j} {\ partial w_j} = \ frac {1} {m} \ sum_ {i = 1}^{m} x_ {i, j} (\ hat {y} _i-y_i) $$ < /p>
$$ \ frac {\ partial j} \ partial j b} = \ frac {1} {m} \ sum_ {i = 1}^{m} (\ hat {y} _i-y_i) $$ < /p>
Тогда я использую набор Iris для создания модели BIRINATION Classification, вот мой код < /p>
import numpy as np
from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data
y = iris.target
mask = y < 2
X = X[mask]
y = y[mask]

m = X.shape[0] # the number of samples
n = X.shape[1] # the dimension of each sample

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

def cost(w: np.ndarray, b: np.float64) -> np.ndarray:
y_hat = sigmoid( X.dot(w) + b )
loss = -(y * np.log(y_hat) + (1 - y) * np.log(1 - y_hat))
return np.mean(loss)

def gradient(w: np.ndarray, b: np.float64) -> np.ndarray:
y_hat = sigmoid( X.dot(w) + b )
grad = np.zeros(n+1)
for j in range(n):
grad[j] = sum( (X[i,j] * (y_hat - y)) for i in range(m) ) / m
grad[n] = sum((y_hat - y) for i in range(m)) / m
return grad

vec = np.zeros(n+1)
lr = 0.01
for i in range(100000):
w = vec[:n]
b = vec[n]
print(i, cost(w,b))
vec -= lr * gradient(w,b)
< /code>
Оказывается, что независимо от того, сколько раз я итерации (даже в 300 тысяч), функция стоимости не будет сходиться к минимуму (она продолжает спускаться). В чем проблема?
Результат моего кода

Подробнее здесь: https://stackoverflow.com/questions/796 ... t-converge
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»