机器学习-损失函数

0,综述

损失函数用于评价模型好坏。一个统计学习方法基本上由三个部分组成:
模型+策略+算法
1,模型,,即输入样本特征,可以返回样本值或概率值的函数
2,策略,有了模型,如何确定模型中的参数呢?如何根据训练数据拟合一个不错的模型呢?这就是一个训练策略的问题。基本上就是:减小模型误差(损失)或增大模型收益(如最大似然),这两种方式是可以互相转化的。通常我们会采取减小模型误差的方式。那么,就需要选取一个函数来评价模型的损失(误差)即损失函数。不同的损失函数适用不同的任务。
3,算法,有了损失函数还不够,我们的目的是利用数据降低损失函数。这里就会有一些优化算法适用于降低损害函数。这是一个优化问题。如果损失函数简单,可以直接计算解析解,那很容易就能求得最优参数从而确定模型。但往往在多维数据下,难以甚至无法计算解析解,此时,就需要一些优化算法来逐步逼近最优解。例如梯度下降法,牛顿法,以及一些优化转换方法例如拉格朗日对偶性。

1,0-1损失函数


此损失函数形式简单,但是
1,不可导不易优化。
2,一刀切,没有体现f(x)接近和远离y时损失的差异
所以使用有局限性。适用于计数类型的模型,例如k近邻。

2,合页损失函数

一般模型为

合页损失,重要的组成部分称为函数间隔,分对则大于0,分错小于0

2.1 感知机损失函数

2.2 SVM损失函数

2.3 讨论

方括号+的意思是,括号内的值如果小于0,则值等于0,括号内值大于0则保持原值。
两者经验损失部分十分相似,只不过相差1,表示SVM的经验损失比感知机更严格(即使分对了,但,也会带来损失)
我认为两者的损失函数(经验损失)都是合页损失函数(以函数间隔为x轴),只不过SVM的右偏了一格。而SVM真正比感知机优越的地方在于其L2正则,当然,可以引入核函数则是其更重要的性质与优点了。
另外,SVM的这个损失函数等价于他的最优化问题。把带约束的最优化问题转换为不带约束的最优化问题,在数学上的转换与证明也是十分巧妙的。

3,以熵或基尼指数度量的损失函数

决策树的损失函数
决策树的损失函数通常用于树的剪枝。


表示t叶节点上的熵或基尼指数。
通过计算剪枝前后的损失函数大小来判断是否剪枝。

4,交叉熵损失函数(Cross Entropy Loss)

4.1 K-L散度(Kullback–Leibler divergence)

又称相对熵(Relative Entropy)
举个例子:

假设我们获取了某一地区人口年龄的样本数据D

代表了从0岁到98岁的人口数量,单位万人。
此时,我们想用一个分布来拟合这批数据,以预测本地区总体年龄分布。
A想了一个0-98的均匀分布
B想了一个均值45方差30的正态分布
虽然这两个拟合看着都很不靠谱,但是这两个分布哪个更好一点呢?

K-L散度就可以解决这个问题

所谓拟合一个分布,其实就是得到一系列离散或连续的概率值
通过观测数据/训练数据我们本身也可以得到其分布
K-L散度定义如下:

显然,K-L散度,是指两个分布在同一值下对数概率之差的期望
P,Q两分布越接近,KL散度越小
当两分布相等时(所有对应概率相等),KL散度=0
另外需注意,KL散度不对称即:

4.2 交叉熵(Cross Entropy)

由KL散度公式可以推算

其中

就是PQ的交叉熵。
因为常常我们观测数据或训练数据的熵时固定的,所以KL散度和交叉熵只差固定值,所以,可以用交叉熵代替KL散度来评估两个分布或某一个分部与训练数据的差异。

4.3 交叉熵损失函数

1,对于一个二分类任务
一个样本其交叉熵损失就是

其中


则总体损失就是所有样本sum

2,对于一个多分类任务
一个样本的交叉熵损失就是

其中
表示样本是否属于c类
M 即类别c的数量
即样本是c类的概率
则总体损失就是所有样本sum
由此可见,对于多样本交叉熵损失函数,其模型需要预测出样本属于各个类别的概率值

5,最大化似然估计与对数损失(Maximum Likelihood Estimation & Logistic Loss)

5.1 最大似然估计

最大似然估计的核心思想是:观测数据D之所以被观测到,是因为数据D出现的概率本身就高。想法很朴素。
似然函数如下:

最大似然估计即在当前数据下,求解令最大的
例如估计抛硬币正面朝上的概率
正面
反面

只抛1次,正面朝上

则最大化

抛10次,正6反4


求最大值,令导数=0得
即p=0.6

抛10000次,正4901反5099

得时,取得最大值

5.2 最大似然函数做目标函数-对数损失

例如在逻辑回归LR推导中,由于逻辑回归会估计样本是正样本的概率,
这里
则对于一个样本(x,y),其似然函数

对所有训练数据:

又因为最大化L等价于最大化等价于最小化
因为对数具有相乘变相加的特性

所以求解令-logL最小的参数(对于逻辑回归即是w)即可

这不正是交叉熵损失函数吗?
也被叫做对数损失。
所以对数损失函数和交叉熵损失函数是等价的
交叉熵损失函数,从熵的角度度量模型差异
对数函数,从统计估计的角度度量模型拟合

5.3 对数损失的进一步扩展

假如我们令 即负类标签由0变为-1



则有



这也是对数损失 只不过此时标签

6,指数损失(Exponential Loss)


应用于加法模型Adaboost中。
因为指数具有指数相加等于数相乘的性质:

所以,对于加法模型


7,均方误差(Mean Square Error MSE)

8,平方绝对误差(Mean Absolute Error MAE)

8.1 MSE VS MAE

1,MSE全程可导,MAE在0处不可导

2,MAE更鲁棒:
两者差别以为分界线
0~1之间时,MSE< 大于1时,MSE>>MAE
而当数据有异常值时,往往
此时MSE>>MAE
这表示,使用MSE对异常值会更加敏感,而算法为了降低MSE,就会使模型过度偏向异常值。这种现象在MAE上就会减轻很多。所以可以说MAE相对于MSE更鲁棒一些。

另一个解释是,当我们用一个定值去拟合一列数时,MSE拟合的是数据的平均数,而MAE拟合的是数据的中位数。

所以MSE拟合的是平均数
对于MAE
我们对x从小到大排序
\begin{alignedat}{2} MAE&=\frac{1}{N}\sum_{i=1}^{N}|x_i-\theta|\\ &=\frac{1}{N}(\sum_{i=1}^{k}(\theta-x_i)+\sum_{i=k+1}^{N}(x_i-\theta) ) \\ \theta& \in [x_{k-1},x_{k+1}]\\\\ \frac{\partial MAE}{\partial \theta}&=\frac{1}{N}(\sum_{i=1}^{k}(1)+\sum_{i=k+1}^{N}(-1))=0\\ k&=\frac{N}{2}\\ \theta& \in [x_{N/2-1},x_{N/2+1}]\\ \end{alignedat}
所以MAE拟合的是一个区间,这个区间通常可以取中位数替代。
显然中位数对异常值是不敏感的,而平均值则会敏感。这提示我们对于不同的数据,需要选择不同的损失。就想在预测全国人均收入问题上,由于大部分财富集中在很小一部分人中,这些数据就相当于异常值,所以中位数更能代表人均收入水平。

3,对于梯度下降法来说,MSE梯度随着越接近最优点而越来越小,相当于一开始迈大步快速接近极值,后面迈小步精确靠近极值。而MAE的导数一直为1不变,使得它在靠近极值时容易一步跨过。

9,Huber损失函数


这个函数是全局可导的,他是MSE与MAE的结合,拥有两者的优点。通过来调节MSE和MAE的占比。

10,分位数损失函数(Quantile Loss)

要理解分位数损失函数,首先要理解MAE,MAE是拟合中位数的损失函数(即离差绝对值的期望在中位数处取得最低)
而中位数就是分位数的一种。

另外,我们考虑一种回归问题。以一元回归为例,在众多数据中,我们可以拟合一条曲线,这条曲线告诉我们对于某个x可能的拟合结果y=f(x)。即使真实y不是f(x),也应该在f(x)附近,此时,我们的预测是一个点。
但是,我们如果想要获取一个y的范围呢?即对于x,我想知道y的大致范围。因为很多时候,我们不需要精确值,反而更需要一个范围值。此时,我们需要预测一个线段。
那怎么做呢?
其实如果我们能分别获得y的0.1分位数与0.9分位数的拟合,那么两者之间的部分就是我们需要的,它预测了y的80%的取值范围
此时,就需要优化分位数损失函数:

即,该损失函数对预测值大于真实值和小于真实值得惩罚是不一样的。
当时,该损失等价于MAE
当时,该损失对预测值小于真实值的情况惩罚更大
当时,该损失对预测值大于真实值的情况惩罚更大

11 总结

本节讲述了常见的损失函数。
损失函数大致分为应用于分类的和应用于回归的。
从7均方误差之后,基本上都用于回归。

不同的模型会有自己比较适合的损失函数

回归问题的损失函数,往往存在的部分,我们称之为残差
回归损失函数往往围绕残差构建。

分类问题,就二分类(多分类往往建立在二分类的基础上)而言,标签y往往存在两种形式:

or

对于11.2的情况,模型往往倾向于把预测值转换成概率
从而使用交叉熵损失log损失,这些损失函数都存在(或)部分。这样的模型有LR,神经网络
对于11.3的情况,模型往往倾向于构建分类超平面,再通过判断标签,例如感知机,SVM。又如集成学习Adaboost,其模型,而标签也是由来决定,这几个模型的损失函数往往存在的部分。
可以看到分类的损失函数,常围绕来构建
当然,有的模型对于标签形式是不敏感的,例如k近邻,决策树等,因为这些模型没有把y用于损失计算,其损失函数也会比较不同。

不同的损失函数也有不同的特性

这些特性会有针对性的优化我们的某些需求。
MAE相比于MSE有较强的鲁棒性
分位数损失组合可以获得预测值的范围

参考

KL散度
损失函数
Regression Loss Functions
Regression Loss Functions-翻译
分位数回归
《统计学习方法》-李航

你可能感兴趣的:(机器学习-损失函数)