服务器搭建网站,山东兽药网站建设,网站更新问题,建造师报名时间2023年官网简介 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器。它是由多棵CART(Classification And Regression Tree)构成的。对于每棵树#xff0c;其使用的训练集是从总的训练集中有放回采样出来的#xff0c;这意味着总训练集中有些样本可能多次出现在一棵树的训练集中…简介 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器。它是由多棵CART(Classification And Regression Tree)构成的。对于每棵树其使用的训练集是从总的训练集中有放回采样出来的这意味着总训练集中有些样本可能多次出现在一棵树的训练集中也可能从未出现在一棵树的训练集中。在训练每棵树的节点时使用的特征是从所有特征中按照一定比例随机地无放回的抽取的假设总的特征数是M,则这个比例可以是(√M),12(√M),2(√M)\sqrt(M), \frac{1}{2} \sqrt(M), 2\sqrt(M)。 训练过程
随机森林的训练过程可以总结如下
(1)给定训练集S测试集T特征维数F。确定参数使用到的CART的数量t每棵树的深度d每个节点使用到的特征数量f终止条件节点上最少样本数s节点上最少的信息增益m
对于第1-t棵树i1-t
(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棵树i1-t
(1)从当前树的根节点开始根据当前节点的阈值th判断是进入左节点(th)还是进入右节点(th)直到到达某个叶子节点并输出预测值。
(2)重复执行(1)直到所有t棵树都输出了预测值。如果是分类问题则输出为所有树中预测概率总和最大的那一个类即对每个c(j)的p进行累计如果是回归问题则输出为所有树的输出的平均值。
有关分类效果的评判标准因为使用的是CART因此使用的也是CART的评判标准和C3.0,C4.5都不相同。
对于分类问题将某个样本划分到某一类也就是离散变量问题CART使用Gini值作为评判标准。定义为Gini(p)1−∑Kk1p2kGini(p) = 1 - \sum_{k=1}^K p_k^2,pkp_k为当前节点上数据集中第k类样本的比例。
例如分为2类当前节点上有100个样本属于第一类的样本有70个属于第二类的样本有30个则Gini1−0.7×07−0.3×030.42Gini=1-0.7×07-0.3×03=0.42可以看出类别分布越平均Gini值越大类分布越不均匀Gini值越小。在寻找最佳的分类特征和阈值时评判标准为argmaxGini−GiniLeft−GiniRight()argmax(Gini-GiniLeft-GiniRight)即寻找最佳的特征f和阈值th使得当前节点的Gini值减去左子节点的Gini和右子节点的Gini值最大。
对于回归问题相对更加简单直接使用argmax(Var−VarLeft−VarRight)argmax(Var-VarLeft-VarRight)作为评判标准即当前节点训练集的方差Var减去减去左子节点的方差VarLeft和右子节点的方差VarRight值最大。
特征重要性度量
计算某个特征X的重要性时具体步骤如下
对每一颗决策树选择相应的袋外数据out of bagOOB计算袋外数据误差记为errOOB1. 所谓袋外数据是指每次建立决策树时通过重复抽样得到一个数据用于训练决策树这时还有大约1/3的数据没有被利用没有参与决策树的建立。这部分数据可以用于对决策树的性能进行评估计算模型的预测错误率称为袋外数据误差。 这已经经过证明是无偏估计的,所以在随机森林算法中不需要再进行交叉验证或者单独的测试集来获取测试集误差的无偏估计。随机对袋外数据OOB所有样本的特征X加入噪声干扰可以随机改变样本在特征X处的值再次计算袋外数据误差记为errOOB2。假设森林中有N棵树则特征X的重要性∑errOOB2−errOOB1N∑\frac{errOOB2-errOOB1}{N}。这个数值之所以能够说明特征的重要性是因为如果加入随机噪声后袋外数据准确率大幅度下降即errOOB2上升说明这个特征对于样本的预测结果有很大影响进而说明重要程度比较高。
特征选择
在特征重要性的基础上特征选择的步骤如下
计算每个特征的重要性并按降序排序确定要剔除的比例依据特征重要性剔除相应比例的特征得到一个新的特征集用新的特征集重复上述过程直到剩下m个特征m为提前设定的值。根据上述过程中得到的各个特征集和特征集对应的袋外误差率选择袋外误差率最低的特征集。
优点
在数据集上表现良好在当前的很多数据集上相对其他算法有着很大的优势它能够处理很高维度feature很多的数据并且不用做特征选择在训练完后它能够给出哪些feature比较重要在创建随机森林的时候对generlization error使用的是无偏估计训练速度快在训练过程中能够检测到feature间的互相影响容易做成并行化方法实现比较简单
代码实现
简单使用sklearn中随机森林算法的例子
#Import Library
from sklearn.ensemble import RandomForestClassifier
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset# Create Random Forest object
model RandomForestClassifier()# Train the model using the training sets and check score
model.fit(X, y)#Predict Output
predicted model.predict(x_test)
此外OpenCV中也实现了随机森林算法。具体使用例子可以查看RandomForest随机森林总结。