随机森林实验报告实验目的实现随机森林模型并测试
实验问题Kaggle第二次作业Non-linearclassification算法分析与设计一.算法设计背景:1
随机森林的原子分类器一般使用决策树,决策树又分为拟合树和分类树
这两者的区别在于代价估值函数的不同
根据经验,用拟合树做分类的效果比分类树略好
对于一个N分类问题,它总是可以被分解为N个2分类问题,这样分解的好处是其决策树更加方便构造,更加简单,且更加有利于用拟合树来构建分类树
对于每一个2分类问题,构造的树又叫CART树,它是一颗二叉树
将N个2分类树的结果进行汇总即可以得到多分类的结果
CART树构造:6
随机森林构造:二.算法思路:将一个N分类问题转化为N个二分类问题
转化方法是:构造N棵二叉拟合树,这里假设N为26,然后我们给N棵二叉树依次标号为1,2,3
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,测试集testset2
将训练集分割为输入trainIn,输出trainOut3
这里假设类别数N为26,将trainOut[记