机器学习-随机森林

随机森林是一种集成学习方法,通过构建多棵决策树并取其平均或投票结果来提升预测准确率。在OpenCV中,随机森林用于分类和回归问题。算法工作原理包括随机抽样训练集、选择部分特征以及不进行剪枝。优点包括处理高维数据、变量重要性评估、缺失数据处理、分类不平衡处理和无监督学习应用。缺点则在于回归问题的表现和模型的黑盒特性,可能造成过度拟合和理解困难。
摘要由CSDN通过智能技术生成

OpenCV包含随机森林(random forest)类,随机森林可以通过收集很多树的子节点对各个类别的投票,然后选择获得最多投票的类别作为判断结果。通过计算“森林”的所有子节点上的值的平均值来解决回归问题。随机森林包含随机选择的一些决策树。随机森林建立时的基本子系统也是决策树,在建立决策树时会一直继续下去直到数据纯净。如果所有的树都很相似,随机森林就没有很大的作用。为了克服这点,随机森林通过在树的建立过程中随机选择子集来使**各个树**(树不同也就是能够产生随机的森林)不相同。


随机森林算法是如何工作的?

在随机森林中,每一个决策树“种植”和“生长”的规则如下所示:

1.假设我们设定训练集中的样本个数为N,然后通过有重置的重复多次抽样来获得这N个样本,这样的抽样结果将作为我们生成决策树的训练集;

2.如果有M个输入变量,每个节点都将随机选择m(m<M)个特定的变量,然后运用这m个变量来确定最佳的分裂点。在决策树的生成过程中,m的值是保持不变的;

3.每棵决策树都最大可能地进行生长而不进行剪枝;

4.通过对所有的决策树进行加总来预测新的数据(在分类时采用多数投票,在回归时采用平均)。

随机森林

 

随机森林的优点与缺点

优点:

1.正如上文所述,随机森林算法能解决分类与回归两种类型的问题,并在这两个方面都有相当好的估计表现;

2.随机森林对于高维数据集的处理能力令人兴奋,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。此外,该模型能够输出变量的重要性程度,这是一个非常便利的功能。下图展示了随机森林对于变量重要性程度的输出形式:

随机森林

3.在对缺失数据进行估计时,随机森林是一个十分有效的方法。就算存在大量的数据缺失,随机森林也能较好地保持精确性;

4.当存在分类不平衡的情况时,随机森林能够提供平衡数据集误差的有效方法;

5.模型的上述性能可以被扩展运用到未标记的数据集中,用于引导无监督聚类、数据透视和异常检测;

6.随机森林算法中包含了对输入数据的重复自抽样过程,即所谓的bootstrap抽样。这样一来,数据集中大约三分之一将没有用于模型的训练而是用于测试,这样的数据被称为out of bag samples,通过这些样本估计的误差被称为out of bag error。研究表明,这种out of bag方法的与测试集规模同训练集一致的估计方法有着相同的精确程度,因此在随机森林中我们无需再对测试集进行另外的设置。

缺点:

1.随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。

2.对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。


OpenCV中首先是一个参数结构CvRTParams,该结构继承于决策树:

struct CV_EXPORTS_W_MAP CvRTParams : public CvDTreeParams
{
    //Parameters for the forest
    CV_PROP_RW bool calc_var_importance; // true <=> RF processes variable importance
    CV_PROP_RW int nactive_vars;
    CV_PROP_RW CvTermCriteria term_crit;

    CvRTParams();
    CvRTParams( int max_depth, int min_sample_count,
                float regression_accuracy, bool use_surrogates,
                int max_categories, const float* priors, bool calc_var_importance,
                int nactive_vars, int max_num_of_trees_in_the_forest,
                float forest_accuracy, int termcrit_type );
};

最后的结果预测会有点不同的地方,返回的不是具体的类别


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值