zoukankan      html  css  js  c++  java
  • 数据挖掘与机器学习--损失函数

    损失函数是用来估量模型的预测值f(x)与真实值不y一致的程度。我们的目的就是最小化损失函数,让f(x)与y尽量接近。

    通常可以使用梯度下降寻找函数最小值

    损失函数大致可以分成两类:回归和分类

    回归类型损失函数

    均方误差(Mean Square Error,MSE)

    模型预测值与样本真实值之间距离平方的平均值
    MSE是比较常用的一种损失函数它的曲线特点是光滑连续,可导,有利于使用梯度下降算法。而且MSE随着误差的减小,梯度也在减小,这有利于函数的收敛,不易产生震荡。

    当y与f(x)的差值大于1时,MSE会增大其误差,当y与f(x)的差值小于1时,MSE会减少其误差,这是由平方的特性决定的,也就是说MSE会对误差较大的情况给予更大的惩罚,对误差较小的情况给予更小的惩罚。

    平均绝对误差(MAE)

    缺点:MAE的曲线呈V字型,连续但在y-f(x)=0处不可导,计算机求解导数比较困难。而且MAE大部分情况下梯度都是相等的,这意味着即使很小的损失值,其梯度也是太的,在损失较小时容易产生震荡 ,这不利于函数的收敛和模型的学习。
    优点:MAE 相比MSE有个优点就是MAE对离群点不那么敏感,更有包容性,所以鲁棒性比较好。因为MAE计算的是误差y-f(x)的绝对值,无论是y-f(x)>1还是y-f(x)<1,没有平方项的作用,惩罚力度都是一样的,所占权重一样。

    MSE与MAE

    MSE与MAE
    ·从计算机求解梯度的复杂度来说,MSE要优于MAE,而且梯度也是动态变化的,能较快准确达到收敛。
    ·从离群点角度来看,如果离群点是重要数据,或者是应该被检测到的异常值,即我们需要关注的样本时,那么我们应该使用MSE。
    ·若离群点是数据损坏或者错误采样和标注错误等情况,无须给予过多关注,那么我们应该选择MAE作为损失。但这种情况下,也可以通过实际情况,对这些噪音点进行相应的过滤处理后,再结合MSE进行训练,从而达到较好的效果。

    什么是震荡

    MAE棱角过于分明,容易在左右两个界限见跳动(震荡),而MSE弧度缓和,差值越来越小,叫容易停在断点

    Huber Loss

    回归-Huber损失
    ·Huber Loss 是对MSE和MAE的综合
    ·Ω值决定了Huber Loss对MSE和MAE的侧重性,当ly-f(x)1≤Ω时,变为MSE,梯度逐渐减小,能够保证模型更精确地得到全局最优值;当ly-f(x)1>Ω时,则变成类似于MAE,梯度一直近似为Ω,能够保证模型以一个较快的速度更新参数。因此Huber Loss 同时具备了MSE和MAE的优点,减小了对离群点的敏感度问题,实现了处处可导的功能。
    ·通常来说,超参数Ω可以通过交叉验证选取最佳值。

    ·交叉熵Loss的优点是在整个实数域内,Loss近似线性变化。尤其是当ys<<0的时候,Loss更近似线性。这样,模型受异常点的干扰就较小。
    而且,交叉熵Loss连续可导,便于求导计算,是使用最广泛的损失函数之一。

  • 相关阅读:
    关于等价类测试的简单实践 20150322
    对软件测试的理解 20150314
    pthread_wrap.h
    libuv 错误号UV_ECANCELED 的处理
    简单的后台日志组件
    Windows NTService 后台框架封装
    检查程序进程是否存在/强制杀掉程序进程
    析构函数结束线程测试
    移动天线
    猜数字游戏的Java小程序
  • 原文地址:https://www.cnblogs.com/AmosAlbert/p/12832192.html
Copyright © 2011-2022 走看看