2025年机器学习实战随机森林算法深度解析与应用.docx

2025年机器学习实战随机森林算法深度解析与应用.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

随机森林试验汇报

试验目的

实现随机森林模型并测试。

试验问题

Kaggle第二次作业Non-linearclassification

算法分析与设计

一.算法设计背景:

1.随机森林的原子分类器一般使用决策树,决策树又分为拟合树和分类树。这两者的区别在于代价估值函数的不一样。

2.根据经验,用拟合树做分类的效果比分类树略好。

3.对于一种N分类问题,它总是可以被分解为N个2分类问题,这样分解的好处是其决策树愈加以便构造,愈加简朴,且愈加有助于用拟合树来构建分类树。对于每一种2分类问题,构造的树又叫CART树,它是一颗二叉树。

4.将N个2分类树的成果进行汇总即可以得到多分类的成果。5.CART树构造:

输入:训练数据集D,停止训练条件

输出:CART决策树

根据训练数据集,从根节点开始,递归地对每个节点进行以下操作,递归构造二叉决策树

(1)设节点的训练数据集为D,计算现有特征对该数据集的基尼系数,此时,对每一个特征A,对于每一个可能的划分值a,根据大于a及小于等于a将训练数据集分成D1,D2两部分。计算gini系数公式如下:

(2)在所有可能特征A以及其所有可能划分点a中,选择gini系数最小的特征及切分值,将D1和D2分配到左右两个子节点去。

(3)对左右节点分别递归的调用(1),(2),直到满足一定条件为止。6.随机森林构造:

(1)随机取样,降低树与树之间的关联性

RF在每次构造一棵决策树时,先随机的有放回的从训练集中抽取(60%)或n(sizeoftrainingset)个样本D,在每个节点分裂前,先随机从总共M个特征中选取m个(mM,一般取根号M)作为分裂用的候选特征,这有效降低了树与树之间的关联性。

二.算法思绪:

将一种N分类问题转化为N个二分类问题。转化措施是:构造N棵二叉拟合树,这里假设N为26,然后我们给N棵二叉树依次标号为1,2,3...26。1号树的成果对应于该条记录是不是属于第一类,是则输出1,否则输出0.2号树的成果对应于该条记录是不是属于第二类,是则1否则0,依此类推。这样,我们的26棵二叉树的成果就对应了26个下标。

例如对于某条记录,这26个二叉树的成果按序号排列为(0,0,0,0,0,0,0,0,0,0,0,0,0,

0,0,..1,0],那么这条记录的分类应当为25。要将一种26维的0,1序列变回

一种索引,我们只需要找出这个序列中值最大的元素的索引,这个索引即是序列号。

我们将上面的26棵分别对26个索引做与否判断的二分类树视为一种整体,在多线程的环境下,构造多种这样的整体,然后进行求和运算,最终取出每个成果序列中值最大的元素的下标作为分类值,那么久得到了我们想要的成果,随机森林完毕。

三.算法流程:

1.读入训练集trainset,测试集testset

2.将训练集分割为输入trainIn,输出trainOut

3.这里假设类别数N为26,将trainOut[记录条数]映射为transformTrainOut[训练记录数][26]

4.初始化transformTestOut[测试记录数][26]所有为05.Fori=1:ForestSize:

//对训练集采样,这里要注意输入和输出一致

[sampleln,transformSampleOut]=TakeSample(trainln,transformTrainOut)Forcategory=1:26:

//CartTree数组寄存着26棵二分类树

CartTree[category]=TrainCartTree(sampleln,transformSampleOut);

end

//transformTestOut[测试记录数][26]为承接二分类树输出的容器foril=1:testSetNum:

Forcategory=1:26:

transformTestOut[i1][category]+=predict(CartTree[category],testset[il])

endEnd

End

6.遍历transformTrainOut[],将其每一行的最大值的下标作为该行记录的索引值。

四.决策树及随机森林的配置1.决策树

在这里,我们每一次26分类是由26棵CART共同完毕的,CART的costfunction采用的是gini系数,CART的最大层数为7,分裂停止条件为目前节点GINI为0或者目前节点所在层数抵达了7.2.随机森林

a.随机森林每次循环的训练集采样为原训练集的0.5.

文档评论(0)

乐毅淘文斋 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8121131046000040

1亿VIP精品文档

相关文档