美文网首页
数据挖掘算法基础—损失函数的说明

数据挖掘算法基础—损失函数的说明

作者: 不分享的知识毫无意义 | 来源:发表于2020-01-04 23:27 被阅读0次

    1.关于损失函数的说明

    损失函数是数据挖掘优化的基础,基本上对损失函数求个偏导,也就是我们说的梯度,就是优化目标函数的方法,据此我们可以得到最优参数。
    损失函数分两种,一种是回归问题损失函数,以平方损失、绝对值损失为主,另外一种是分类问题的损失函数,以指数函数和对数函数为主。
    损失函数的本质是什么呢,如果预测对了不惩罚,如果预测错了损失函数要取一个很大的值。

    2.回归问题损失函数

    这种损失函数好理解,比如说我和我室友一个29、一个24、一个25,现在看我们三个住一起,大概是同龄人,又看我长相偏年轻,预测我们26岁,那么损失可以按平方算就是14,可以按绝对值算是6,还可以按其他很多方法算,就是比较简单。

    2.1 方差损失函数

    平方损失函数的标准形式为:L(y,f(x))=(y-f(x))^2
    这个函数是最常用的损失函数形式,不仅在回归问题,在分类问题上也有应用,比如说gbdt,就是使用的平方损失作为损失函数。

    2.2 绝对值损失函数

    绝对值损失函数的标准形式为:L(y,f(x))=|y-f(x)|
    这个也是我们通常所说的L1损失,这个函数使用过程中的不方便之处在于他的导数时不连续的,会给求解造成一定的难度。但是由于这个损失函数考虑的是绝对损失,所以它对异常值会有更好的处理效果。
    一般情况下,在回归问题我们会选方差损失函数,因为它的求导更简单一些。

    2.3 Huber损失函数

    Huber损失函数是一种比较麻烦的损失函数,基本形式如下:


    Huber损失形式

    这个函数主要是对绝对值函数的一个补充,在绝对误差相对较少的时候就变成平方损失函数,结合了绝对值损失和平方损失的优点,在必要时候可以用一下。
    这个函数使用的时候要注意参数的选择,就是控制两种损失函数用哪种。

    2.4 Log-cosh损失函数

    其实大部分情况下到前边就已经结束了,这里的损失函数实际使用的少之又少。
    简单介绍下


    log-cosh函数形式

    这个函数好是好,但是求导数和二阶导比较麻烦。

    2.5 分位数损失函数

    分位数损失函数是对绝对值损失函数的一种拓展,控制着对超过真实值或者小于真实值的惩罚程度,代码如下:


    分位数损失函数

    3.分类问题损失函数

    3.1 对数损失函数

    首先来一个对数损失函数的标准形式:L(Y,P(Y|X))=-log(P(Y|X))
    解释一下这个的数学意义P(Y|X)代表在特定观测数据X下,取得目标函数值Y的概率,我们要据此估计参数,即在什么参数下才最有可能获得当前的观测数据,然后这就是似然估计,取负数就变成损失函数了。
    最典型的应用逻辑回归:

    逻辑回归损失函数形式
    其中,N就是说批量损失的均值,后边那个就是似然函数对数的展开,本来是求最大似然,转换为求最小损失就加个负号,正好对上。然后优化就是对它求偏导,优化参数。
    这里的y就是(0,1)不必考虑(-1,1)情况,要不然损失函数不成立。
    这里有一个补充,我要是非要用(-1,1)作为类别标志呢,其实这个就是FM模型里的数据格式。对数损失函数变为另外一个模式,基本形式是这样的:
    标签为-1和1时对数损失函数形式
    然后取-log(P)。这里的P是概率也就是根据概率判断最终的预测值取-1还是1,阈值需要自己调,准确的说不是损失函数,因此在梯度下降的时候,这个数可能变大, 也可能变小,需要注意。

    3.2 指数损失函数

    指数损失函数的标准形式是:L(y,f(x))=exp(-yf(x))
    指数损失函数主要用于boosting算法中,这就是集成算法,最典型的Adaboost算法,为什么要用指数损失,纯粹是为了计算的方便。具体可以参考这篇文章,写得很清楚adaboost推导
    从数学角度看这个损失函数,当y和预测值f(x)相同的时候,这个数最小,当y和预测值f(x)相反的时候,这个值最大,所以,用它做损失函数很合适。
    指数函数更适合将目标函数值设置为(1,-1)而不是(0,1)。

    3.3 0-1损失函数

    0-1损失函数最好理解的损失函数,没有之一,一般都是用于分类问题。
    指数损失函数的形式为:L(y,f(x))=1 if y=f(x) else 0
    0-1损失函数不管你预测差多少,差1也是错误,差100也是错误。实际使用的并不多,感知机用的就是这种损失函数。

    3.4 Hinge损失函数

    Hinge损失函数的形式为:L(y,f(x))=max(0,1-yf(x))
    这个函数通常用于最大分隔的分类问题,分类目标y也表示为(-1,1)。最典型的应用就是支持向量机了。
    具体可以参考带软间隔的支持向量机目标函数性质。

    相关文章

      网友评论

          本文标题:数据挖掘算法基础—损失函数的说明

          本文链接:https://www.haomeiwen.com/subject/wllaoctx.html