随机森林总结笔记

1.随机森林原理介绍

随机森林,指的是利用多棵树对样本进行训练并预测的一种分类器。

简单来说,随机森林就是由多棵CART(Classification And Regression Tree)构成的。

对于每棵树,它们使用的训练集是从总的训练集中有放回采样出来的,这意味着,总的训练集中的有些样本可能多次出现在一棵树的训练集中,也可能从未出现在一棵树的训练集中。在训练每棵树的节点时,使用的特征是从所有特征中按照一定比例随机地无放回的抽取的,

根据Leo Breiman的建议,假设总的特征数量为N,这个比例可以是

    a. sqrt(M),

    b. 1/2sqrt(N)

c. 2sqrt(N)

因此,随机森林的训练过程可以总结如下:

(1)    给定训练集S,测试集T,特征维数F。确定参数:使用到的CART的数量t,每棵树的深度d,每个节点使用到的特征数量f, 终止条件:节点上最

少样本数s,节点上最少的信息增益m

(2)    从S中有放回的抽取大小和S一样的训练集S(i),作为根节点的样本,从根节点开始训练

(3) 如果当前节点上达到终止条件,则设置当前节点为叶子节点,如果是分类问题,该叶子节点的预测输出为当前节点样本集合中数量最多的那一

类c(j),概率p为c(j)占当前样本集的比例;如果是回归问题,预测输出为当前节点样本集各个样本值的平均值。然后继续训练其他节点。如果当

前节点没有达到终止条件,则从F维特征中无放回的随机选取f维特征。利用这f维特征,寻找分类效果最好的一维特征k及其阈值th,当前节点上

样本第k维特征小于th的样本被划分到左节点,其余的被划分到右节点。继续训练其他节点。有关分类效果的评判标准在后面会讲。

(4) 重复(2)(3)直到所有节点都训练过了或者被标记为叶子节点。

(5) 重复(2),(3),(4)直到所有CART都被训练过。

利用随机森林的预测过程如下:

对于第1-t棵树,i=1-t:

(1)从当前树的根节点开始,根据当前节点的阈值th,判断是进入左节点(<th)还是进入右节点(>=th),直到到达,某个叶子节点,并输出预测值。

(2)重复执行(1)直到所有t棵树都输出了预测值。如果是分类问题,则输出为所有树中预测概率总和最大的那一个类,即对每个c(j)的p进行累计;如果是回归问题,则输出为所有树的输出的平均值。

注:有关分类效果的评判标准,因为使用的是CART,因此使用的也是CART的评判标准,和C3.0,C4.5都不相同。

对于分类问题(将某个样本划分到某一类),也就是离散变量问题,CART使用Gini值作为评判标准。

定义为Gini=1-∑(P(i)*P(i)),P(i)为当前节点上数据集中第i类样本的比例。例如:分为2类,当前节点上有100个样本,属于第一类的样本有70个,属于第二类的样本有30个,则Gini=1-0.7×07-0.3×03=0.42,可以看出,类别分布越平均,Gini值越大,类分布越不均匀,Gini值越小。在寻找最佳的分类特征和阈值时,评判标准为:argmax(Gini-GiniLeft-GiniRight),即寻找最佳的特征f和阈值th,使得当前节点的Gini值减去左子节点的Gini和右子节点的Gini值最大。

对于回归问题,相对更加简单,直接使用argmax(Var-VarLeft-VarRight)作为评判标准,即当前节点训练集的方差Var减去减去左子节点的方差VarLeft和右子节点的方差VarRight值最大。

2. 实现

    1. Random Forest 的原理和使用:

      1. 原理 :Random Forest的是一种集合学习的方法(ensemble learning)将多个 弱 分类器组合起来成为一个 强 分类器。

      2. Bagging VS Boosting :两者相似之处是,都是将同一类型的分类器组合起来,都是有放回的为每个弱分类器随机抽取一定比例的样本训练。不同之处是,boosting的训练是有序的,新的分类器训练要基于上一个分类器的预测效果。GBDT采用Baoosting技术,RandomForest采用Bagging技术。

      3. RandomForest 的构建 :并行构建K棵决策树,每个决策树随机地选取指定比例p(ie 0.6)的sample和指定比例q(ie 0.5)的feature进行训练.

      4. RandomForest 的预测 :多个弱分类器投票结果融合为最终分类结果,见图1

                                                                                图 1 Random Forest Prediction 

  1. 训练的调优 

    1. 调优主要从三个维度进行: 样本,feature,模型 和参数

    2. Feature的调优 :

      1. 首先在少量的样本上(几 K )级别,将训练数据同时也做为预测数据进行测试,添减feature查看效果,开始feature数量为11个,后来添加到20个之后效果有所提升,继续添加新的feature的时候,效果提升不明显,暂时确定feature为这20个。

    3. 样本的调整 :

      1. 针对 classification imbalance问题,主要是2类样本数目过多,制定规则过滤些低贡献样本,同时使用了可靠度更高的label数据。

      2. 加大 0 和1 样本的数量,尽量使得三类样本比例1:1:1

      3. 少量样本上训练出现过度拟合问题如图4,少量样本上train data 也做为test data时发现准确率、覆盖率很高误差不到1%,但是换另外一个test data时误差达到30%,提升训练的样本量,效果又提升上来。

    4. 模型和参数的调整 :

      1. 简单对比过GBDT和RF,SVM的效果,RF的效果最好,RF默认使用200棵树,每个树随机使用60%的sample,60%的feature。调整过sample ration 和feature ratio的比例,对最后的效果影响不大。

         CV 验证RF的各项指标 

猜你喜欢

转载自blog.csdn.net/weixin_38405636/article/details/80676430
今日推荐