监督学习中的损失函数

1 分类问题

对于二分类问题,Y = {1, 0}, 我们希望 f ( x i , θ ) = y i f(x_i,θ)=y_i f(xi,θ)=yi

1.1 0-1 损失

,最自然的损失函数是 0-1 损失,即
在这里插入图片描述
可以写为简洁形式, L 0 − 1 ( f , y ) = I ( f y < = 0 ) L_{0-1}(f,y)=I(fy<=0) L01(f,y)=I(fy<=0), I ( P ) I(P) I(P) 为指示函数,当且仅当P为真时时取 1,否则取 0。该损失函数能够直观地刻画分类的错误率,但是由于其非凸 、 非光滑的特点 ,使得算法很难直接对该函数进行优化

1.2 Hinge 损失函数

0-1函数的一个代理函数是 Hinge 损失函数:
L h i n g e ( f , y ) = m a x ( 0 , 1 − f y ) L_{hinge}(f,y)=max(0, 1-fy) Lhinge(f,y)=max(0,1fy)
Hinge 损失在 f y = 1 fy=1 fy=1 处不可导,因此不能用梯度下降法进行优化 , 而是用次梯度下降法(Subgradient Descent Method)

1.3 Logistic 损失函数

0-1 损失的另一个代理损失函数是 Logistic 损失函数:
· L l o g i s t i c ( f , y ) = l o g 2 ( 1 + e x p ( − f y ) ) L_{logistic}(f,y)=log_2(1+exp(-fy)) Llogistic(f,y)=log2(1+exp(fy))
该函数处处光滑,因此可以用梯度下降法进行优化。但是,该损失函数对所有的样本点都有所惩罚,因此对异常值相对重敏感一些

1.4 交叉熵

当预测值 f ∈ [ − 1 , 1 ] f∈[-1,1] f[1,1] 时,常用的另一个代理损失是交叉熵损失函数:
在这里插入图片描述

以上四个损失函数曲线:
在这里插入图片描述

2 回归问题

对于回归问题, $y = R $,我们希望 f ( x i , θ ) ≈ y i f(x_i, θ)≈y_i f(xi,θ)yi

2.1 平方损失函数

最常用的损失函数是平方损失函数
L s q u a r e ( f , y ) = ( f − y ) 2 L_{square}(f,y)=(f-y)^2 Lsquare(f,y)=(fy)2
平方损失函数是光渭函数,能够用梯度下降法进行优化 。然而,当预测值距离真实值较远时,平方损失函数的惩罚力度较大,它对异常点敏感

2.2 绝对损失函数

L a b s o u t e ( f , y ) = ∣ f − y ∣ L_{absoute}(f,y)=|f-y| Labsoute(f,y)=fy
绝对损失函数相当于是在做中值回归,相比做均值回归的平方损失函数,绝对损失函数对异常点更鲁棒一些.但是,绝对损失函数在 f = y f=y f=y 处无法求导数 。

2.3 Huber 损失函数

综合考虑可导性和对异常点的鲁棒性,可以采用 Huber 损失函数

在这里插入图片描述
Huber函数在 ∣ f − y ∣ |f-y| fy 较小时为平方损失,在 ∣ f − y ∣ |f-y| fy 较大时为线性损失,处处可到,且对异常点鲁棒

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np

xmin, xmax = -4, 4
xx = np.linspace(xmin, xmax, 100)
plt.plot([xmin, 0, 0, xmax], [1, 1, 0, 0], 'k-', label="Zero-one loss")
plt.plot(xx, np.where(xx < 1, 1 - xx, 0), 'g-', label="Hinge loss")
plt.plot(xx, np.log2(1 + np.exp(-xx)), 'r-', label="Log loss")
plt.plot(xx, np.exp(-xx), 'c-', label="Exponential loss")
plt.plot(xx, -np.minimum(xx, 0), 'm-', label="Perceptron loss")

plt.ylim((0, 8))
plt.legend(loc="upper right")
plt.xlabel(r"Decision function $f(x)$")
plt.ylabel("$L(y, f(x))$")
plt.show()

参考

1 机器学习模型中的损失函数loss function
2 百面机器学习

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值