向量化的正则Logistic约束

问题描述

我正在尝试实现正则逻辑回归的向量化版本。我发现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)

我不明白他为什么将thetatheta_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的第一项也需要放在等式之外。

关于第二个问题,对了!这是一个等效的干净方程式!