1 损失函数、代价函数和目标函数

  • 损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。
  • 代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。(也被称作经验风险)
  • 目标函数(Object Function)定义为:最终需要优化的函数。等于经验风险+结构风险(也就是代价函数 + 正则化项)。代价函数最小化,降低经验风险,正则化项最小化降低。
1.1 损失函数与代价函数

The loss function computes the error for a single training example; the cost function is the average of the loss funcitons of the entire training set. — — Andrew NG

        根据NG的解释可以得出结论:损失函数(loss function)是单个样本的训练误差,而代价函数(cost function)是所有样本损失函数的期望。

1.2 常见的损失函数

        损失函数是一个非负实数函数,用来量化模型预测和真实标签之间的差异。下面介绍几种常用的损失函数。

1. 0-1 损失函数(0-1 Loss Function)         最直观的损失函数是模型在训练集上的错误率,即0-1 损失函数:机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思         其中 机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_02 是指示函数即当预测错误时,损失函数为1,当预测正确时,损失函数值为0。该损失函数不考虑预测值和真实值的误差程度。只要错误,就是1。

        虽然 0-1 损失函数能够客观地评价模型的好坏,但其缺点是数学性质不是很好:不连续且导数为0,难以优化.。因此经常用连续可微的损失函数替代。

2. 平方损失函数(Quadratic Loss Function)         平方损失函数经常用在预测标签 机器学习损失率是什么意思 机器翻译的损失函数_对数损失_03 为实数值的任务中,定义为机器学习损失率是什么意思 机器翻译的损失函数_对数损失_04         是指预测值与实际值差的平方。

        平方损失函数一般不适用于分类问题。

3. 绝对值损失函数(Absolute Loss Function)机器学习损失率是什么意思 机器翻译的损失函数_代价函数_05         该损失函数的意义和上面差不多,只不过是取了绝对值而不是求绝对值,差距不会被平方放大。

4. 对数损失函数(logarithmic loss function)机器学习损失率是什么意思 机器翻译的损失函数_对数损失_06         这个损失函数就比较难理解了。事实上,该损失函数用到了极大似然估计的思想。机器学习损失率是什么意思 机器翻译的损失函数_对数损失_07 通俗的解释就是:在当前模型的基础上,对于样本 机器学习损失率是什么意思 机器翻译的损失函数_对数损失_08,其预测值为 机器学习损失率是什么意思 机器翻译的损失函数_对数损失_09,也就是预测正确的概率。由于概率之间的同时满足需要使用乘法,为了将其转化为加法,我们将其取对数。最后由于是损失函数,所以预测正确的概率越高,其损失值应该是越小,因此再加个负号取个反。

5. Hinge损失函数(Hinge Loss Function)         Hinge loss一般分类算法中的损失函数,尤其是SVM,其定义为:机器学习损失率是什么意思 机器翻译的损失函数_代价函数_10

机器学习损失率是什么意思 机器翻译的损失函数_对数损失_11机器学习损失率是什么意思 机器翻译的损失函数_交叉熵损失_12机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_13,当为SVM的线性核时。

        了解更多,请阅读:机器学习中的损失函数 (着重比较:hinge loss vs softmax loss)和损失函数 、代价函数、目标函数


2 风险函数

        这部分内容参考自——西伯尔——机器学习,评估——风险函数和Traco——经验风险VS风险函数

2.1 定义

        风险函数(risk function)= 期望风险(Expected Risk)= 期望损失(Expected Loss),可以认为是平均意义下的损失。

风险函数有两种,不考虑正则项的是经验风险(Empirical Risk),考虑过拟合问题,加上正则项的是结构风险(Structural Risk)。

        监督学习的两种基本策略:经验风险最小化(ERM)和结构风险最小化(SRM)。

        这样,监督学习问题就变成了经验风险或结构风险函数的最优化问题,即经验或结构风险函数是最优化的目标函数。

2.2 三种风险的关系

        期望风险是理想,是白月光,是可望不可求的,只能用经验风险去近似,而结构风险是经验风险的升级版。

        为什么可以用经验风险估计期望风险呢?

机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_14 趋于无穷时,经验风险 机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_15 趋于期望风险 机器学习损失率是什么意思 机器翻译的损失函数_风险函数_16。所以一个很自然的想法是用经验风险估计期望风险,即局部最优代替全局最优。

        但是,由于现实中的训练样本数目有限,甚至很小,所以用经验风险估计期望风险常常并不理想,要对经验风险进行一定的矫正。这就关系到监督学习的两个基本策略:经验风险最小化和结构风险最小化。

1. 期望风险(Expected Risk)【全局,理想】

期望风险对所有样本预测错误程度的均值,基于所有样本点损失函数最小化。期望风险是全局最优,是理想化的不可求的。

机器学习损失率是什么意思 机器翻译的损失函数_代价函数_17 的数学期望,在理论上,可以代入期望公式 机器学习损失率是什么意思 机器翻译的损失函数_代价函数_18,也就是机器学习损失率是什么意思 机器翻译的损失函数_风险函数_19         但是由于联合概率密度函数 机器学习损失率是什么意思 机器翻译的损失函数_对数损失_20

2. 经验风险(Empirical Risk)【局部,现实】

衡量整个训练集的预测值与真实值的差异,将整个训练集所有记录均进行一次预测,求取损失函数,将所有值累加,即为经验风险。经验风险是局部最优,是现实的可求的。

        就是已知的数据按照现有的模型,测试预测值和真实值偏离的程度叫经验风险。

机器学习损失率是什么意思 机器翻译的损失函数_对数损失_21

        经验风险 = 经验损失 = 代价函数

机器学习损失率是什么意思 机器翻译的损失函数_对数损失_21 关于训练集的平均损失被称为经验风险(empirical risk)或经验损失(empirical loss)。机器学习损失率是什么意思 机器翻译的损失函数_交叉熵损失_23         这个公式的用意很明显,就是模型关于训练集的平均损失(每个样本的损失加起来,然后平均一下)。在实际中用的时候,我们也就很自然的这么用了。

3. 结构风险(Structural Risk)         结构风险,就是在经验风险上加上一个正则化项(regularizer)或者叫做罚项(penalty term),即机器学习损失率是什么意思 机器翻译的损失函数_风险函数_24

经验风险 vs 期望风险∶

  • 期望风险往往无法计算,即联合分布 机器学习损失率是什么意思 机器翻译的损失函数_交叉熵损失_25
2.3 经验风险最小化和结构风险最小化

1. 经验风险最小化&结构风险最小化         经验风险最小化(empirical risk minimization,ERM),就是认为经验风险最小的模型是最优的模型,用公式表示:机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_26

        这个理论很符合人的直观理解。因为在训练集上面的经验风险最小,也就是平均损失越小,意味着模型得到结果和“真实值”尽可能接近,表明模型越好。         当样本容量不大的时候,经验风险最小化模型容易产生“过拟合”的问题。为了“减缓”过拟合问题,就提出了结构风险最小的理论。

        结构风险最小化(structural risk minimization,SRM),就是认为,结构风险最小的模型是最优模型,公式表示机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_27

2. 经验风险最小化的例子:极大似然估计(maximum likelihood estimation)

  • 模型——条件概率分布;
  • 损失函数——对数损失函数;
  • 经验风险最小化等价于极大似然估计。

3. 结构风险最小化的例子:贝叶斯最大后验概率估计

  • 模型——条件概率分布;
  • 损失函数——对数损失函数;
  • 模型复杂度——由先验概率表示;
  • 结构风险=经验风险+正则项=后验概率+先验概率;
  • 先验概率不变,结构风险最小化,等价于最大后验概率估计。

结构风险 vs 经验风险︰

  • 防止过拟合现象的方式,就要降低决策函数的复杂度,让惩罚项 机器学习损失率是什么意思 机器翻译的损失函数_交叉熵损失_28
2.4 风险函数与对数损失函数

机器学习损失率是什么意思 机器翻译的损失函数_对数损失_29


3 常用的代价函数

        这部分内容参考自——【机器学习】代价函数(cost function)

3.1.1 均方误差(Mean Squared Error)

机器学习损失率是什么意思 机器翻译的损失函数_交叉熵损失_30

机器学习损失率是什么意思 机器翻译的损失函数_交叉熵损失_31 表示第 机器学习损失率是什么意思 机器翻译的损失函数_交叉熵损失_31 个样本,机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_14 表示样本总数) 通常用来做回归问题的代价函数。

3.1.2 均方根误差(RMSE)

机器学习损失率是什么意思 机器翻译的损失函数_代价函数_34         均方根误差是均方误差的算术平方根,能够直观观测预测值与实际值的离散程度。 通常用来作为回归算法的性能指标。

3.1.3 平均绝对误差(Mean Absolute Error)

机器学习损失率是什么意思 机器翻译的损失函数_风险函数_35

        平均绝对误差是绝对误差的平均值 ,平均绝对误差能更好地反映预测值误差的实际情况。         MSE误差函数对噪声点比较敏感,因为噪声的误差一般比较大,经过平方后放大的倍数会影响模型的效果,此时可以选择对噪声不是非常敏感的’MAE’损失函数。

3.1.4 交叉熵代价函数(Cross Entry)

机器学习损失率是什么意思 机器翻译的损失函数_对数损失_36

        交叉熵是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其中 机器学习损失率是什么意思 机器翻译的损失函数_风险函数_37 是指真实分布的概率,机器学习损失率是什么意思 机器翻译的损失函数_代价函数_38

3.1.5 Huber损失函数

机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_39

  • 机器学习损失率是什么意思 机器翻译的损失函数_代价函数_40
  • 机器学习损失率是什么意思 机器翻译的损失函数_代价函数_40 接近于0时,Huber loss接近MAE 当 机器学习损失率是什么意思 机器翻译的损失函数_代价函数_40
  • 机器学习损失率是什么意思 机器翻译的损失函数_风险函数_43 时,Huber loss接近MSE
3.1.6 Log-Cosh Loss

机器学习损失率是什么意思 机器翻译的损失函数_风险函数_44

3.1.7 分位数损失函数

        基于Quantile回归的目的是,在给定预测变量的某些值时,估计因变量的条件“分位数”。Quantile Loss实际上只是MAE的扩展形式(当分位数是第50个百分位时,Quantile Loss退化为MAE)。

3.2 各常见代价函数的优缺点

  • 使用平方误差更容易求解, 但使用绝对误差对离群点更加鲁棒;
  • 当数据存在离群点时,以MSE为损失的模型会赋予更高的权重给离群点;
  • MAE损失适用于训练数据被离群点损坏的时候(即,在训练数据而非测试数据中,我们错误地获得了不切实际的过大正值或负值);
  • 对所有的观测数据,如果我们只给一个预测结果来最小化MSE,那么该预测值应该是所有目标值的均值。但是如果我们试图最小化MAE,那么这个预测就是所有目标值的中位数。我们知道中位数对于离群点比平均值更鲁棒,这使得MAE比MSE更加鲁棒;
  • 使用MAE损失(特别是对于神经网络)的一个大问题是它的梯度始终是相同的,这意味着即使对于小的损失值,其梯度也是大的。这对模型的学习可不好。为了解决这个问题,我们可以使用随着接近最小值而减小的动态学习率。MSE在这种情况下的表现很好, 即使采用固定的学习率也会收敛。 MSE损失的梯度在损失值较高时会比较大, 随着损失接近0时而下降,从而使其在训练结束时更加精确。
  • 如果离群点是会影响业务、而且是应该被检测到的异常值,那么我们应该使用MSE。如果我们认为离群点仅仅代表数据损坏,那么我们应该选择MAE作为损失。
  • L1损失对异常值更加稳健,但其导数并不连续,因此求解效率很低。L2损失对异常值敏感,但给出了更稳定的闭式解(closed form solution)(通过将其导数设置为0);
  • 两种损失函数的问题:可能会出现这样的情况,即任何一种损失函数都不能给出理想的预测。例如,如果我们数据中90%的观测数据的真实目标值是150,其余10%的真实目标值在0-30之间。那么,一个以MAE为损失的模型可能对所有观测数据都预测为150,而忽略10%的离群情况,因为它会尝试去接近中值。同样地,以MSE为损失的模型会给出许多范围在0到30的预测,因为它被离群点弄糊涂了。这两种结果在许多业务中都是不可取的。
  • Huber Loss对数据离群点的敏感度低于平方误差损失。它在0处也可导。基本上它是绝对误差,当误差很小时,误差是二次形式的。误差何时需要变成二次形式取决于一个超参数,该超参数可以进行微调。机器学习损失率是什么意思 机器翻译的损失函数_代价函数_40
  • 使用MAE训练神经网络的一个大问题是经常会遇到很大的梯度,使用梯度下降时可能导致训练结束时错过最小值。对于MSE,梯度会随着损失接近最小值而降低,从而使其更加精确。在这种情况下,Huber Loss可能会非常有用,因为它会使最小值附近弯曲,从而降低梯度。另外它比MSE对异常值更鲁棒。因此,它结合了MSE和MAE的优良特性。但是,Huber Loss的问题是我们可能需要迭代地训练超参数 机器学习损失率是什么意思 机器翻译的损失函数_代价函数_40
  • 优点:log(cosh(x))对于小的 机器学习损失率是什么意思 机器翻译的损失函数_交叉熵损失_47 来说,其大约等于 机器学习损失率是什么意思 机器翻译的损失函数_风险函数_48,而对于大的 机器学习损失率是什么意思 机器翻译的损失函数_交叉熵损失_47 来说,其大约等于 机器学习损失率是什么意思 机器翻译的损失函数_代价函数_50。这意味着log(cosh(x))的作用大部分与均方误差一样,但不会受到偶尔出现的极端不正确预测的强烈影响。它具有Huber Loss的所有优点,和Huber Loss不同之处在于,其处处二次可导。

4 各种算法的损失函数

        这部分内容参考自——机器学习-损失函数 和课程总结04 - 损失函数、代价函数与目标函数 的整理。

4.1 逻辑回归模型

        虽然名字里包含“回归”,但是实际上却是一种分类学习方法。优点:

  1. 直接对分类可能性进行建模,无需事先假设数据分布,避免了假设分布不准确的问题;
  2. 不是仅预测出“类别”,而是得到近似概率预测,对于需要利用概率辅助预测的任务很有用;
  3. 对率函数任意阶可到的凸函数,很多数值化优化算法都可以直接用于求解最优解。
4.1.1 代价函数

机器学习损失率是什么意思 机器翻译的损失函数_代价函数_51

机器学习损失率是什么意思 机器翻译的损失函数_代价函数_52

4.1.2 模型参数求解

        模型参数的求解方法之一:采用最大似然估计的对数形式(对数是单调函数,求解参数的最大值,函数的对数和函数求出的最大值是一样的)构建函数,再利用梯度下降来求解:

机器学习损失率是什么意思 机器翻译的损失函数_风险函数_53

4.1.3 逻辑回归多分类模型

机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_54

4.2 决策树

4.2.1 决策树-整体损失函数

机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_55

4.2.2 CART二叉树-最小二乘回归树

机器学习损失率是什么意思 机器翻译的损失函数_风险函数_56

4.3 朴素贝叶斯

4.3.1 朴素贝叶斯代价函数

机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_57

机器学习损失率是什么意思 机器翻译的损失函数_对数损失_58

4.3.2 朴素贝叶斯参数估计-极大似然估计

机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_59

4.4 KNN损失函数

机器学习损失率是什么意思 机器翻译的损失函数_机器学习损失率是什么意思_60

4.5 SVM损失函数-hinge损失

机器学习损失率是什么意思 机器翻译的损失函数_对数损失_61

4.6 提升方法损失函数

4.6.1 Adaboost

机器学习损失率是什么意思 机器翻译的损失函数_交叉熵损失_62

机器学习损失率是什么意思 机器翻译的损失函数_对数损失_63

4.6.2 GBDT-梯度提升树模型

机器学习损失率是什么意思 机器翻译的损失函数_代价函数_64

机器学习损失率是什么意思 机器翻译的损失函数_对数损失_65


        以上就是对机器学习中损失函数、风险函数、代价函数、目标函数的整理,由于水平有限,可能部分地方有误,欢迎大家指出,后续也会随着学习继续完善,祝学习愉快!


参考

  • 代价函数,损失函数,目标函数区别:https://zhuanlan.zhihu.com/p/330126934
  • 逻辑回归(Logistic Regression):https://zhuanlan.zhihu.com/p/28408516
  • 课程总结04 - 损失函数、代价函数与目标函数:https://www.zybuluo.com/rianusr/note/1219975
  • 机器学习-损失函数:http://www.csuldw.com/2016/03/26/2016-03-26-loss-function/
  • 【机器学习】代价函数(cost function):
  • 机器学习中的损失函数 (着重比较:hinge loss vs softmax loss):
  • 损失函数(Loss Function)、代价函数(Cost Function)和目标函数(Object Function):
  • 代价敏感学习初探-有偏损失函数设计: