首页 > 编程语言 >机器学习算法:随机森林算法

机器学习算法:随机森林算法

时间:2024-06-12 21:59:02浏览次数:21  
标签:机器 特征 选取 分类器 算法 随机 决策树 森林

在机器学习中,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定。 Leo Breiman和Adele Cutler发展出推论出随机森林的算法。 而 "Random Forests" 是他们的商标。 这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合 Breimans 的 "Bootstrap aggregating" 想法和 Ho 的"random subspace method"以建造决策树的集合。
随机森林是一种包含很多决策树的分类器,既可以用于处理分类和回归问题,也适用于降维问题。其对异常值与噪音也有很好的容忍,相较于决策树有着更好的预测和分类性能。


根据下列算法而建造每棵树:

  1. 用N来表示训练用例(样本)的个数,M表示特征数目。
  2. 输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M。
  3. 从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。
  4. 对于每一个节点,随机选择m个特征,决策树上每个节点的决定都是基于这些特征确定的。根据这m个特征,计算其最佳的分裂方式。
  5. 每棵树都会完整成长而不会剪枝,这有可能在建完一棵正常树状分类器后会被采用)。

 优点

  1. 对于很多种资料,它可以产生高准确度的分类器;
  2. 它可以处理大量的输入变数;
  3. 它可以在决定类别时,评估变数的重要性;
  4. 在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计;
  5. 它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度;
  6. 它提供一个实验方法,可以去侦测variable interactions;
  7. 对于不平衡的分类资料集来说,它可以平衡误差;
  8. 它计算各例中的亲近度,对于数据挖掘、侦测离群点(outlier)和将资料视觉化非常有用;
  9. 使用上述。它可被延伸应用在未标记的资料上,这类资料通常是使用非监督式聚类。也可侦测偏离者和观看资料;
  10. 学习过程是很快速的。

缺点
由于随机森林自身的随机性,导致预测结果波动 ; 所使用的原始数据集样本基数大,增加随机森林组合分类器的训练时间。

相关概念
1.分裂:在决策树的训练过程中,需要一次次的将训练数据集分裂成两个子数据集,这个过程就叫做分裂。
2.特征:在分类问题中,输入到分类器中的数据叫做特征。以上面的股票涨跌预测问题为例,特征就是前一天的交易量和收盘价。
3.待选特征:在决策树的构建过程中,需要按照一定的次序从全部的特征中选取特征。待选特征就是在步骤之前还没有被选择的特征的集合。例如,全部的特征是 ABCDE,第一步的时候,待选特征就是ABCDE,第一步选择了C,那么第二步的时候,待选特征就是ABDE。
4.分裂特征:接待选特征的定义,每一次选取的特征就是分裂特征,例如,在上面的例子中,第一步的分裂特征就是C。因为选出的这些特征将数据集分成了一个个不相交的部分,所以叫它们分裂特征。

随机森林构建

1.数据的随机选取:

首先,从原始的数据集中采取有放回的抽样,构造子数据集,子数据集的数据量是和原始数据集相同的。不同子数据集的元素可以重复,同一个子数据集中的元素也可以重复。第二,利用子数据集来构建子决策树,将这个数据放到每个子决策树中,每个子决策树输出一个结果。最后,如果有了新的数据需要通过随机森林得到分类结果,就可以通过对子决策树的判断结果的投票,得到随机森林的输出结果了。如假设随机森林中有3棵子决策树,2棵子树的分类结果是A类,1棵子树的分类结果是B类,那么随机森林的分类结果就是A类。

2.待选特征的随机选取

与数据集的随机选取类似,随机森林中的子树的每一个分裂过程并未用到所有的待选特征,而是从所有的待选特征中随机选取一定的特征,之后再在随机选取的特征中选取最优的特征。这样能够使得随机森林中的决策树都能够彼此不同,提升系统的多样性,从而提升分类性能。

图中,蓝色的方块代表所有可以被选择的特征,也就是待选特征。黄色的方块是分裂特征。左边是一棵决策树的特征选取过程,通过在待选特征中选取最优的分裂特征(别忘了前文提到的ID3算法,C4.5算法,CART算法等等),完成分裂。右边是一个随机森林中的子树的特征选取过程。

标签:机器,特征,选取,分类器,算法,随机,决策树,森林
From: https://blog.csdn.net/R418520/article/details/139635985

相关文章

  • CEC2017(Python):七种算法(PSO、RFO、DBO、HHO、SSA、DE、GWO)求解CEC2017
    一、7种算法简介1、粒子群优化算法PSO2、红狐优化算法RFO3、蜣螂优化算法DBO4、哈里斯鹰优化算法HHO5、麻雀搜索算法SSA6、差分进化算法DE7、灰狼优化算法GWO二、CEC2017简介参考文献:[1]Awad,N.H.,Ali,M.Z.,Liang,J.J.,Qu,B.Y.,&Suganthan,P.N.(2......
  • CEC2017(Python):七种算法(RFO、DBO、HHO、SSA、DE、GWO、OOA)求解CEC2017
    一、7种算法简介1、红狐优化算法RFO2、蜣螂优化算法DBO3、哈里斯鹰优化算法HHO4、麻雀搜索算法SSA5、差分进化算法DE6、灰狼优化算法GWO7、鱼鹰优化算法OOA二、CEC2017简介参考文献:[1]Awad,N.H.,Ali,M.Z.,Liang,J.J.,Qu,B.Y.,&Suganthan,P.N.(201......
  • 一个开源且全面的C#算法实战教程
    前言算法在计算机科学和程序设计中扮演着至关重要的角色,如在解决问题、优化效率、决策优化、实现计算机程序、提高可靠性以及促进科学融合等方面具有广泛而深远的影响。今天大姚给大家分享一个开源、免费、全面的C#算法实战教程:TheAlgorithms/C-Sharp。C#经典十大排序算法(完结)......
  • 为什么机器这么难理解人类语言?
    人类自然语言的多样性、灵活性、歧义性、上下文依赖性、语言的变化以及世界知识和常识的应用等因素都使得让机器难以理解人的自然语言:多样性和灵活性:包括语法、词汇、语义、上下文等方面。同一个词汇在不同语境中可能有不同的含义,例如“他被杀死了”的“死”和“笑死我了”的......
  • FANCU机器人夹爪安装程序
    main 调用子程序GO钢珠弹出BACK 钢珠缩回......
  • 2025秋招图像处理面试题01_LBP算法原理
    问题LBP是一种常见的特征描述算法,用来提取局部的纹理特征,其原理其实很简单,下面我们就来看看它是怎么一回事吧。LBP简介LBP(LocalBinaryPatterns,局部二值模式)是一种很简单但很高效的局部纹理特征描述算子,于1994年由T.Ojala,M.Pietikäinen和D.Harwood提出,经过后续的......
  • 行业案例丨利用机器学习助力制造业加速挤压模具开发设计流程
    某铝业客户面临的挑战客户需要优化的产品断面的长度和宽度比较大,壁厚厚薄不均,表面质量要求很高,不能有条纹、面粗或划痕,决不允许有焊缝存在,并且尺寸的公差要求也非常严格。最重要的一点就是生产的时间非常短,几乎没有重复上机试模和修模的时间,模具要达到一次性上机合格程度。......
  • DeepSORT(目标跟踪算法)中卡尔曼增益的理解
    DeepSORT(目标跟踪算法)中卡尔曼增益的理解flyfish先用最简单的例子来理解卡尔曼增益公式(1)首先,通过多次测量一个物理量,并使用取平均值的方式来计算其真实值:x......
  • 2024年春季学期《算法分析与设计》练习15
    A:简单递归求和题目描述使用递归编写一个程序求如下表达式前n项的计算结果: (n<=100)1- 3+5-7+9-11+......输入n,输出表达式的计算结果。输入多组输入,每组输入一个n,n<=100。输出输出表达式的计算结果。样例输入 Copy12样例输出 Copy1-2#pragma......
  • 基于龙格库塔算法的SIR病毒扩散预测matlab仿真
    1.程序功能描述     基于龙格库塔算法的SIR病毒扩散预测,通过龙格库塔算法求解传染病模型的微分方程。输出易受感染人群数量曲线,感染人群数量曲线,康复人群数量曲线。 2.测试软件版本以及运行结果展示MATLAB2022a版本运行                     ......