Matlab 避免物流挤压功能的无限性
我正在实现逻辑回归函数的一部分,但除了-inf之外,似乎无法获取任何其他内容。不确定如何获取其他内容,因为如果有1输出,那么日志(1-1)会将其转换为-inf 有什么想法吗Matlab 避免物流挤压功能的无限性,matlab,machine-learning,Matlab,Machine Learning,我正在实现逻辑回归函数的一部分,但除了-inf之外,似乎无法获取任何其他内容。不确定如何获取其他内容,因为如果有1输出,那么日志(1-1)会将其转换为-inf 有什么想法吗 % Calculates error based on X, Y, theta function error = empRisk(X,Y, theta) n = length(X); error = 0; for i=1: n y = Y(i,:); x = X(i,:
% Calculates error based on X, Y, theta
function error = empRisk(X,Y, theta)
n = length(X);
error = 0;
for i=1: n
y = Y(i,:);
x = X(i,:);
binLoss = classify(theta,x);
part1 = y-1;
part2 = log(1-binLoss);% -Inf if 1-1??
part3 = y*(log(binLoss));
error = error + ((part1*part2)-part3);
end
error = error*(1/n);
end
% Implements the classification function
function value = classify(theta, x)
z = dot(theta,x);
result = (1/(1+exp(-z)));
% Output 0,1 based on result
if result >= 0.5
value = 1;
else
value = 0;
end
end
以下是empRisk应该做的公式:你有点概念上的问题,当你的分类值等于你的目标值时,它基本上是0,否则是1(你在训练样本中取平均值) 如果你说的是,那就完全不同了。在这种情况下,您不希望在
classify()
函数中使用最后的if
语句。因此,您应该返回结果
经验风险损失(0-1损失)在
theta
中是非凸的,而逻辑损失在theta
中是凸的,这是人们使用它的原因之一,因为即使在大问题中,找到正确的theta
在计算上也是可行的。经验风险损失并非如此。这听起来更像是一个算法问题,而不是一个编程问题。你的分类功能正确吗?可能binLoss
应该是result
变量?您能否提供一个链接,说明您试图实现的算法。