本文是要配合《统计学习方法》才能看懂的,因为中间有些符号和定义是直接使用书本中的
先弄明白以下三个公式:
1)Boost(提升法)=加法模型(即基函数的线性组合)+前向分步算法+损失函数
2)Adaboost=Boost+损失函数是指数函数(基函数可以任意)
3)提升树=Boost+基函数是决策树(损失函数可以任意)
由此可以看出:
1)Boost是一种算法框架,而这种框架是由加法模型和前向分步算法构成的。
2)Adaboost和提升树都是Boost的子集,都是由限定了Boost中某一部分元素而得到的。
前向分步算法(解决加法模型):每次学习一个基函数的参数Gm(x)(即下一个基函数)
下一个基函数的选择标准:在已经学习到加法模型fm-1(x)的基础上,选择一个使得损失最小的基函数Gm(x)
损失函数:
1)指数损失函数:决定了Adaboost必须进行加权取样(权重由错误率决定),以进行下一个模型的参数学习,并且决定了最终模型也是加权累计
2)平方误差损失函数:决定了BRT的下一个模型应该学习前一个模型的残差
3)一般损失函数:决定了GBRT/GBDT的下一个模型应该学习前一个模型的梯度(残差近似)
各种提升决策树
1)BDT(提升决策树,二分类):Adaboost中将模型选定为二类分类树,即二类分类树+指数损失—>加权【可以称为:提升分类树的Adaboost方法】
2)BRT(提升回归树):二叉回归树+平方误差损失—>残差
3)GBRT:二叉回归树+普通损失函数—>损失函数的负梯度(残差的替代)
4)GBDT:二叉分类树+普通损失函数—>损失函数的负梯度
当损失函数是平方误差损失时,其负梯度就是残差,即此时GBRT=BRT
三种方法都是组合方法,组合方法是使用多个分类器进行投票【构造每个分类器的样本都是通过有放回抽样得到的】
1、Bagging(装袋):k次抽样,训练k次,得到k个模型(分类器),等权重投票
2、Adaboost(提升):【在样本抽取上做文章,按权取样本,按权投票】
1)k次抽样:每个样本被抽到的机会由其权重决定(初始时样本权重一样)
2)训练k次:每次训练结束后要使用得到模型的错误率(<0.5)来修改样本权重,提高那些前一轮弱分类器错误分类样本的权值,降低那些被正确分类样本的权值。
3)得到k个模型:每个模型的权重由其错误率决定
4)加权投票【累计】。
3、RF(随机森林)【在分裂属性上做文章】:
1)k次抽样(有放回抽样)【行抽样】
2)训练k次:(独立训练,可以采用分布式计算)
每次训练都是得到一棵决策树,可以用任意一种(不剪枝的)决策树算法(ID3/C45/CART),但是分裂节点使用的候选特征不再是全部特征。
Forest-RI:每一个节点都随机选择F个特征【列抽样】作为节点划分候选特征。
Forest-RC:每一个节点随机选择L个特征【列抽样】,并且从[-1,1]中随机选择系数,相加得到一个特征。由此法得到F个特征,使用CART进行分支
3)得到k个模型:k棵决策树
4)等权投票。
比较:
1、过拟合问题
1)Bagging:不存在过拟合:因为它每个分类器都是独立的,训练数据不一样(行抽样)
2)Adaboost:存在过拟合:因为它总是关注分错了的样本
3) RF:不存在过拟合:因为每个分类器都是独立的,不但训练数据不同(行抽样),而且特征也不一样(列抽样,类似于领域专家)
2、性能比较
1)Adaboost比Bagging准确率高,但存在过拟合
2)RF准确率和Adaboost差不多,但更具鲁棒性,不存在过拟合,对F值敏感【通常取log2d+1,一般F=1的效果很好】