我已经编写了以下用于逻辑回归的向量化形式的梯度下降,使用了矩阵转置,并且运行良好
%grad(1) = (1/m)*X(:,1)'*(h-y);%grad(2:end) = (1/m)*(X(:,2:end)'*(h-y)) + (lambda/m)*theta(2:end);
但是当我尝试不使用矩阵转置时,只有在向grad(2:end)
添加+ (lambda/m)*theta(2:end)
时才会出现矩阵操作错误
%grad(1) = (1/m)*sum((h-y).*X(:,1));%grad(2:end) = ((1/m)*sum((h-y).*X(:,2:end))) + (lambda/m)*theta(2:end);
回答:
实际上,我现在已经弄明白了,应该是
grad(2:end) = (1/m)*sum((h-y).*X(:,2:end))’ + (lambda/m)*theta(2:end);