模式识别随机森林报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模式识别
实验题目:基于自助法随机森林分类器设计
班级:信息10-2
姓名:朱玥
学号:39
指导教师:钱云
目录
随机森林介绍 (3)
自助法 (4)
实验原理 (5)
实验目的 (5)
实验步骤 (5)
实验内容 (6)
实验结果 (7)
小结与讨论 (8)
一、随机森林介绍:
随机森林分类(RFC)是由很多决策树分类模型{h(X,θk),k=1,...}组成的组合分类模型,且参数集{θk}是独立同分布的随机向量,在给定自变量X 下,每个决策树分类模型都由一票投票权来选择最优的分类结果。RFC的基本思想:首先,利用bootstrap抽样从原始训练集抽取k个样本,且每个样本的样本容量都与原始训练集一样;其次,对k个样本分别建立k个决策树模型,得到k种分类结果;最后,根据k种分类结果对每个记录进行投票表决决定其最终分类。
RF通过构造不同的训练集增加分类模型间的差异,从而提高组合分类模型的外推预测能力。通过k轮训练,得到一个分类模型序列{h1(X),h2(X),..., hk(X)},再用它们构成一个多分类模型系统,该系统的最终分类结果采用简单多数投票法。最终的分类决策:
其中,H(x)表示组合分类模型,hi是单个决策树分类模型,Y表示输出变量(或称目标变量),I()为示性函数。式(1)说明了使用多数投票决策的方式来确定最终的分类。
随机森林具有以下特征:
在现有的算法中随机森林算法的精度是无可比拟的。
随机森林能够有效的处理大数据集。
随机森林可以处理没有删减的成千上万的输入变量。
随机森林能够在分类的过程中可以生成一个泛化误差的内部无偏估计。
随机森林是一种具有有效的估计缺失数据的方法,当数据集中有大比例的数据缺失时仍然可以保持精确度不变。
在不平衡的数据集的类别总体中可以平衡误差。
随机森林提供了一种检测变量交互作用的实验方式。特别值得注意的是随机森林的运行速度非常快并且不会产生过度拟合,可以根据需要生成任意多的树。基于随机森林的诸多优点,随机森林在当前的机器学习领域里成为了一个新的研究热点。
随机森林常用的构建方法:
1.装袋法(Bagging)
2.更新权重构建随机森林的方法
3.基于输入构建随机森林
4.基于输出构建随机森林
5.利用随机选择的特征子空间构建随机森林
二、自助法
自助法是一种有返还的再抽样统计方法.可以用于总体分布未知或者统计量的分布未知时的参数推断。
自助法的基本思路:
如果不知道总体分布,那么,对总体分布的最好猜测便是由数据提供的分布。自助法的要点是:①假定观察值便是总体;②由这一假定的总体抽取样本,即再抽样。由原始数据经过再抽样所获得的与原始数据集含量相等的样本称为再抽样样本(resamples)或’自助样本(bootstrap samples)。如果将由原始数据集计算所得的统计量称为观察统计量(observed statistic)的话,那么由再抽样样本计算所得的统计量称为自助统计量(bootstrap statistic)。自助法的关键所在是自助统计量与
观察统计量间的关系,就如同观察统计量与真值间的关系。
三、实验原理:
随机森林是一种包含多棵决策树的分类器,其中每棵决策树的构造和分类测试均相互独立.训练过程中,每棵决策树对原始的训练数据集进行采样替换,构造新的训练数据集(bootstrap方法);决策树中每个决策节点上的分裂测试均从一个随机测试集合中产生:根据某种量化评价标准,例如信息熵等,从随机测试集合中选择一个最佳测试作为决策点的分裂测试.随机森林中的每棵决策树均不需要进行剪枝.相对于单棵决策树而言,随机森林可以避免过拟合问题,分类精度高,稳定性好;随机森林保留了多值分类的特性,适合处理多值分类问题;相比boosting和其他集成方法,随机森林方法对于数据噪声更稳定。
四、实验目的:
利用自助法随机森林对所给数据进行分类
五、实验步骤:
1.随机森林方法对样本数据进行自举重采样,得到多个样本集。所谓自举重采样,就是每次从原来的N个训练样本中有放回地随机抽取N个样本(包括可能重复的样本)。
2.用每个重采样样本集作为训练样本构造一个决策树。在构造决策树的过程中,每次从所有候选特征中随机地抽取m个特征,作为当前节点下决策的备选特征,从这些特征中选择最好地划分训练样本的特征。
3.得到所需数目的决策树后,随机森林方法对这些树的输出进行投票,以得票最多的类作为随机森林的决策。
六.实验内容:
%Run RF on Training set
traindata=textread('satimage_tra.txt');
x=traindata(:,1:(end-1));
y=traindata(:,end);
y(y==7)=6;
cat=ones(1,size(x,2));
classwt=ones(1,length(unique(y)));
param=[502601...
10000...
0100123];
out=RFClass(param,x,y,cat,classwt) printRF(out);
%Plot Variable Importance
figure;
bar(out.errimp,0.1);
title('Variable Importance');
xlabel('');
ylabel('');