mars.learn.metrics.log_loss#

mars.learn.metrics.log_loss(y_true, y_pred, *, eps=1e-15, normalize=True, sample_weight=None, labels=None)[来源]#

对数损失,也称为逻辑损失或交叉熵损失。

这是在(多项)逻辑回归以及其扩展如神经网络中使用的损失函数,定义为返回其训练数据y_pred概率的逻辑模型的负对数似然。对数损失仅定义于两个或更多标签的情况下。对于一个单一样本,其真实标签\(y \in \{0,1\}\)和概率估计\(p = \operatorname{Pr}(y = 1)\),对数损失为:

\[L_{\log}(y, p) = -(y \log (p) + (1 - y) \log (1 - p))\]

用户指南中阅读更多内容。

Parameters
  • y_true (数组类似标签指示矩阵) – n_samples 样本的真实(正确)标签。

  • y_pred (类似数组浮点数, 形状 = (样本数, 类别数) 或者 (样本数,)) – 预测的概率,由分类器的 predict_proba 方法返回。如果 y_pred.shape = (n_samples,) 提供的概率被假定为 正类的概率。y_pred 中的标签被假定为 按字母顺序排列,如 preprocessing.LabelBinarizer 所做的那样。

  • eps (float, default=1e-15) – 对于 p=0 或 p=1,日志损失是未定义的,因此概率被限制在 max(eps, min(1 - eps, p))。

  • normalize (bool, default=True) – 如果为真,返回每个样本的平均损失。否则,返回每个样本损失的总和。

  • sample_weight (类数组,形状 (n_samples,), 默认值=None) – 样本权重。

  • 标签 (类数组, 默认=None) – 如果未提供,标签将从 y_true 推断。如果 labelsNone 并且 y_pred 形状为 (n_samples,),则假设标签为二分类,并从 y_true 推断。

Returns

损失

Return type

float

备注

使用的对数是自然对数(以e为底)。

示例

>>> from mars.learn.metrics import log_loss
>>> log_loss(["spam", "ham", "ham", "spam"],
...          [[.1, .9], [.9, .1], [.8, .2], [.35, .65]])
0.21616...

参考文献

C.M. Bishop (2006). 模式识别与机器学习. 斯普林格, 第209页。