Matlab 避免物流挤压功能的无限性

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,:

我正在实现逻辑回归函数的一部分,但除了-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,:);
        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
变量?您能否提供一个链接,说明您试图实现的算法。