问题描述
我正在尝试实现正则逻辑回归的向量化版本。我发现a post解释了规范化的版本,但我不理解。
为简单起见,我将复制以下代码:
hx = sigmoid(X * theta);
m = length(X);
J = (sum(-y' * log(hx) - (1 - y') * log(1 - hx)) / m) + lambda * sum(theta(2:end).^2) / (2*m);
grad =((hx - y)' * X / m)' + lambda .* theta .* [0; ones(length(theta)-1,1)] ./ m ;
我了解Cost公式的第一部分,如果我没错,它可以表示为:
J = ((-y' * log(hx)) - ((1-y)' * log(1-hx)))/m;
问题是正则化术语。让我们详细一点:
尺寸:
X = (m x (n+1))
theta = ((n+1) x 1)
我不明白他为什么将theta
(theta_0
)的第一项放在等式之外,而在理论上,正则项是:
并且必须考虑所有thetas
对于梯度下降,我认为这个等式是等效的:
L = eye(length(theta));
L(1,1) = 0;
grad = (1/m * X'* (hx - y)+ (lambda*(L*theta)/m).
解决方法
我也是新来的...
在Matlab
中,索引从1开始,在数学索引中,索引从0开始(您提到的公式上的索引也从0开始)。
因此,理论上,theta的第一项也需要放在等式之外。
关于第二个问题,对了!这是一个等效的干净方程式!