随机森林算法

随机森林算法梳理

集成学习的概念

集成学习使用多个分类器,发挥各个个体学习器的优点,实现多样性,从而实现较好的拟合效果。目前分位三种继承学习:boosting、bagging以及stacking。

个体学习器的概念

个体学习器是集成学习中的子概念,是指集成学习中使用的子学习器。个体学习器需要保持多样性,这样才能发挥集成学习的优势。
怎么样发挥个体学习器的多样性呢?

  1. 增加数据样本扰动。对于不稳定的个体学习器有较好的效果,比如决策树和神经网络。而对于稳定的个体学习器线性(学习器、支持向量机、朴素贝叶斯、K近邻学习器),就没有好的效果了。
  2. 输入属性扰动。就是将输入样本的属性空间分称多个子属性空间,再基于每个子属性空间训练学习器,这样不仅能获得多样性好的子学习器,而且还会降低训练时间。
  3. 输出表示扰动。基本思路是对输出表示进行操纵以增强多样性。可对训练样本的类标记稍作变动,如“翻转法”,翻转法由Breiman在2000年随机改变一些训练样本的标记;或者是对输出表示进行转化,如“输出调制法”将分类输出转化为回归输出后构建个体学习器。还可以将原任务拆解为多个可同时求解的子任务。
  4. 算法参数扰动。这里的算法参数一般要对参数进行设置,比如神经网络的隐层神经元数、初始连接权值等,通过随机设置不同的参数,往往可产生差别较大的个体学习器。比如可以将决策树使用的属性选择机制替换为其他的属性选择机制。“负相关法”显示地通过正则化项来强制个体神经网络使用不同的参数。

boosting bagging的概念、异同点

boosting是使用一系列弱分类器来集成的。经典算法有:Adaboost、GBDT、XGBoost。boost是串行的。Adaboost是根据当前学习器的学习结果,对于误差较大的样本增强权重。GBDT和XGBoost都是拟合残差的算法。
boosting
bagging算法就是并行训练一堆学习器。经典算法:随机森林
多个分类器

Stacking模型:聚合多个分类或回归模型(可以分阶段来做)

理解不同的结合策略(平均法,投票法,学习法)

  1. 平均法:对数值型输出,最常见的结合策略是使用平均法。有简单平均法和加权平均法。(1)规模大的集成,学习的权重较多,加权平均法易导致过拟合;(2)个体学习器性能相差较大时宜使用加权平均法,相近用简单平均法
  2. 投票法:(1)绝对多数投票法:某标记超过半数; (2)相对多数投票法:预测为得票最多的标记,若同时有多个标记的票最高,则从中随机选取一个。 (3)加权投票法:提供了预测结果,与加权平均法类似。
  3. 学习法:分为初级学习器和次级学习器。次级学习器是用来学习初级学习器的结合策略的。次级学习器的输入是初级学习器的输出,从而确定结合策略。
输入:训练集D=(x1,y1),(x2,y2),...,(xm,ym); 
初级学习算法:Λ1,Λ2,...,ΛT;
次级学习算法:Λ
过程: 
1、for t=1,2,...,T do
2、	ht=Λt(D); 
3、end for
4、D‘=∅
5、for i=1,2,...,m do
6、	for t=1,2,...,T do
7、		zit=ht(xi);
8、	endfor
9、	D′=D′⋃((zi1,zi2,...,ziT),yi);
10、endfor
11、h′=Λ(D′);
 
输出:H(x)=h′(h1(x),h2(x),...,hT(x))

随机森林的思想

  1. 数据采样随机。给定一个训练样本集,数量为N,我们使用有放回采样到N个样本,构成一个新的训练集。注意这里是有放回的采样,所以会采样到重复的样本。详细来说,就是采样N次,每次采样一个,放回,继续采样。即得到了N个样本。

  2. 特征选择随机 (可以命名为二重随机性)。在构建决策树的时候,我们前面已经讲过如何在一个节点上,计算所有特征的InformationGain(ID3) 或者 GainRatio(C4.5),然后选择一个最大增益的特征作为划分下一个子节点的走向。 但是,在随机森林中,我们不计算所有特征的增益,而是从总量为M的特征向量中,随机选择m个特征,其中m可以等于sqrt(M),然后计算m个特征的增益,选择最优特征(属性)。注意,这里的随机选择特征是无放回的选择!

随机森林的推广

后面再看

随机森林的优缺点

  1. 优点:(1)它能够处理很高维度(feature很多)的数据,并且不用做特征选择;(2)由于随机选择样本导致的每次学习决策树使用不同训练集,所以可以一定程度上避免过拟合;
  2. 缺点:(1)随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合;(2)对于有不同级别的属性的数据,级别划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的

随机森林在sklearn中的参数解释

  1. splitter:特征切分点选择标准,决策树是递归地选择最优切分点,spliter是用来指明在哪个集合上来递归,有“best”和“random”两种参数可以选择,best表示在所有特征上递归,适用于数据集较小的时候,random表示随机选择一部分特征进行递归,适用于数据集较大的时候。
  2. max_depth:决策树最大深度,决策树模型先对所有数据集进行切分,再在子数据集上继续循环这个切分过程,max_depth可以理解成用来限制这个循环次数。
  3. min_samples_split:子数据集再切分需要的最小样本量,默认是2,如果子数据样本量小于2时,则不再进行下一步切分。如果数据量较小,使用默认值就可,如果数据量较大,为降低计算量,应该把这个值增大,即限制子数据集的切分次数。
  4. min_samples_leaf:叶节点(子数据集)最小样本数,如果子数据集中的样本数小于这个值,那么该叶节点和其兄弟节点都会被剪枝(去掉),该值默认为1。
  5. min_weight_fraction_leaf:在叶节点处的所有输入样本权重总和的最小加权分数,如果不输入则表示所有的叶节点的权重是一致的。
  6. max_features:特征切分时考虑的最大特征数量,默认是对所有特征进行切分,也可以传入int类型的值,表示具体的特征个数;也可以是浮点数,则表示特征个数的百分比;还可以是sqrt,表示总特征数的平方根;也可以是log2,表示总特征数的log个特征。
  7. random_state:随机种子的设置,与LR中参数一致。
  8. max_leaf_nodes:最大叶节点个数,即数据集切分成子数据集的最大个数。
  9. min_impurity_decrease:切分点不纯度最小减少程度,如果某个结点的不纯度减少小于这个值,那么该切分点就会被移除。
  10. min_impurity_split:切分点最小不纯度,用来限制数据集的继续切分(决策树的生成),如果某个节点的不纯度(可以理解为分类错误率)小于这个阈值,那么该点的数据将不再进行切分。
  11. class_weight:权重设置,主要是用于处理不平衡样本,与LR模型中的参数一致,可以自定义类别权重,也可以直接使用balanced参数值进行不平衡样本处理。
  12. n_estimators:随机森林中树的棵树,默认是10棵。
    criterion:样本集切分策略,默认是gini指数,此时树模型为CART模型,当值选为信息增益的时候,模型就成了ID3模型,默认为CART模型。
  13. bootstrap:是统计学中的一种重采样技术,可以简单理解成是有放回地抽样,默认是True,即采取有放回抽样这种策略,这不就是bagging的思想么。
  14. oob_score:袋外估计(out-of-bag),这个外是针对于bagging这个袋子而言的,我们知道,bagging采取的随机抽样的方式去建立树模型,那么那些未被抽取到的样本集,也就是未参与建立树模型的数据集就是袋外数据集,我们就可以用这部分数据集去验证模型效果,默认值为False。

随机森林的应用场景

  1. 由于随机性,对于降低模型的方差很有作用,故随机森林一般不需要额外做剪枝,即可以取得较好的泛化能力和抗过拟合能力(Low Variance)。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些(High Bias),仅仅是相对的。
    应用:

  2. 不要求是linear features (do not expect linear features or even features that interact linearly), 比如LR很难处理categorical features,而Tree Ensembles,是一些决策树的集合,可以很容易得处理这些情况
    由于算法构建的过程(bagging or boosting),这类算法很容易处理高维的数据,大量的训练数据的场景

你可能感兴趣的:(算法,机器学习)