随机森林
随机森林算法

随机森林算法引言随机森林(Random Forest)是一种经典的集成学习算法,它通过构建多个决策树并结合其结果来进行分类或回归任务。
随机森林算法的特点是能够处理高维数据、解决过拟合问题以及能够评估特征的重要性等。
随机森林算法由Tin Kam Ho于1995年提出,它集成了决策树和随机性的概念。
本文将对随机森林算法的原理、构建过程以及应用领域进行详细介绍。
随机森林的原理随机森林算法的原理主要包括两个方面:决策树和随机性。
决策树决策树是一种基本的分类和回归方法,它使用树形结构来对数据进行分类或预测。
决策树由根节点、内部节点和叶节点组成。
根节点代表整个数据集,内部节点代表一个属性以及它的取值,叶节点代表最终的分类或回归结果。
构建决策树的过程包括选择最佳的属性作为当前节点的划分标准,通过计算信息增益(或基尼指数)选择最佳划分属性。
决策树的构建过程通常涉及递归和剪枝等步骤。
随机性随机森林引入了随机性的概念。
在构建随机森林时,每次构建决策树时,从原始数据集中随机选择一部分样本作为训练集,并且从所有属性中随机选择一部分属性作为划分候选属性。
通过引入随机性,可以使得随机森林中的决策树具有多样性,减少了过拟合的风险。
构建随机森林的过程构建随机森林算法通常包括以下步骤:1.随机选择一部分样本作为训练集。
2.从训练集中随机选择一部分属性作为划分候选属性。
3.构建一棵决策树,并选择最佳的划分属性。
4.重复步骤1-3,构建多棵决策树。
5.对新数据进行预测时,将新数据带入每棵决策树中,并根据决策树的结果进行投票或取平均值来得到最终的分类结果或回归结果。
随机森林算法的重要参数包括决策树的数量、划分属性的数量等。
在构建过程中,可以通过交叉验证等方法选择最优的参数。
随机森林的应用领域随机森林算法在许多领域都有广泛的应用。
以下是随机森林算法的一些典型应用场景:•分类问题:随机森林算法可以用于分类问题,如垃圾邮件过滤、疾病诊断等。
随机森林(RandomForest)

随机森林(RandomForest)1.什么是随机森林简述随机森林是⼀个⾼度灵活的机器学习⽅法,拥有⼴泛的应⽤前景,从市场营销到医疗保健保险。
既可以⽤来做市场营销模拟的建模,统计客户来源,保留和流失。
也可⽤来预测疾病的风险和病患者的易感性。
随机森林是⼀个可做能够回归和分类。
它具备处理⼤数据的特性,⽽且它有助于估计或变量是⾮常重要的基础数据建模。
随机森林是⼏乎任何预测问题 (甚⾄⾮直线部分) 的固有选择。
它是⼀个相对较新的机器学习的策略(在90 年代产⽣于贝尔实验室 ) 和它可以⼏乎⽤于任何⽅⾯。
思想随机森林就是通过集成学习的思想将多棵树集成的⼀种算法,它的基本单元是决策树,⽽它的本质属于机器学习的⼀⼤分⽀——集成学习(Ensemble Learning)⽅法。
随机森林的名称中有两个关键词,⼀个是“随机”,⼀个就是“森林”。
“森林”我们很好理解,⼀棵叫做树,那么成百上千棵就可以叫做森林了,这样的⽐喻还是很贴切的,其实这也是随机森林的主要思想--集成思想的体现。
“随机”的含义我们会在下边部分讲到。
其实从直观⾓度来解释,每棵决策树都是⼀个分类器(假设现在针对的是分类问题),那么对于⼀个输⼊样本,N棵树会有N个分类结果。
⽽随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是⼀种最简单的 Bagging 思想。
2.相关知识集成学习集成学习通过建⽴⼏个模型组合的来解决单⼀预测问题。
它的⼯作原理是⽣成多个分类器/模型,各⾃独⽴地学习和作出预测。
这些预测最后结合成单预测,因此优于任何⼀个单分类的做出预测。
随机森林是集成学习的⼀个⼦类,由于它依靠于策率树的合并。
信息、熵以及信息增益的概念这三个基本概念是决策树的根本,是决策树利⽤特征来分类时,确定特征选取顺序的依据。
理解了它们,决策树你也就了解了⼤概。
引⽤⾹农的话来说,信息是⽤来消除随机不确定性的东西。
当然这句话虽然经典,但是还是很难去搞明⽩这种东西到底是个什么样,可能在不同的地⽅来说,指的东西⼜不⼀样。
随机森林规则

随机森林规则随机森林是一种集成学习方法,由多个决策树组成,通过投票或平均值来决定最终的预测结果。
随机森林规则是指用于构建随机森林的一系列规则和步骤。
本文将介绍随机森林规则的基本原理、构建流程以及应用领域等内容。
一、随机森林的基本原理随机森林由多个决策树组成,每个决策树都是基于不同的样本和特征进行训练。
在构建随机森林的过程中,首先从原始数据集中随机选择一部分样本,形成一个新的训练集。
然后,对于每个决策树,随机选择一部分特征作为输入,以降低过拟合的风险。
最后,通过投票或平均值的方式,确定最终的预测结果。
随机森林的基本原理是基于"集思广益"的概念。
通过组合多个决策树的预测结果,可以降低单个决策树的错误率,从而提高整体的准确率。
同时,由于每个决策树都是基于不同的样本和特征进行训练,随机森林具有较强的鲁棒性和泛化能力。
二、随机森林的构建流程1. 数据准备:首先,需要准备训练数据集,包括输入特征和对应的目标变量。
通常情况下,需要将数据集划分为训练集和测试集,用于模型的训练和评估。
2. 样本抽样:从训练集中随机选择一部分样本,形成一个新的训练集。
样本抽样可以通过有放回或无放回的方式进行,以确保每个样本都有机会被选中。
3. 特征选择:对于每个决策树,随机选择一部分特征作为输入。
特征选择可以通过随机抽样的方式进行,以降低过拟合的风险。
4. 决策树构建:利用选定的训练集和特征,构建决策树模型。
决策树的构建过程可以采用递归分割的方式,通过最小化不纯度指标(如基尼系数或熵)来选择最佳的划分点。
5. 随机森林构建:重复上述步骤,构建多个决策树。
每个决策树的训练集和特征选择都是随机的,以增加模型的多样性。
6. 预测结果:对于新的样本,通过投票或平均值的方式,确定最终的预测结果。
投票方式是指将每个决策树的预测结果进行统计,选择票数最多的类别作为最终的预测结果。
平均值方式是指将每个决策树的预测结果进行平均,得到最终的预测值。
随机森林通俗理解

随机森林通俗理解
随机森林通俗理解:
随机森林(Random Forests)是一种分类和回归的机器学习方法,它是对决策树的扩展,由多个决策树组成,它们具有强大的泛化能力,可以处理非线性问题。
这种方法可以帮助我们更好地理解数据,并有效地预测未来结果。
随机森林最早由Breiman于2001年提出,其核心思想是基于多个决策树的集成方法,即将多个决策树结合起来,以期得到更准确的预测结果。
随机森林的优势在于,它不仅可以提供准确的预测,而且还可以衡量特征的相关性,从而发现数据中的模式。
随机森林的工作原理如下:
1、首先,从原始数据集中抽取N个子数据集,每个子数据集包含M个特征,每个特征都有K个不同的值;
2、然后,使用每个子数据集训练一棵决策树,每棵树都可以根据训练数据生成一组预测结果;
3、最后,将每棵树的预测结果汇总,用来预测新的数据。
因此,随机森林的工作原理就是在训练数据上训练多个决策树,然后将它们的预测结果汇总,从而提高预测精度。
随机森林的优势如下:
1、随机森林的泛化能力很强:它比单个决策树的泛化能力要强,降低了过拟合的风险;
2、随机森林能够处理非线性问题;
3、随机森林可以检测特征之间的相关性,从而发现数据中的隐藏模式;
4、随机森林运行效率较高,可以解决大数据集的问题。
总之,随机森林是一种强大的机器学习方法,它可以有效地处理大型数据集,改善模型的泛化能力,还可以检测特征之间的相关性,从而发现数据中的隐藏模式。
随机森林的原理及分析结果

随机森林的原理及分析结果
随机森林(Random Forest)是一种集成学习算法,它将多个决策树组合在一起,形成一个森林。
每个决策树都是从数据样本中随机选择特征来进行划分,这样可以降低模型的方差和泛化误差。
随机森林还使用袋装法(Bagging)来从样本中进行有放回抽样,以产生多个训练集来进行模型的训练。
随机森林的主要优点是可以处理高维数据、具有较高的准确性、可以处理缺失数据和异常值等。
随机森林的分析结果主要包括以下方面:
1. 特征重要性分析:随机森林通过测量每个特征的重要性程度来评估它们对模型的贡献。
特征重要性可以衡量每个特征对预测结果的贡献程度,可以用于特征选择和预测模型的解释。
2. 模型的性能指标:与其他机器学习模型一样,随机森林的性能可以使用诸如准确率、精确率、召回率、F1值和ROC曲线等指标进行评估。
3. 可解释性分析:与其他集成算法相比,随机森林的结果更容易解释。
通过查看决策树的规则、特征的重要性和不同特征的组合,可以更好地理解模型是如何做出预测的。
4. 超参数调优结果:随机森林算法的性能很大程度上取决于其超参数的选择,如决策树数量、决策树深度、特征选择和最小叶节点数等。
通过分析调优结果,可以得出在特定数据集和任务上最优的超参数组合。
随机森林的原理

随机森林的原理随机森林(Random Forest)是一种集成学习(Ensemble Learning)方法,它通过构建多个决策树来完成分类或回归任务。
随机森林由Leo Breiman和AdeleCutler于2001年提出,它是一种强大且灵活的机器学习算法,被广泛应用于数据挖掘、模式识别和预测分析等领域。
随机森林的原理基于决策树,决策树是一种树形结构,用于对实例进行分类或预测。
在随机森林中,会构建多个决策树,并通过投票或平均值的方式来进行最终的分类或预测。
随机森林的核心思想包括两点,随机性和集成学习。
首先,随机性体现在两个方面,样本随机性和特征随机性。
在构建每棵决策树时,随机森林会随机选择一部分样本和特征进行训练,这样可以减少过拟合的风险,提高模型的泛化能力。
其次,集成学习是指通过组合多个模型来完成任务,随机森林通过组合多棵决策树来实现更稳定和准确的预测。
随机森林的构建过程如下,首先,从原始数据集中随机选择一部分样本(有放回抽样),然后随机选择一部分特征,接着利用这些样本和特征来构建一棵决策树。
重复这一过程,直到构建了足够数量的决策树。
最后,对于分类任务,随机森林会采用投票的方式来确定最终的分类结果;对于回归任务,随机森林会采用平均值的方式来确定最终的预测结果。
随机森林具有许多优点。
首先,它可以处理高维数据和大规模数据,且不需要进行特征选择。
其次,随机森林对缺失值和异常值具有较强的鲁棒性,能够处理不平衡数据集。
此外,随机森林能够估计特征的重要性,帮助我们理解数据集。
最重要的是,随机森林能够有效地减少过拟合,提高模型的泛化能力。
然而,随机森林也存在一些缺点。
首先,由于随机森林构建了多棵决策树,因此模型的训练和预测速度相对较慢。
其次,随机森林对于噪声较大的数据集容易过拟合,需要进行参数调优。
此外,由于随机森林是一种黑盒模型,难以解释模型的预测过程。
总的来说,随机森林是一种强大且灵活的机器学习算法,它通过构建多棵决策树来完成分类或回归任务,具有良好的泛化能力和鲁棒性。
随机森林数学公式

随机森林数学公式随机森林数学公式随机森林(Random Forest)是一种强大的机器学习算法,它通过构建多个决策树并进行集成,能够有效地处理分类和回归问题。
下面是随机森林的相关公式及其解释说明:决策树公式决策树是随机森林的基本组成部分,其公式包括以下几个方面:求信息增益公式信息增益用于衡量在特征取值划分下的信息量减少程度,其公式为:ΔH(D,A)=H(D)−∑|D v| |D|Vv=1H(D v)其中,H(D)是数据集D的初始信息熵,H(D v)是特征A取值为v时的条件熵,V为特征A的取值个数,|D|是数据集D的样本数量,|D v|是特征A取值为v时的样本数量。
求基尼指数公式基尼指数用于度量数据集的纯度,其公式为:KGini(D)=1−∑(P k)2k=1其中,K为数据集D中类别的个数,P k为数据集D中属于第k类的样本占总样本的比例。
决策树构建算法公式决策树的构建算法通常是基于信息增益或基尼指数进行特征选择。
建立决策树的公式如下:输入:训练集D,特征集A,阈值ϵ输出:决策树T1.若D中样本全属于同一类别C,则将T作为单节点树,标记为C,返回T;2.若A为空集,即已无特征可供选择,则将T作为单节点树,标记为D中样本数最多的类别C,返回T;3.根据信息增益或基尼指数选择最优特征A∗;4.若A∗的信息增益或基尼指数小于阈值ϵ,则将T作为单节点树,标记为D中样本数最多的类别C,返回T;5.否则,根据特征A∗的取值将D划分为子集D1,D2,...,D v;6.对于每个子集D v,递归调用以上步骤,构建子树T v;7.将T v连接到T上。
随机森林公式随机森林是通过集成多个决策树进行预测或分类的算法,其公式包括以下几个方面:随机森林生成公式随机森林生成的公式为:RF(X)=1T∑f tTt=1(X)其中,RF(X)表示随机森林对样本X的预测结果,T表示随机森林中决策树的数量,f t(X)表示第t棵决策树对样本X的预测结果。
介绍随机森林

介绍随机森林
随机森林是一种集成学习(Ensemble Learning)算法,通过组合多个决策树来提高模型的准确性和稳定性。
它适用于分类和回归问题,是一种强大且广泛使用的机器学习算法。
**算法原理**:
随机森林的核心思想是通过构建多棵决策树,将它们的预测结果综合起来,以减少过拟合和提高预测准确性。
随机森林引入了两个随机性来源:随机选择样本和随机选择特征。
**训练过程**:
1. 数据集:随机从训练集中有放回地抽取样本,构建多个不同的训练子集。
2. 特征选择:对每个子集,随机选择一部分特征作为决策树的输入特征。
3. 构建决策树:基于子集和选定的特征,构建多棵决策树,可以使用随机分割策略。
4. 集成预测:对于分类问题,使用投票法(多数表决)确定最终类别标签;对于回归问题,使用平均值或加权平均值。
**优缺点**:
优点:
- 提高预测准确性:随机森林组合多个决策树,能够降低过拟合风险,提高模型的稳定性和准确性。
- 处理大量特征:能够处理高维数据,不需要特征选择。
- 鲁棒性:对于异常值和噪声有一定的容忍度。
- 可解释性:能够衡量特征的重要性,提供有关特征对预测的贡献。
缺点:
- 训练时间较长:由于构建多棵决策树,训练时间相对较长。
- 内存消耗:需要存储多棵决策树,占用较多内存。
- 不适用于在线学习:需要重新训练整个随机森林,不适用于动态数据。
随机森林在许多领域中表现出色,如金融风控、医疗诊断、图像识别等。
通过调整参数,例如决策树数量和最大深度,可以优化随机森林模型的性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学习算法根据下列算法而建造每棵树:1. 用N 来表示训练例子的个数,M表示变量的数目。
2. 我们会被告知一个数m ,被用来决定当在一个节点上做决定时,会使用到多少个变量。
m应小于M3. 从N个训练案例中以可重复取样的方式,取样N次,形成一组训练集(即bootstrap取样)。
并使用这棵树来对剩余预测其类别,并评估其误差。
4. 对于每一个节点,随机选择m个基于此点上的变量。
根据这m 个变量,计算其最佳的分割方式。
5. 每棵树都会完整成长而不会剪枝(Pruning)(这有可能在建完一棵正常树状分类器后会被采用)。
优点随机森林的优点有:1. 对于很多种资料,它可以产生高准确度的分类器。
2. 它可以处理大量的输入变量。
3. 它可以在决定类别时,评估变量的重要性。
4. 在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计。
5. 它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度。
6. 它提供一个实验方法,可以去侦测variable interactions 。
7. 对于不平衡的分类资料集来说,它可以平衡误差。
8. 它计算各例中的亲近度,对于数据挖掘、侦测偏离者(outlier)和将资料视觉化非常有用。
9. 使用上述。
它可被延伸应用在未标记的资料上,这类资料通常是使用非监督式聚类。
也可侦测偏离者和观看资料。
10. 学习过程是很快速的。
缺点1. 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟2. 对于有不同级别的属性的数据,级别划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。
在机器学习中,随机森林由许多的决策树组成,因为这些决策树的形成采用了随机的方法,因此也叫做随机决策树。
随机森林中的树之间是没有关联的。
当测试数据进入随机森林时,其实就是让每一颗决策树进行分类,最后取所有决策树中分类结果最多的那类为最终的结果。
因此随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。
随机森林可以既可以处理属性为离散值的量,比如ID3算法,也可以处理属性为连续值的量,比如C4.5算法。
另外,随机森林还可以用来进行无监督学习聚类和异常点检测。
随机森林由决策树组成,决策树实际上是将空间用超平面进行划分的一种方法,每次分割的时候,都将当前的空间一分为二,比如说下面的决策树(其属性的值都是连续的实数):随机深林的优点:比较适合做多分类问题;训练和预测速度快;对训练数据的容错能力,是一种有效地估计缺失数据的一种方法,当数据集中有大比例的数据缺失时仍然可以保持精度不变;能够有效地处理大的数据集;可以处理没有删减的成千上万的变量;能够在分类的过程中可以生成一个泛化误差的内部无偏估计;能够检测到特征之间的相互影响以及重要性程度;不过出现过度拟合;实现简单容易并行化。
当可以生成好决策树后,就比较容易生成随机森林了。
下面是随机森林的构造过程:1. 假如有N个样本,则有放回的随机选择N个样本(每次随机选择一个样本,然后返回继续选择)。
这选择好了的N个样本用来训练一个决策树,作为决策树根节点处的样本。
2. 当每个样本有M个属性时,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性,满足条件m << M。
然后从这m个属性中采用某种策略(比如说信息增益)来选择1个属性作为该节点的分裂属性。
3. 决策树形成过程中每个节点都要按照步骤2来分裂(很容易理解,如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性,则该节点已经达到了叶子节点,无须继续分裂了)。
一直到不能够再分裂为止。
注意整个决策树形成过程中没有进行剪枝。
4. 按照步骤1~3建立大量的决策树,这样就构成了随机森林了。
从上面的步骤可以看出,随机森林的随机性体现在每颗数的训练样本是随机的,树中每个节点的分类属性也是随机选择的。
有了这2个随机的保证,随机森林就不会产生过拟合的现象了。
随机森林有2个参数需要人为控制,一个是森林中树的数量,一般建议取很大。
另一个是m 的大小,推荐m的值为M的均方根。
1.随机森林原理介绍随机森林,指的是利用多棵树对样本进行训练并预测的一种分类器。
该分类器最早由Leo Breiman和Adele Cutler提出,并被注册成了商标。
简单来说,随机森林就是由多棵CART (Classification And Regression Tree)构成的。
对于每棵树,它们使用的训练集是从总的训练集中有放回采样出来的,这意味着,总的训练集中的有些样本可能多次出现在一棵树的训练集中,也可能从未出现在一棵树的训练集中。
在训练每棵树的节点时,使用的特征是从所有特征中按照一定比例随机地无放回的抽取的,根据Leo Breiman的建议,假设总的特征数量为M,这个比例可以是sqrt(M),1/2sqrt(M),2sqrt(M)。
因此,随机森林的训练过程可以总结如下:(1)给定训练集S,测试集T,特征维数F。
确定参数:使用到的CART的数量t,每棵树的深度d,每个节点使用到的特征数量f,终止条件:节点上最少样本数s,节点上最少的信息增益m对于第1-t棵树,i=1-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棵树,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值最大。
3.如何自己设计随机森林程序有时现有的库无法满足要求,就需要自己设计一个分类器算法,这部分讲一下如何设计自己的随机森林分类器,代码实现就不贴了,因为在工作中用到了,因此比较敏感。
首先,要有一个RandomForest类,里面保存整个树需要的一些参数,包括但不限于:训练样本数量、测试样本数量、特征维数、每个节点随机提取的特征维数、CART树的数量、树的最大深度、类别数量(如果是分类问题)、一些终止条件、指向所有树的指针,指向训练集和测试集的指针,指向训练集label的指针等。
还要有一些函数,至少要有train和predict 吧。
train里面直接调用每棵树的train方法即可,predict同理,但要对每棵树的预测输出做处理,得到森林的预测输出。
其次,要有一个sample类,这个类可不是用来存储训练集和对应label的,这是因为,每棵树、每个节点都有自己的样本集和,如果你的存储每个样本集和的话,需要的内存实在是太过巨大了,假设样本数量为M,特征维数为N,则整个训练集大小为M×N,而每棵树的每层都有这么多样本,树的深度为D,共有S棵树的话,则需要存储M×N×D×S的存储空间。
这实在是太大了。
因此,每个节点训练时用到的训练样本和特征,我们都用序号数组来代替,sample类就是干这个的。
sample的函数基本需要两个就行,第一个是从现有训练集有放回的随机抽取一个新的训练集,当然,只包含样本的序号。
第二个函数是从现有的特征中无放回的随机抽取一定数量的特征,同理,也是特征序号即可。
然后,需要一个Tree类,代表每棵树,里面保存树的一些参数以及一个指向所有节点的指针。
最后,需要一个Node类,代表树的每个节点。
需要说明的是,保存树的方式可以是最普通的数组,也可是是vector。
Node的保存方式同理,但是个人不建议用链表的方式,在程序设计以及函数处理上太麻烦,但是在省空间上并没有太多的体现。
随机森林是一个用随机方式建立的,包含多个决策树的分类器。
其输出的类别是由各个树输出的类别的众数而定。
随机性主要体现在两个方面:(1)训练每棵树时,从全部训练样本中选取一个子集进行训练(即bootstrap取样)。
用剩余的数据进行评测,评估其误差;(2)在每个节点,随机选取所有特征的一个子集,用来计算最佳分割方式。
随机森林的主要优点:(1)在大的、高维数据训练时,不容易出现过拟合而且速度较快;(2)测试时速度很快;(3)对训练数据中的噪声和错误鲁棒。
MATLAB随机森林分类器(Random Forest)Factor = TreeBagger(nTree, train_data, train_label);[Predict_label,Scores] = predict(Factor, test_data);scores是语义向量(概率输出)。
实验中nTree = 500。