机器学习系列之RandomForest/Adaboost

目录

RandomForest

每棵树生成规则:

随机森林包含两个随机:

Adaboost

迭代过程: 

加权结果:

参见网址:


RandomForest

随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。将若干个弱分类器的分类结果进行投票选择,从而组成一个强分类器,这就是随机森林bagging的思想。

每棵树生成规则:

  1. 如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本(这种采样方式称为bootstrap sample方法),作为该树的训练集;每棵树的训练集都是不同的,而且里面包含重复的训练样本(理解这点很重要)。
  2. 如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
  3. 每棵树都尽最大程度的生长,并且没有剪枝过程。

随机森林包含两个随机:

  1. 一个是随机有放回的抽样训练集
  2. 一个是随机地从M个特征中选取m个特征子集

机器学习系列之RandomForest/Adaboost

很有意义的一个随机森林,查询子特征贡献的包:

随机森林中每棵树,对应着随机选取的子特征。而每个特征的作用和贡献,在scikit - learn中没有体现。所以有这样一个包,pip install treeinterprete 将随机森林变成一个「白箱子」,这样每次预测就能被分解为各项特征的贡献和,即预测=偏差+特征 1 贡献+ ... +特征 n 贡献

Adaboost

Adaboost就是将多个弱分类器,按照一定顺序学习,根据组合策略最后形成一个最终的强分离器。

机器学习系列之RandomForest/Adaboost

上面这张图就表示了整个集成学习的过程。首先给数据集每个样本分配一个初始相同的参数,然后在第一个弱分类器进行训练,学习后根据分类结果(误分率),对弱分类器设定系数,并对数据集重新分配权重,分类正确的数据集,权重降低,分类错误的数据集,权重增加。下一步,使用写的数据集,进行下一次迭代训练。最终根据N个分类器的综合效果输出。

迭代过程: 

1. 新增弱分类器WeakClassifier(i)与弱分类器权重alpha(i) 
2. 通过数据集data与数据权重W(i)训练弱分类器WeakClassifier(i),并得出其分类错误率,以此计算出其弱分类器权重alpha(i) 
3. 通过加权投票表决的方法,让所有弱分类器进行加权投票表决的方法得到最终预测输出,计算最终分类错误率,如果最终错误率低于设定阈值(比如5%),那么迭代结束;如果最终错误率高于设定阈值,那么更新数据权重得到W(i+1)

加权结果:

按照3次迭代,3个决策点说明。以7点为例,本身分类权重为0.5,中间13点的左侧权重为-0.3,右边19点的左侧权重为0.4,最终之和为0.5+(-0.3)+0.4 = 0.6;按照符号函数,所以7点左侧分类结果为正。

机器学习系列之RandomForest/Adaboost

参见网址:

https://www.tuicool.com/articles/2MRbiuAhttps://github.com/andosa/treeinterpreter

https://blog.****.net/px_528/article/details/72963977