log_loss
(对数损失)是一种用于衡量分类模型的损失函数,常用于二分类或多分类问题中。它衡量了模型的预测概率分布与真实标签之间的差异。
数学定义为:
$$
H_{p}(q)= -\frac{1}{N} \sum_{i=1}^{N} y_{i} \cdot \log \left(p\left(y_{i}\right)\right)+\left(1-y_{i}\right) \cdot \log \left(1-p\left(y_{i}\right)\right)
$$
在二分类问题中,log_loss
的定义如下:
log_loss(y_true, y_pred) = -(y_true * log(y_pred) + (1 - y_true) * log(1 - y_pred))
其中,y_true
是真实的标签(0 或 1),y_pred
是模型的预测概率(取值范围在 0 和 1 之间)。log
表示自然对数。
公式中的第一项 - (y_true * log(y_pred))
是真实标签为 1 时的损失,第二项 - ((1 - y_true) * log(1 - y_pred))
是真实标签为 0 时的损失。公式的负号是为了将最小化问题转化为最大化问题。
该公式的含义是,对于每个样本,如果真实标签为 1,损失函数希望模型预测的概率越接近 1,即希望 y_pred
越大;如果真实标签为 0,损失函数希望模型预测的概率越接近 0,即希望 1 - y_pred
越大。
通过对所有样本的损失进行求和或平均,可以得到整体的对数损失。
对于多分类问题,log_loss
的定义稍有不同,它对每个类别的预测概率分布进行评估,计算每个类别的对数损失并求平均值。
在实际应用中,log_loss
常用于评估分类模型的性能,特别是在需要考虑概率预测精度和不确定性的情况下。较低的 log_loss
值表示模型的预测结果与真实标签的吻合度较高。
通常我们使用 sklearn.metrics.log_loss
函数计算log_loss
。该函数接受真实标签和模型预测的概率作为输入,并返回对数损失值。
以下是使用 sklearn.metrics.log_loss
计算 log_loss
的示例代码:
from sklearn.metrics import log_loss
# 真实标签
y_true = [0, 1, 0, 1]
# 模型预测的概率
y_pred = [0.2, 0.8, 0.6, 0.3]
# 计算 log_loss
loss = log_loss(y_true, y_pred)
print("Log Loss:", loss)