上一篇文章简单介绍了几种集成方法,以随机森林为代表的平均方法,以adaboost、提升树为代表的提升方法。本文继续提升树的讨论,采用梯度提升算法,分析更一般的损失函数下的分类、回归问题。首先介绍几种在机器学习算法中常见的损失函数,继而介绍GBDT算法。
1、 损失函数
1.1、 分类问题损失函数
在二分类中把
m=y⋅f(x)
称为margin。当
m<0
时则说明误分类。基于此,下面介绍几种常见的分类损失函数。
1.1.1、 0-1损失
表达式为:
L01(m)=I(sign(f)≠y)
或者
L01(m)={
0,m⩾01,m<0
即只对误分类样本进行惩罚,类似有后列几种损失。
1.1.2、 指数损失
表达式:
Le=exp(−yf)
Adaboost算法就是用的此种损失函数。在上一篇文章中有介绍。
1.1.3、 log损失
表达式:
Ll=log(1+exp(−yf))
在逻辑回归中用到的损失函数。
1.1.4、均方损失
表达式:
L2=(y−f)2
1.1.5、hinge损失
表达式:
Lh=(1−yf)+
在支持向量机中使用。
1.1.6、偏差损失函数
考虑K分类问题,假设在第k类的概率:
pk(x)=exp(fk(x))∑Kl=1exp(fl(x))
则多项式偏差:
L(y,p(x))=−∑k=1KI(y=gk)logpk(x)=−∑k=1KI(y=gk)fk(x)+log(∑k=1