下载此文档

随机森林实验报告.doc


文档分类:研究报告 | 页数:约14页 举报非法文档有奖
1/14
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/14 下载此文档
文档列表 文档介绍
随机森林实验报告实验目的实现随机森林模型并测试。实验问题Kaggle第二次作业Non-:,决策树又分为拟合树和分类树。这两者的区别在于代价估值函数的不同。,用拟合树做分类的效果比分类树略好。,它总是可以被分解为N个2分类问题,这样分解的好处是其决策树更加方便构造,更加简单,且更加有利于用拟合树来构建分类树。对于每一个2分类问题,构造的树又叫CART树,它是一颗二叉树。。:随机森林构造:算法思路:将一个N分类问题转化为N个二分类问题。转化方法是:构造N棵二叉拟合树,这里假设N为26,然后我们给N棵二叉树依次标号为1,2,3...26。1号树的结果对应于该条记录是不是属于第一类,是则输出1,,是则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个索引做是否判断的二分类树视为一个整体,在多线程的环境下,构造多个这样的整体,然后进行求和运算,最后取出每个结果序列中值最大的元素的下标作为分类值,那么久得到了我们想要的结果,随机森林完成。算法流程:读入训练集trainset,测试集testset将训练集分割为输入trainIn,输出trainOut这里假设类别数N为26,将trainOut[记录条数]映射为transformTrainOut[训练记录数][26][测试记录数][26]=1:ForestSize://对训练集采样,这里要注意输入和输出一致[sampleIn,transformSampleOut]=TakeSample(trainIn,transformTrainOut)Forcategory=1:26://CartTree数组存放着26棵二分类树CartTree[category]=TrainCartTree(sampleIn,transformSampleOut);end//transformTestOut[测试记录数][26]为承接二分类树输出的容器fori1=1:testSetNum:Forcategory=1:26:transformTestOut[i1][category]+=predict(CartTree[category],testset[i1])endEndEnd遍历transformTrainOut[],将其每一行的最大值的下标作为该行记录的索引值。,我们每一次26分类是由26棵CART共同完成的,CART的costfunction采用的是gini系数,CART的最大层数为7,,对属性进行了打乱抽样,抽样数为25,即每次分割只在25个属性中寻找最合适的值。并且对于每个选取的属性,我们进行了行采样。即如果这个属性所拥有的属性值数大于30,我们选取其中30个作为分割候选,如果小于30,则全部纳入分割候选。代码详解训练集/:训练集记录列数numparametres(ID(1)+参数数量(617)+输出(1)=619),我们声明了全局变量trainIn用于装载训练集输入,trainOut用于装载训练集的输出(这里trainOut是二维数组是出于模型如果泛化,那么输出值不一定只有一个的情况,在本次实验中并未派上什么真正用场,可以将trainOut看作一个普通一维数组)。trainID用于装载训练集中每一行的第一列ID号。testIn,testID则对应测试集的输入和ID号。这里注意,没有testOut的原因是测试集的结果理论上应该是不存在的。然后通过自己编写的读入函数读入测试集合训练集,这个函数将分别装载我们在前面提到的trainIn、trainOut、trainID、testIn、testID。这个函数使用的fstre

随机森林实验报告 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数14
  • 收藏数0 收藏
  • 顶次数0
  • 上传人一叶轻舟
  • 文件大小701 KB
  • 时间2020-08-10