常见的损失函数

1 损失函数的一般形式

   通常机器学习每一个算法中都会有一个目标函数,算法的求解过程是通过对这个目标函数优化的过程。在分类或者回归问题中,通常使用损失函数(代价函数)作为其目标函数。损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的算法使用的损失函数不一样。
  损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是指经验风险损失函数加上正则项。通常表示为如下:
θ ∗ = a r g m i n 1 N ∑ i = 1 N L ( y i , f ( x i ; θ i ) ) + λ Φ ( θ ) \theta ^{*}=argmin\frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i};\theta_{i} ))+\lambda \Phi (\theta ) θ=argminN1i=1NL(yi,f(xi;θi))+λΦ(θ)
  其中,前面的均值项表示经验风险函数,L表示损失函数,后面的 λ Φ ( θ ) \lambda \Phi (\theta ) λΦ(θ)是正则化项(regularizer)或惩罚项(penalty term),它可以是L1、L2或者其他正则函数。整个式子表示要找到使得目标函数最小的参数 θ ∗ \theta^* θ值。

2 几种常用的损失函数

2.1 0-1损失函数

0-1损失是指,预测值和目标值不相等为1,否则为0:
L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y,f(X))=\left\{\begin{matrix} 1, Y\neq f(X)\\ 0, Y=f(X) \end{matrix}\right. L(Y,f(X))={1,Y̸=f(X)0,Y=f(X)
感知机就是用的这种损失函数。但是由于相等这个条件太过严格,因此我们可以放宽条件,即满足 |Y−f(X)|<T|Y−f(X)|<T 时认为相等。
L ( Y , f ( X ) ) = { 1 , ∣ Y − f ( X ) ∣ ≥ T 0 , ∣ Y = f ( X ) ∣ &lt; T L(Y,f(X))=\left\{\begin{matrix} 1, |Y-f(X)|\geq T\\ 0, |Y=f(X)|&lt;T \end{matrix}\right. L(Y,f(X))={1,Yf(X)T0,Y=f(X)<T

2.2 绝对值损失函数

L ( Y , f ( X ) = ∣ Y − f ( X ) ∣ L(Y,f(X)=|Y-f(X)| L(Y,f(X)=Yf(X)

2.3 平方损失函数

最小二乘法是线性回归的一种方法,它将回归的问题转化为了凸优化的问题。最小二乘法的基本原则是:最优拟合曲线应该使得所有点到回归直线的距离和最小。通常用欧几里得距离进行距离的度量。平方损失的损失函数为:
L ( Y , f ( X ) ) = ∑ N ( Y − f ( X ) ) 2 L(Y,f(X)) = \sum_{N}(Y - f(X))^{2} L(Y,f(X))=N(Yf(X))2

2.4 指数损失函数

AdaBoost就是一指数损失函数为损失函数的。
指数损失函数的标准形式:
L ( Y , f ( X ) ) = e x p [ − y f ( x ) ] L(Y,f(X)) = exp[-yf(x)] L(Y,f(X))=exp[yf(x)]

2.5 对数损失函数

2.5.1 对数损失函数原理

  对数损失, 即对数似然损失(Log-likelihood Loss), 也称逻辑回归损失(Logistic Loss)或交叉熵损失(cross-entropy Loss), 是在概率估计上定义的.它常用于(multi-nominal, 多项)逻辑斯谛回归和神经网络,以及一些期望极大算法的变体. 可用于评估分类器的概率输出。
  对数损失通过惩罚错误的分类,实现对分类器的准确度(Accuracy)的量化. 最小化对数损失基本等价于最大化分类器的准确度.为了计算对数损失, 分类器必须提供对输入的所属的每个类别的概率值, 不只是最可能的类别。对数损失函数的计算公式如下:
L ( Y , P ( Y ∣ X ) ) = − l o g P ( Y ∣ X ) = − 1 N ∑ i = 1 N ∑ j = 1 M y i j l o g ( p i j ) L(Y,P(Y|X))=-logP(Y|X)=-\frac{1}{N}\sum_{i=1}^N\sum_{j=1}^My_{ij}log(p_{ij}) L(Y,P(YX))=logP(YX)=N1i=1Nj=1Myijlog(pij)
  其中, Y Y Y 为输出变量, X X X为输入变量, L L L 为损失函数. N N N为输入样本量, M M M为可能的类别数, y i j y_{ij} yij 是一个二值指标, 表示类别 j j j 是否是输入实例 x i x_i xi 的真实类别。 p i j p_{ij} pij 为模型或分类器预测输入实例 x i x_i xi 属于类别 j j j 的概率.
  如果只有两类 {0, 1}, 则对数损失函数的公式简化为
L ( Y , P ( Y ∣ X ) ) = − 1 N ∑ i = 1 N [ y i l o g p i + ( 1 − y i ) l o g ( 1 − p i ) ] L(Y,P(Y|X))=-\frac{1}{N}\sum_{i=1}^N[y_ilogp_i + (1-y_i)log(1-p_i)] L(Y,P(YX))=N1i=1N[yilogpi+(1yi)log(1pi)]
  这时, y i y_i yi 为输入实例 x i x_i xi 的真实类别, p i p_i pi 为预测输入实例 x i x_i xi 属于类别 1 的概率. 对所有样本的对数损失表示对每个样本的对数损失的平均值, 对于完美的分类器, 对数损失为 0。

2.5.2 sklearn中的log_loss

sklearn中的对数损失函数方法:

from sklearn.metrics import log_loss
def unitest():
    y_true = [0, 0, 1, 1]
    y_pred = [0.1, 0.2, 0.7, 0.99]
    print (log_loss(y_true, y_pred))

    if __name__ == '__main__':
    	unitest()

参考网址:
对数损失函数(Logarithmic Loss Function)的原理和 Python 实现

2.6 Hinge损失函数

Hinge loss用于最大间隔(maximum-margin)分类,其中最有代表性的就是支持向量机SVM。
Hinge函数的标准形式:
在这里插入图片描述(与上面统一的形式:)
在这里插入图片描述
  其中,t为目标值(-1或+1),y是分类器输出的预测值,并不直接是类标签。其含义为,当t和y的符号相同时(表示y预测正确)并且|y|≥1时,hinge loss为0;当t和y的符号相反时,hinge loss随着y的增大线性增大。

参考网址:
常见的损失函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张之海

若有帮助,客官打赏一分吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值