参考文献:李航的统计学习方法
Boosting(提升)方法:
在分类任务中,通过改变训练样本的权重,学习多个分类器,并将这些分类器线性组合,提升分类的性能。这里提升的意思是指,将弱学习算法提升为强学习算法。这里就涉及到两个问题:如何修改样本的权重;如何将多个弱分类器整合成一个强分类器;
Adaboost:
针对上面提出的两个问题,adaboost是这样解决的:提高被分错样本的权重,降低分对样本的权重;加大分错概率较低的分类器的权重,降低分错概率较高的分类器的权重。
其实可以只用分类最准确的那个分类器,但是在PAC(概率近似正确)问题中,弱学习算法和强学习算法是等价的,没有高低之分。
Adaboost过程:
Wmi表示第m个分类器,对样本Xi的权重,对于第一分类器,每个样本的权重是一样的,为1/N,N表示样本数量。
Yi表示样本实际标签,Gi表示分类器的预测值,I(Yi,Gi)表示误差函数。
分类器e(m)表示第m个基分类器在目前样本的分类误差率
e(m)=sum(1->N):Wmi*I(Yi,Gi)
分类器m的权重a(m)=0.5*loge( (1-e(m)) / e(m) )
第m+1个分类器的样本权重W(m+1,i)=(W(m,i)/Z)*exp(-a(m)*Yi*Gi)
Z表示所有样本的 exp(-a(m)*Yi*Gi) 值的和,起到归一化作用。
当该样本在第m个分类器分对的时候,W会变小;反之,会变大。
通过上述步骤,就训练了第m个分类器,同时得到了第m个分类器的权重,以及训练下一个分类器的样本权重。
最后的分类结果:G(x)=sign sum( a(mi)G(mi) )
符号函数:x<0,y=-1;x>0,y=1;x=0,y=0
书中给出了具体例子,可以加深理解。
提升树:
基分类器是决策树或者回归树的提升方法。提升树被认为是统计学习中性能最好方法之一。
CART树:
GBDT的弱分类器是CART决策树
Cart决策树必须是二叉树
作为回归树时,通过最小化平方误差来选择特征并进行划分。
作为分类树时,通过最小化gini系数来选择特征并进行划分。
GBDT进行多分类:
转化为多个二分类问题,再用softmax得到预测概率。
GBDT进行特征选择:
一个样本落到每个决策树的哪个叶子结点
GBDT+LR
图中共有两棵树,x为一条输入样本,遍历两棵树后,x样本分别落到两颗树的叶子节点上,每个叶子节点对应LR一维特征,那么通过遍历树,就得到了该样本对应的所有LR特征。构造的新特征向量是取值0/1的。举例来说:上图有两棵树,左树有三个叶子节点,右树有两个叶子节点,最终的特征即为五维的向量。对于输入x,假设他落在左树第一个节点,编码[1,0,0],落在右树第二个节点则编码[0,1],所以整体的编码为[1,0,0,0,1],这类编码作为特征,输入到LR中进行分类。
对比RF:
在spark中,GBDT只能做二分类,RF可以多分类;
GBDT基分类器的训练,是串行的,训练时间较长;
GBDT更容易过拟合。GBDT拟合的是残差,迭代次数(基分类器)越多,更容易过拟合;RF基分类器越多,参与投票的专家越多,更加不容易过拟合;
GBDT一般选择更浅(深度小)的树(一般是深度为1,就可以得到好的效果),基分类器的训练会快一些;
RF更容易调参。因为一般基分类器数量越多,效果越好。而GBDT会过拟合;