繁体   English   中英

Logisitic回归成本函数

[英]Logisitic Regression Cost Function

function [J, grad] = costFunction(theta, X, y)
m = length(y);
h = sigmoid(X*theta);
sh = sigmoid(h);
grad = (1/m)*X'*(sh - y);
J = (1/m)*sum(-y.*log(sh) - (1 - y).*log(1 - sh));

end

我正在尝试计算逻辑回归的成本函数。 有人可以告诉我为什么这不准确?

在此输入图像描述

更新:Sigmoid功能

function g = sigmoid(z)

g = zeros(size(z));
g = 1./(1 + exp(1).^(-z));

end

正如Dan所说,你的costFunction两次调用sigmoid。 首先,它在X*theta上执行sigmoid函数; 然后它再次对sigmoid(X*theta)的结果执行sigmoid函数。 因此, sh = sigmoid(sigmoid(X*theta)) 您的成本函数应该只调用一次sigmoid函数。

看到下面的代码,我删除了sh变量,并在其他地方用h替换它。 这导致sigmoid函数只被调用一次。

function [J, grad] = costFunction(theta, X, y)
m = length(y);
h = sigmoid(X*theta);
grad = (1/m)*X'*(h - y);
J = (1/m)*sum(-y.*log(h) - (1 - y).*log(1 - h));

end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM