随机森林(原理/样例实现/参数调优)

决策树

1.决策树与随机森林都属于机器学习中监督学习的范畴,主要用于分类问题。
决策树算法有这几种:ID3、C4.5、CART,基于决策树的算法有bagging、随机森林、GBDT等。
决策树是一种利用树形结构进行决策的算法,对于样本数据根据已知条件或叫特征进行分叉,最终建立一棵树,树的叶子结节标识最终决策。新来的数据便可以根据这棵树进行判断。随机森林是一种通过多棵决策树进行优化决策的算法。

2.案例:
这里写图片描述
图 1 是一棵结构简单的决策树,用于预测贷款用户是否具有偿还贷款的能力。贷款用户主要具备三个属性:是否拥有房产,是否结婚,平均月收入。每一个内部结节都表示一个属性条件判断,叶子结节表示贷款用户是否具有偿还能力。
这里说的属性,也就是算法中的特征,对应于数据表就是字段。
这里说的可以偿还/不能偿还,就是一种分类问题。

3.决策树特征选取:
从上图我们可以看到,第一个节点使用“拥有房产”作为条件,也就是特征。那么我们为什么第一个条件选择“拥有房产”呢,选择的条件和依据是什么呢?下面介绍基尼系数:
基尼指数是另一种数据的不纯度的度量方法,其公式为:这里写图片描述
该公式可以用数学公式证明:
x+y=1
f=1-(x^2+y^2)
f(x)=1-x^2-(1-x)^2=-2x^2+2x
曲线为:
这里写图片描述
根据上图可以看到,当x越靠近0或者1时,系数越小,代表数据纯度越高。有就是中间的某类数据占的比重比较大,也符合我们的认识。
其中 c 表示数据集中类别的数量,Pi 表示类别 i 样本数量占所有样本的比例。 从该公式可以看出,当数据集中数据混合的程度越高,基尼指数也就越高。当数据集 D 只有一种数据类型,那么基尼指数的值为最低 0。
如果选取的属性为 A,那么分裂后的数据集 D 的基尼指数的计算公式为:这里写图片描述
其中 k 表示样本 D 被分为 k 个部分,数据集 D 分裂成为 k 个 Dj 数据集。
对于特征选取,需要选择最小的分裂后的基尼指数。也可以用基尼指数增益值作为决策树选择特征的依据。公式如下:这里写图片描述
在决策树选择特征时,应选择基尼指数增益值最大的特征,作为该结节分裂条件。
另一个,和基尼系数类似,可采用信息熵,熵的概念物理上都学过,越无序,熵越大,不做多解释:
假设在样本数据集 D 中,混有 c 种类别的数据。构建决策树时,根据给定的样本数据集选择某个特征值作为树的结节。在数据集中,可以计算出该数据中的信息熵:这里写图片描述
这里写图片描述
上图为分析信息增益的计算公式,可以看出和基尼系数大体类似。
如果选取的属性为 A,那么分裂后的数据集 D 的基尼指数的计算公式为:这里写图片描述
其中 k 表示样本 D 被分为 k 个部分,数据集 D 分裂成为 k 个 Dj 数据集。
对于特征选取,需要选择最小的分裂后的基尼指数。也可以用基尼指数增益值作为决策树选择特征的依据。公式如下:这里写图片描述
在决策树选择特征时,应选择基尼指数增益值最大的特征,作为该结节分裂条件。

4.剪枝:
分为预剪枝和后剪枝。
预剪枝提前结束决策树的省长,后剪枝效果更好,但是后剪枝会浪费在叔的生长过程中的计算。

5.集中决策树的区别:
1) ID3
是最早提出的一种决策树方法,使用上述信息增益的方式建立。
缺点:只能处理离散型属性,并且对倾向于选择取值较多的属性;
2) C4.5
使用增益率对信息增益进行扩充,以解决偏向取值较多的属性的问题。另外它可以处理连续型属性。
3) CART
CART中用于选择变量的不纯性度量是Gini指数;
如果目标变量是标称的,并且是具有两个以上的类别,则CART可能考虑将目标类别合并成两个超类别(双化);
如果目标变量是连续的,则CART算法找出一组基于树的回归方程来预测目标变量。


随机森林

1.随机森林原理:
随机森林由Leo Breiman(2001)提出的一种分类算法,它通过自助法(bootstrap)重采样技术,从原始训练样本集N中有放回地重复随机抽取n个样本生成新的训练样本集合训练决策树,然后按以上步骤生成m棵决策树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。其实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于独立抽取的样本。
单棵树的分类能力可能很小,但在随机产生大量的决策树后,一个测试样本可以通过每一棵树的分类结果经统计后选择最可能的分类。
随机森林大致过程如下:
1)从样本集中有放回随机采样选出n个样本;
2)从所有特征中随机选择k个特征,对选出的样本利用这些特征建立决策树(一般是CART,也可是别的或混合);
3)重复以上两步m次,即生成m棵决策树,形成随机森林;
4)对于新数据,经过每棵树决策,最后投票确认分到哪一类。
2.随机森林特点:
随机森林有很多优点:
1) 每棵树都选择部分样本及部分特征,一定程度避免过拟合;
2) 每棵树随机选择样本并随机选择特征,使得具有很好的抗噪能力,性能稳定;
3) 能处理很高维度的数据,并且不用做特征选择;
4) 适合并行计算;
5) 实现比较简单;
缺点:
1) 参数较复杂;
2) 模型训练和预测都比较慢。
3.使用:
随机森林算法在大部分数据处理软件中都有实现,使用时可以直接调用,只需指定所需参数。
随机森林模型训练前要设置的参数较多,按PAI平台的实现有如下几个:
o 算法类型:(可选)可供选择的算法类型有id3算法、cart算法、c4.5算法以及默认情况下的将上述三

  • 143
    点赞
  • 939
    收藏
    觉得还不错? 一键收藏
  • 46
    评论
在Matlab中,可以通过以下步骤来进行随机森林参数调优: 1. 加载数据集:首先,加载您的数据集。确保数据集已经进行了预处理和特征工程。 2. 分割数据集:将数据集分成训练集和测试集。可以使用`cvpartition`函数来实现交叉验证和数据集分割。 3. 创建随机森林模型:使用`TreeBagger`函数创建一个随机森林模型。该函数允许您指定一些参数,如树的数量、最小叶子大小等。例如: ```matlab nTrees = 50; % 树的数量 minLeafSize = 5; % 最小叶子大小 rfModel = TreeBagger(nTrees, predictors, response, 'Method', 'classification', 'MinLeafSize', minLeafSize); ``` 4. 参数调优:在这一步,您需要选择一些参数来进行调优。常见的参数包括树的数量、最小叶子大小、最大特征数等。您可以使用`HyperparameterOptimizationOptions`函数来设置参数搜索的范围和搜索方法。例如: ```matlab hyperparameters = struct('nTrees',optimizableVariable('nTrees',[10,100],'Type','integer'),... 'minLeafSize',optimizableVariable('minLeafSize',[1,10],'Type','integer')); hyperparameterOpts = struct('MaxObjectiveEvaluations',10,'AcquisitionFunctionName','expected-improvement-plus'); ``` 5. 参数搜索:使用`bayesopt`函数进行参数搜索。将随机森林模型、数据集和参数配置作为输入。例如: ```matlab bestHyperparameters = bayesopt(@(params)trainRFModel(params,predictors,response),... hyperparameters,... 'MaxObjectiveEvaluations',hyperparameterOpts.MaxObjectiveEvaluations,... 'AcquisitionFunctionName',hyperparameterOpts.AcquisitionFunctionName); ``` 6. 评估结果:使用最优的参数配置重新训练随机森林模型,并在测试集上评估模型性能。可以根据需要选择适当的评估指标,如准确率、精确率、召回率等。 这些步骤可以帮助您在Matlab中进行随机森林参数调优。根据您的具体问题和数据集,您可能需要调整步骤中的一些细节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值