[关闭]
@rianusr 2019-08-15T00:16:25.000000Z 字数 2816 阅读 3282

课程总结04 - 损失函数、代价函数与目标函数

1001-课程总结


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

>>机器学习中的目标函数、损失函数、代价函数有什么区别?<<

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 基本概念

损失函数:计算的是一个样本的误差
代价函数:是整个训练集上所有样本误差的平均
目标函数:代价函数 + 正则化项

2 常见/不常见的代价函数

2.1 常见的代价函数

image_1ciqv2po9f2l139hq0l17eu19g59.png-98.9kB

2.2 各代价函数的作用和使用场景

image_1ciqvgimmpcc2uq1jss1o291l7833.png-277.9kB

2.2.1 MSE -- 均方误差

2.2.2 RMSE--均方根误差

2.2.2 MAE


MSE误差函数对噪声点比较敏感,因为噪声的误差一般比较大,经过平方后放大的倍数会影响模型的效果,此时可以选择对噪声不是非常敏感的MAE损失函数。

2.2.3 Huber损失函数

  • 是超参数,可调
  • 接近于0时,Huber loss接近MAE
  • 接近于时,Huber loss接近MSE

2.2.4 Log-Cosh Loss

2.2.5 分位数损失函数

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

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

  • 使用平方误差更容易求解, 但使用绝对误差对离群点更加鲁棒;
  • 当数据存在离群点时,以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处也可导。基本上它是绝对误差,当误差很小时,误差是二次形式的。误差何时需要变成二次形式取决于一个超参数, 该超参数可以进行微调。的选择非常重要,因为它决定了你认为什么数据是离群点。
  • 使用MAE训练神经网络的一个大问题是经常会遇到很大的梯度,使用梯度下降时可能导致训练结束时错过最小值。对于MSE,梯度会随着损失接近最小值而降低,从而使其更加精确。在这种情况下,Huber Loss可能会非常有用,因为它会使最小值附近弯曲,从而降低梯度。另外它比MSE对异常值更鲁棒。因此,它结合了MSE和MAE的优良特性。但是,Huber Loss的问题是我们可能需要迭代地训练超参数delta。
  • 优点: log(cosh(x))对于小的x来说,其大约等于 (x ** 2)/2,而对于大的x来说,其大约等于 abs(x) - log(2)。 这意味着'logcosh'的作用大部分与均方误差一样,但不会受到偶尔出现的极端不正确预测的强烈影响。它具有Huber Loss的所有优点,和Huber Loss不同之处在于,其处处二次可导。

3 各种算法的损失函数

>>机器学习-损失函数<<

3.1 逻辑回归

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

3.1.1 优点:

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

3.1.2 逻辑回归模型

3.1.1 代价函数

image_1cirh6ija1dpa1123m9e2h77qb9.png-236.2kB
image_1cirhbai71gjkp72mkqr2r12g616.png-121.8kB

3.1.2 模型参数求解

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

3.1.3 逻辑回归多分类模型

01-逻辑回归多分类.png-104.8kB

3.2 决策树

3.2.1 决策树C4.5整体损失函数

02决策树剪枝时损失函数.png-130.9kB

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

image_1ciriebstm6e1dj31jr5d011lrs2j.png-233.4kB

3.3 朴素贝叶斯

3.3.1 朴素贝叶斯代价函数

03朴素贝叶斯损失函数.png-77.2kB
image_1cirl6ron1muc1fkn1ce7i2ugtr45.png-97.6kB

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

image_1cirlakl5tvk14rjd6n1rb0151n4i.png-123.4kB

3.4 KNN损失函数

image_1cirlp9crr35lhh136v1nvl19jk4v.png-155.2kB

3.5 SVM损失函数-合页(hinge)损失

04SVM损失函数-hinge.png-138kB

3.6 提升方法损失函数

3.6.1 Adaboost

05-Adaboost.png-261.9kB
image_1cirnila11ij39q5eu21h191ljs65.png-61.4kB

3.6.2 GBDT-梯度提升树模型

image_1cirofgh03br1a9r1n8eh801omg6u.png-95.6kB
06GBDT损失韩式.png-259.9kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注