gpt4 book ai didi

python - 如何理解scikit-learn逻辑回归代码中的损失函数?

转载 作者:行者123 更新时间:2023-11-30 09:04:36 32 4
gpt4 key购买 nike

scikit-learn 逻辑回归中损失函数的代码为:

# Logistic loss is the negative of the log of the logistic function.
out = -np.sum(sample_weight * log_logistic(yz)) + .5 * alpha * np.dot(w, w)

但是,它似乎与对数损失函数的常见形式不同,其内容如下:

-y(log(p)+(1-y)log(1-p))

(请参阅http://wiki.fast.ai/index.php/Log_Loss)

谁能告诉我如何理解 scikit-learn 逻辑回归中损失函数的编码以及它与对数损失函数的一般形式之间的关系是什么?

提前谢谢您。

最佳答案

首先您应该注意 0.5 * alpha * np.dot(w, w) 只是一个标准化。因此,sklearn 逻辑回归简化为以下内容

-np.sum(sample_weight * log_logistic(yz))

此外,np.sum 是由于它考虑多个样本,因此它再次减少为

sample_weight * log_logistic(yz)

最后,如果您阅读 HERE ,您会注意到,sample_weight 是分配给各个样本的可选权重数组。如果未提供,则每个 sample 都给出单位重量。因此,它应该等于一(正如在交叉熵损失的原始定义中,我们不考虑不同样本的权重不相等),因此损失减少为:

-log_logistic(yz)

这相当于

- log_logistic(y * np.dot(X, w))

现在,为什么它看起来与交叉熵损失函数不同(本质上是相同的),即。例如:

- [y log(p) + (1-y) log(1-p))]

原因是,我们可以使用两种不同的标记约定进行二元分类,即使用 {0, 1}{-1, 1},其中导致两种不同的表示。但它们是一样的!

更多详细信息(关于为什么它们相同)可以找到 HERE 。请注意,您应该阅读 Manuel Morales 的回复。

关于python - 如何理解scikit-learn逻辑回归代码中的损失函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55813551/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com