分类损失函数(margin 损失函数)——以二分类为例(∈{−1,+1})

距离、间隔(阈值)? 分类损失函数的另一种解读——margin 损失函数

写在前面:

  • 损失函数的作用:衡量真实值 y 和预测值 f(x) 之间不一致的程度
  • 如何衡量差别?或者说如何定义构造损失函数的策略?
    两种思路:①定义为错误分类的数量 ②错误分类点到超平面的距离③拟合和优化 0-1 损失函数?
  • 损失函数如何惩罚增大损失函数?
    通过权重控制——随着𝑚𝑎𝑟𝑔𝑖𝑛→−∞而加大惩罚(结合图)
  • 关键:抓住了 𝑦𝑓(𝑥) 就抓住了分类模型损失函数的核心。

所谓**“惩罚”(penalty)**是指对损失函数中的某些参数做一些限制。


先过一下目标函数的公式:

目标函数 = 经验损失 + 结构损失(obj=loss+Ω)

注:期望风险 -> 结构化风险 = 经验风险 + 正则项 ; 即我们用结构化风险去近似模拟期望风险

我们发现,大多数带参的机器学习模型都逃不过这个公式,现在就对第一个公式中的损失函数做一个总结:

损失函数模型
平方损失函数最小二乘法
Hinge损失函数SVM
log对数损失函数逻辑回归
指数损失函数AdaBoost
0-1 损失函数感知机
绝对值损失函数

下面为常见的二分类问题的损失函数图像。
在这里插入图片描述
下面具体就分类和回归两个角度来具体说明:
用 L(y, f(x)) 来表示损失函数,用以衡量真实值 y预测值 f(x) 之间不一致的程度;
为了便于不同损失函数的比较,常将其表示为单变量的函数,即在回归问题中这个变量为 y-f(x),在分类问题中则为 yf(x)

1. 分类问题的损失函数——用𝑦𝑓(𝑥)来判断

1.0 margin: 𝑦𝑓(𝑥)的由来

二分类问题中的分类规则,或者说决策函数通常为:
在这里插入图片描述
(其它很多说法,这里的判定是 f(x) 而不是 yf(x) )

可以看到:

  • 如果 𝑦𝑓(𝑥)>0,即𝑦与𝑓(𝑥)同号,则判定样本分类正确

  • 如果 𝑦𝑓(𝑥)<0,即𝑦与𝑓(𝑥)异号,则判定分类错误

  • 相应的决策边界都为 𝑓(𝑥)=0

  • 𝑦𝑓(𝑥) 被称为margin(函数间隔),其作用类似于回归问题中的残差 𝑦−𝑓(𝑥)

    这里还要提一下,函数间隔𝑦𝑓(𝑥) 的值如果越大(或者越小) 说明样本离分类平面越远,分类确信度越高。(配合下图理解)

在这里插入图片描述

所以最小化损失函数也可以看作是最大化 margin 的过程,任何合格的分类损失函数都应该对 margin<0 的样本施以较大的惩罚

其实,对于二分类问题,𝑦∈{−1,+1},损失函数常表示为关于𝑦𝑓(𝑥)的单调递减形式:(其实图像不仅仅是递减,而且这些损失函数都是0-1损失的进阶版——单调连续近似函数-最后面会提到)

1.1 0-1损失 (zero-one loss):最自然的损失函数

在这里插入图片描述
损失函数策略:0-1损失函数直接对应分类判断错误的个数当 𝑦𝑓(𝑥)<0 即分类错误就惩罚(取 1),否则取 0

损失函数的惩罚:每个分类错误的样本都会让损失函数增加1,即0-1损失对每个错分类点都施以相同的惩罚,这样那些“错的离谱“ (即 𝑚𝑎𝑟𝑔𝑖𝑛→−∞)的点并不会收到大的关注,这在直觉上不是很合适。另外0-1损失不连续、非凸,优化困难,因而常使用其他的代理损失函数进行优化。

1.2 Logistic loss

Logistic loss为Logistic Regression中使用的损失函数。

注:Logarithmic loss = Logistic loss = log loss = −𝑦𝑖log(𝑝𝑖)−(1−𝑦𝑖)log(1−𝑝𝑖)
在这里插入图片描述

特点:Logistic loss是0-1损失函数的凸上界,且函数处处光滑,因此可以利用梯度下降法进行优化。但是,该损失函数对所有的样本点都有惩罚,因此对异常值相对更敏感一些。

一个容易让人迷惑的地方,注意区分𝑦∈{0,+1} 和 𝑦∈{−1,+1}的情况!!!

1.2.1 Logistic loss 的推导1(y取0和1)

推导过程1:(这个过程完全是在套对数损失函数的公式,不看也罢,但可以用来理解记忆)

逻辑回归的损失函数其实也就是根据对数损失函数(logarithmic loss function) 或对数似然损失函数(log-likehood loss function) 得来的,其过程如下:

  • 对数损失函数
    在这里插入图片描述

直接套对数损失的公式:
在这里插入图片描述参考:知乎某答

若想继续深挖使用极大似然估计进行推导的过程可以参考之前的文章 机器学习算法/模型——逻辑回归

附:常见的损失函数(李航)
在这里插入图片描述

疑问——损失策略:
写到这里才发现自己一直没有从”直观“的角度去理解 LR 的损失函数:上面这个式子到底在表达”距离“的度量还是其它什么东西?

暂且不想,先看看其它推导过程。

(其实,在后面的推导过程中可以发现,其实Logistic的损失函数并非在度量“距离”,而是利用极大似然估计的方法最大化其假设函数(实质是一个概率模型),则预测的结果就是最接近实际值的结果)——这里涉及到概率模型和非概率模型的问题了: 点击

1.2.2 Logistic loss 的推导2(y取值1和-1)

第二种推导方式是对应这篇文章的主旨,𝑦∈{−1,+1} ,使用 yf(x) 作为判断依据。
在这里插入图片描述上面提到了将Logistic loss变为交叉熵损失函数的方法

更详细:点击

但是其依然无法在直观上理解逻辑回归的损失函数,但是这篇博文提到了《深入理解机器学习:从原理到算法》中直接推导出损失函数的思想:

在这里插入图片描述
跟李航的表达式不一样是因为他的设定是y∈{1,-1},李航的是y∈{0,1}。

知道最后才恍然大悟,与其它损失函数一样,逻辑回归损失函数的图像也可以用一个以 yf(x) 为横轴递减函数表示。其中,真实值 y∈{1,-1} ,决策函数f(x)∈[0, 1]
终其本质我们需要让损失函数帮助我们反应两种情况:
预测越准时,loss 越低;预测越不准,loss越高,而预测的准不准是用yf(x)的大小来衡量:yf(x) 越大,使得f(x)更趋近于 1。

其实不论哪种损失函数,都是这个朴素思想。
(待深究)

1.3 Hinge loss

在这里插入图片描述
hinge loss为svm中使用的损失函数,hinge loss使得𝑦𝑓(𝑥)>1的样本损失皆为0,由此带来了稀疏解,使得svm仅通过少量的支持向量就能确定最终超平面。

Hinge loss 在其在 yf(x)=1 处不可导,因此不能用梯度下降算法进行优化,而是要用次梯度下降(Subgradient Decent Method)。

…未完待续

1.4 指数损失(Exponential loss)

在这里插入图片描述
exponential loss为AdaBoost中使用的损失函数,使用exponential loss能比较方便地利用加法模型推导出AdaBoost算法。然而其和squared loss一样,对异常点敏感,不够robust。

1.5 modified Huber loss

在这里插入图片描述modified huber loss结合了hinge loss和logistic loss的优点,既能在𝑦𝑓(𝑥)>1时产生稀疏解提高训练效率,又能进行概率估计。另外其对于(𝑦𝑓(𝑥)<−1) 样本的惩罚以线性增加,这意味着受异常点的干扰较少,比较robust。scikit-learn中的SGDClassifier同样实现了modified huber loss。

2. 分类损失函数图

在这里插入图片描述从上图可以看出上面介绍的这些损失函数都可以看作是0-1损失的单调连续近似函数,而因为这些损失函数通常是凸的连续函数,因此常用来代替0-1损失进行优化。它们的相同点是都随着𝑚𝑎𝑟𝑔𝑖𝑛→−∞而加大惩罚;不同点在于,logistic loss和hinge loss都是线性增长,而exponential loss是以指数增长。

值得注意的是上图中modified huber loss的走向和exponential loss差不多,并不能看出其robust的属性。其实这和算法时间复杂度一样,成倍放大了之后才能体现出巨大差异:
在这里插入图片描述

3. 总结

对分类问题,设 𝑦∈{−1,1}, 𝑠𝑖𝑔𝑛(𝑓(𝑥)) 代表分类器, 定义 𝑧=𝑦𝑓(𝑥) 为 margin 值。
一般来说, margin loss function 代表只需输入 margin 值即可输出 loss 的 function. 也即 ℓ:ℝ→ℝ or ℓ(𝑦,𝑓(𝑥))≜ℓ(𝑦𝑓(𝑥)), 常见的 loss 都可写成 margin loss 的这种形式,例如:

lossmargin loss
0-1 loss (PAC analysis)1{𝑧≤0}
logistic loss (Logistic Regression)log(1+exp(−𝑧))
exponential loss (Boosting)exp(−𝑧)
hinge loss (SVM)[1−𝑧]+
square loss (Linear Regression)(1−𝑧)2
ramp loss (truncated at 𝑠)[1−𝑧]+−[𝑠−𝑧]+

参考:

本文主要参考:常见回归和分类损失函数比较机器学习中 margin loss 、hinge loss 和 ramp loss 的区别,回归的损失函数可以参考最常用的5个回归损失函数

参考:

  1. 常见回归和分类损失函数比较

  2. 机器学习中 margin loss 、hinge loss 和 ramp loss 的区别

  3. LR的损失函数是什么?

  4. logistic回归详解(二):损失函数(cost function)详解

  5. 机器学习中 margin loss 、hinge loss 和 ramp loss 的区别

  • 18
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值