在机器学习每一个算法中都会有一个目标函数,算法的求解过程是通过对这个目标函数优化的过程。在分类或者回归问题中,通常使用损失函数(代价函数)作为其目标函数。损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好,不同的算法使用的损失函数不一样。损失函数可以很好得反映模型与实际数据差距的工具,理解损失函数能够更好得对后续优化工具(梯度下降等)进行分析与理解。在工业上很多时候遇到复杂的应用场景问题,其实最难的一关是如何写出损失函数,即自定义损失函数。
通常提到损失函数,我们不得不提到代价函数(Cost Function)及目标函数(Object Function)。
损失函数(Loss Function) 直接作用于单个样本,用来表达样本的误差
代价函数(Cost Function)是整个样本集的平均误差,对所有损失函数值的平均
目标函数(Object Function)是我们最终要优化的函数,也就是代价函数+正则化函数(经验风险+结构风险)
我们给定输入变量Size,记为 X,拟合目标Price,记为 Y,上面三个图的函数依次为。
这个函数就称为损失函数(loss function),或者叫代价函数(cost function),损失函数越小,就代表模型拟合的越好。
由于模型开发过程中输入输出是一个训练集,每一条训练数据都存在一个损失,那么针对于整个训练集的平均损失,即代价函数(Cost Function),或者称作经验风险(empirical risk),如下:
模型训练的过程就是不断的迭代以保证这个经验风险函数的最小化。但是从上面的三个坐标图所示,最后一个图的经验风险函数最小了,因为它对历史的数据拟合的最好,但是在实际中,肯定不是最好的,因为它过度学习历史数据,导致它在真正预测时效果会很不好,这种情况称为过拟合(Over-Fitting),主要原因是第三个函数太复杂了,都有四次方了,这就引出了下面的概念,我们不仅要让经验风险最小化,还要让结构风险最小化。
这个时候就需要定义了一个函数,这个函数专门用来度量模型的复杂度,在机器学习中也叫正则化(Regularization),常用的有L1,L2范数,最终的优化函数就变为:
即最优化经验风险和结构风险(代价函数+正则化函数),而这个函数就被称为最终的目标函数。
上面的例子来分析:最左面的结构风险最小(模型结构最简单),但是经验风险最大(对历史数据拟合的最差),最右面
的经验风险最小(对历史数据拟合的最好),但是结构风险最大(模型结构最复杂),中间的
达到了二者的良好平衡,最适合用来预测未知数据集。
几种常见的损失函数
0-1损失函数(0-1 Loss Function)
平方损失函数(Quadratic Loss Function)
绝对值损失函数(Absolute loss Function)
对数损失函数(Logarithmic Loss Function)或者对数似然损失函数
如果是0-1损失函数(绝对值损失函数),感知机就是用的这种损失函数
如果是平方损失(Square loss),那就是最小二乘法,线性回归;
如果是对数损失(log-Loss),那就是逻辑回归;
如果是铰链损失(Hinge Loss),那就是著名的SVM了;
如果是指数损失(exp-Loss),那就是Boosting了;
1. 0-1损失函数和绝对值损失函数
0-1损失是指,预测值和目标值不相等为1,否则为0:
感知机就是用的这种损失函数。但是由于相等这个条件太过严格,因此我们可以放宽条件,即满足 |Y−f(X)|<T|Y−f(X)|<T 时认为相等。
绝对值损失函数为:
2. log对数损失函数
逻辑斯特回归的损失函数就是对数损失函数,在逻辑斯特回归的推导中,它假设样本服从伯努利分布(0-1)分布,然后求得满足该分布的似然函数,接着用对数求极值。逻辑斯特回归并没有求对数似然函数的最大值,而是把极大化当做一个思想,进而推导它的风险函数为最小化的负的似然函数。从损失函数的角度上,它就成为了log损失函数。
log损失函数的标准形式:
在极大似然估计中,通常都是先取对数再求导,再找极值点,这样做是方便计算极大似然估计。损失函数 是指样本X在分类Y的情况下,使概率P(Y|X)达到最大值(利用已知的样本分布,找到最大概率导致这种分布的参数值)。
3. 平方损失函数
最小二乘法是线性回归的一种方法,它将回归的问题转化为了凸优化的问题。最小二乘法的基本原则是:最优拟合曲线应该使得所有点到回归直线的距离和最小。通常用欧几里得距离进行距离的度量。平方损失的损失函数为:
4. 指数损失函数
AdaBoost就是一指数损失函数为损失函数的。
指数损失函数的标准形式:
5. Hinge损失函数
Hinge损失函数和SVM是息息相关的。在线性支持向量机中,最优化问题可以等价于
这个式子和如下的式子非常像:
其中l(wxi+byi)l(wxi+byi)就是hinge损失函数,后面相当于L2正则项。
Hinge函数的标准形式:
y是预测值,在-1到+1之间,t为目标值(-1或+1)。其含义为,y的值在-1和+1之间就可以了,并不鼓励|y|>1|y|>1,即并不鼓励分类器过度自信,让某个正确分类的样本的距离分割线超过1并不会有任何奖励,从而使分类器可以更专注于整体的分类误差。