我在学习过程中遇到了两个相似的Octave语句,其中一个语句无法提供正确的结果。这些代码的目的是计算正则化逻辑回归的成本函数。
J=(1/m)*sum(-y'*log(h)-(1-y')*log(1-h)) + (lambda/2*m)*sum(theta(2:end).^2); %错误的
J = (sum(-y' * log(h) - (1 - y')*log(1 - h)) / m) + lambda *sum(theta(2:end).^2)/ (2*m); %正确的
请有人告诉我这两个语句之间的区别。
回答:
在第一个语句中,你有lambda/2*m
,这实际上是(lambda/2)*m
。而在第二个语句中,你有lambda/(2*m)
。所以在第一个表达式中,你是在乘以m
,而在第二个表达式中,你是在除以m
。另外,请注意第一个表达式在结尾处缺少一个括号。