我有这个正则化的最小二乘公式:
和梯度:
我想使用梯度下降来找到向量 w。我正在使用matlab。我虽然可以进行两个循环并计算 ws,但我的解决方案非常不稳定,我需要使用非常小的学习项 a (a=0.000000001) 才能获得非 NAN 解决方案。但是我认为当 lambda 很大但不会发生时 w 的值应该趋向于 0...我的数据集是矩阵 X (400x64) 和 y (400x1)。这是包含类标签的两类问题(1 类为+1,2 类为-1)。
这是我的matlab代码:
function [ w ] = gradDecent( X, Y, a, lambda, iter )
% GRADIENT DESCENT
w = zeros(size(X(1,:)))';
for it=1:iter % For each iteration
for k = 1:size(w,1)
s = 0;
for i = 1:size(X,1)
s = s + (X(i,:)*w - Y(i))*X(i,k);
end
w(k) = w(k) - a*(2*s+2*lambda*w(k));
end
end
我犯了一些愚蠢的错误吗?