Преобразование градиентного спуска с регуляризацией L2 в код
Я застрял при написании этой строки кода - это действительно простая строка кода, которая меня сбивает с толку.
Я должен написать функцию градиентного спуска с параметрами-весами, X, y, train_len (определенными как количество строк X), альфа, learning_rate и num_iter.
Первая производная функции потерь по весу находится здесь. Я пытался написать код, подобный этому:
for i in range(0, n_iter):
weights = weights - learning_rate * (np.multiply(-2, np.dot(X.transpose(), y - np.dot(X, weights))) + np.multiply(2*alpha, weights))
return weights
К сожалению, я заканчиваю с nan, когда пытаюсь использовать функцию градиентного спуска.
1 ответ
for i in range(0, n_iter):
first_derivative = -2 * np.dot(X.T, y - np.dot(X, weights)) + 2 * alpha * weights
weights = weights - (learning_rate / train_len) * first_derivative
return weights
Оказывается, я забыл поделить на количество обучающих примеров.