谈谈分类器的损失函数(1)

分类器(Classifier),顾名思义,给定一个实例,自动给这个实例进行归类。我们首先讨论二分类器(Binary Classifier)的情况。

  • 数据<x[i], y[i]>

  • y[i] = {1, -1} 分别表示正反例

  • 分类器模型M = f(x[i]) 表示x[i]为正例的分数,取值为实数 (-inf, inf)


Q1: 要寻找最佳的分类器模型的首要任务:如何评估给定的分类器模型?

A1: 分类器模型表现与实际分类y[i]越不一致,刻画错误程度的分值越高

Q2: 怎么定义是否不一致?不一致的程度如何?

A2: 我们需要一个这样的函数L(f(x[i]), y[i])来衡量模型表现。这样的函数需要在f(x[i])指示的分类与正确分类一致的时候,分值较低;反之,分值较高。


上述的L(f(x[i]), y[i])就是我们常说的损失函数。



Gold standard

对于f(x[i]) in (-inf, inf), 如果f(x[i]) > 0, 归类正例; 否则,归类负例。那么,f(x[i])*y[i] > 0表示分类正确(f(x[i]) > 0且y[i] = 1; 或者 f(x[i]) < 0且y[i] = -1);否则,表示分类错误。


最直接的损失函数就是通过判断f(x[i])*y[i]的正负统计是否分类错误:

这个损失函数,与错误定义一致,称为金标准,或0/1损失函数。

函数曲线为如上的阶梯函数。有三个特点:不连续,非凸,不平滑。由于这三个特点,损失函数的优化难度很大。



Hinge Loss

在0/1 Loss的基础上,做两点改动:

  1. 对于正例(y[i] = 1), f(x[i])必须大于等于1;而对于负例(y[i] = -1), f(x[i])必须小于等于-1 (相比之前f(x[i])与0对比,加强条件,提高稳定性)

  2. 没有达到要求的情况,视为错误。f(x[i])权值偏离越大,错误越严重

上述改动之后的损失函数为Hinge Loss,为SVM模型使用的损失函数。

Hinge Loss损失函数曲线如下蓝线:连续,凸,非平滑



Logistic Loss

Logistic Loss是逻辑回归使用的损失函数。

定义


如果统一上述两个式子,可以得到:


根据最大似然估计,有


求和式子内部为Logistic Loss损失函数


损失函数的曲线如下红色曲线:满足连续,凸,平滑。




Cross Entropy Loss

Logistic Loss定义中的y[i] = {1, -1}, 调整正负例标示修改为t[i] = {1, 0}

与Logistic Loss同样的定义


统一上述两个式子:


同样根据最大似然估计可得:


求和式子内部为Cross Entropy Loss损失函数


可见:交叉熵损失函数与Logistic损失函数是等价的。


Exp Loss

指数损失函数是AdaBoost算法中使用的损失函数:


指数损失函数的曲线如下图蓝线,同样满足三个特性:连续,凸,平滑。


Hinge Loss,Logistic Loss,Cross entropy Loss,Exp Loss的曲线趋势是类似的,都是常见的01损失函数的替代损失函数。原始的01损失函数难于优化,而这些替代损失函数由各自的函数特性有相应的优化算法。


下回,我们看看多分类器的损失函数是怎么样的?


更多内容

  • 从贝叶斯的角度看正则项

  • 从优化的角度看正则项

  • 从Trie到Double Array Trie

  • 二元数及其在自动微分中的应用

  • 计算机求导的四种方法

欢迎关注公众号: inkfish-talk

本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院