数据科学大量使用代数,统计,微积分和概率的概念,也借用了很多数学术语。机器学习(ML)是数据科学中的一个令人着迷的领域,它依赖于数学。XGBoost是一种基于梯度提升决策树的流行且越来越主导的机器学习(ML)算法,可以用于分类和回归问题,并且因其性能和速度而闻名。XGBoost使用一种称为“对数损失”的流行度量,就像大多数其他梯度提升算法一样。该基于概率的度量用于测量分类模型的性能。但在我们开始使用它来评估我们的模型之前,有必要了解它背后的数学。本文涉及对数损失的数学概念。在本文中,我们将简要介绍它如何影响ML分类算法的性能,尤其是XGBoost。
定义对数损失
对数损失(Log loss)是 logarithmic loss的简称,是一个用于分类的损失函数,用来量化在分类问题中预测不准确所付出的代价。对数损失通过考虑分类概率来惩罚错误分类。为了阐明这个概念,让我们首先回顾一下这个术语的数学表示:
在上面的等式中,N是实例或样本的数量。'yi'将是第i个实例的可能结果。实例可以假设有两个结果,例如0和1.在上面的等式中,'yi'将是1,因此'1-yi'是0.'pi'表示概率假设值为'yi'的第i个实例。换句话说,对数损失累计样本假定状态0和1都超过实例总数的概率。等式背后的简单条件是:对于真实输出(yi),概率因子是-log(真实输出的概率),而另一个输出是-log(1-真实输出的概率)。
让我们尝试在Python中以编程方式表示条件:
如果我们看一下上面的方程,预测的输入值0和1是没有定义的。为了解决这个问题,log loss函数将预测概率(p)调整为很小的epsilon值。这个epsilon值通常保持为(1e-15)。因此,我们可以通过应用以下Python代码来进行此调整:
max(min(p, 1−10^−15), 10^-15)
在此操作中,可能会发生以下情况:
当p = 0时:
应用min函数(0<1−10^−15→0)应用max函数(10^−15>0→1e-15)因此,我们提交的概率为0将转换为10^−15
当p = 1时:
应用min函数(1-10^−15<1→1-10^−15)应用max函数(1-10^−15>10^−15→1-1e-15)因此,我们提交的1的概率被转换为1-10^−15
现在,让我们复制上面的整个数学方程式,Python代码如下:
我们也可以将其表示为R中的函数:
LogLossBinary = function(actual, predicted, eps = 1e-15) { predicted = pmin(pmax(predicted, eps), 1-eps) - (sum(actual * log(predicted) (1 - actual) * log(1 - predicted))) / length(actual)}
在我们讨论如何在分类算法中实现这一概念之前,让我们先简要介绍另一个与对数损失相关的概念。交叉熵是一个类似的度量,随着预测概率偏离实际标签,与之相关的损失也会增加。一个完美的模型应该有一个对数损失值或交叉熵损失值为0。那么,为什么它们是两个不同的项呢?
当涉及到机器学习算法时,交叉熵是对数损失的更一般形式。对数损失用于二元分类算法,交叉熵用于多元分类问题。换句话说,当有两种可能的结果时使用对数损失,当有两种以上可能的结果时使用交叉熵。
方程可表示为:
在这里,“M”是给定情况下可能出现的结果或标签的数量。与上式相似,“pij”是模型将标号j赋值给实例i的概率,让我们通过一个例子来理解这一点:
让我们假设一个问题,我们必须预测一个学生在考试中根据他的属性可以得到的分数范围。如果有三种可能的结果:高,中,低由[(1,0,0)(0,1,0)(0,0,1)]表示。现在,对于特定学生,预测概率为(0.2,0.7,0.1)。这表明预测的分数范围很可能是“中”,因为概率最高。因此,交叉熵误差将是:
CE_loss = -(ln(0.2)(0) ln(0.7)(1) ln(0.1)(0))
= -(0 (-0.36)(1) 0)
= 0.36
现在,我们已经了解了这个理论,我们可以更好地开始在机器学习分类模型中使用它。
,