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. 实现
-
Random Forest 的原理和使用:
原理 :Random Forest的是一种集合学习的方法(ensemble learning)将多个 弱 分类器组合起来成为一个 强 分类器。
Bagging VS Boosting :两者相似之处是,都是将同一类型的分类器组合起来,都是有放回的为每个弱分类器随机抽取一定比例的样本训练。不同之处是,boosting的训练是有序的,新的分类器训练要基于上一个分类器的预测效果。GBDT采用Baoosting技术,RandomForest采用Bagging技术。
RandomForest 的构建 :并行构建K棵决策树,每个决策树随机地选取指定比例p(ie 0.6)的sample和指定比例q(ie 0.5)的feature进行训练.
RandomForest 的预测 :多个弱分类器投票结果融合为最终分类结果,见图1
图 1 Random Forest Prediction
训练的调优
调优主要从三个维度进行: 样本,feature,模型 和参数
Feature的调优 :
首先在少量的样本上(几 K )级别,将训练数据同时也做为预测数据进行测试,添减feature查看效果,开始feature数量为11个,后来添加到20个之后效果有所提升,继续添加新的feature的时候,效果提升不明显,暂时确定feature为这20个。
样本的调整 :
针对 classification imbalance问题,主要是2类样本数目过多,制定规则过滤些低贡献样本,同时使用了可靠度更高的label数据。
加大 0 和1 样本的数量,尽量使得三类样本比例1:1:1
少量样本上训练出现过度拟合问题如图4,少量样本上train data 也做为test data时发现准确率、覆盖率很高误差不到1%,但是换另外一个test data时误差达到30%,提升训练的样本量,效果又提升上来。
模型和参数的调整 :
简单对比过GBDT和RF,SVM的效果,RF的效果最好,RF默认使用200棵树,每个树随机使用60%的sample,60%的feature。调整过sample ration 和feature ratio的比例,对最后的效果影响不大。
CV 验证RF的各项指标