APP下载

基于随机森林的光谱分类模型研究

2021-10-16袁正熙

现代信息科技 2021年7期
关键词:随机森林

摘要:文章第一节介绍集成算法原理;第二节系统理论地说明了Bagging算法;第三节介绍随机森林算法;第四节介绍实验内容以及程序模块,利用Python实现光谱数据的分类并评估结果,然后实行调参,得到最优的参数搭配;第五节对优化模型进行测试,与原模型比较准确率、查准率、召回率、F-score值等指标,发现优化后的结果优良;第六节总结随机森林算法的优缺点。

关键词:集成学习;Bagging;随机森林

中图分类号:TP273.4 文献标识码:A  文章编号:2096-4706(2021)07-0081-04

Study on Spectral Classification Model Based on Random Forest

YUAN Zhengxi

(South China Normal University,Guangzhou  510631,China)

Abstract:In this paper,the first section introduces the principle of the ensemble algorithm;in the second section,the Bagging algorithm is explained systematically and theoretically;the third section introduces the random forest algorithm;the fourth section introduces the experimental content and program modules,Python is used to classify the spectral data and evaluate the results,and then adjust the parameters to obtain the optimal parameter matching;the fifth section tests the optimized model and compares the indexes of the accuracy,precision,recall and F-score value with the original model. It is found that the optimized result is excellent;the sixth section summarizes the advantages and disadvantages of random forest algorithm.

Keywords:ensemble learning;Bagging;random forest

收稿日期:2021-03-20

0  引  言

機器学习,一般来说是致力于研究如何通过计算的手段、利用经验来改善系统自身性能的一种方法。对于机器学习而言,“经验”往往是以数据形式储存起来的。机器改善性能的方法是通过数据的不断训练产生“模型”,继而使得该“模型”能够尽可能地适用于更多的数据。目前,机器学习有多种算法,比如:决策树、神经网络、支持向量机、贝叶斯分类、LDA,等等。通常来说,一个研究可以使用多种算法,而集成学习则能够结合多个算法使得机器学习具有更好的效果以及更优越的泛化性能。

1  Bagging算法

集成学习的方法有并行和串行两种,Bagging算法是并行式集成学习方法最著名的代表。Bagging是基于Boostrap Sampling采样方法,给定m个样本的数据集,随机取出一个样本,接着再把刚才抽到的样本放回数据集中,由此使得下一次抽样的数据集与上一次的情形完全相同。这样,经过m次抽取,我们得到m个样本集。根据Boostrap Sampling采样方法,这m个样本集里的某些元素可能重复多次,也可能有部分样本未出现在样本集中。

相比于其他集成学习方法,Bagging算法更为高效,其学习复杂度和学习器是同阶的。另外,Bagging可以直接用于多分类和回归等任务。再者,Bagging可以降低方差,因此把它使用到不剪枝的决策树上效果非常好。这也为随机森林算法的出现奠定了基础。

2  随机森林

随机森林是使用多棵决策树对样本进行训练并预测的一种集成分类器,该分类器最早由Leo Breiman和Adele Cutler于1995年提出。它以决策树为基学习器,使用Bagging集成方法,并在此基础上引入随机属性的选择。随机森林有许多优势:算法简单、易于实现、计算开销小等,其甚至被誉为“代表集成学习技术水平的方法”。

简单来说,随机森林分为四个步骤:第一,使用Bagging方法形成每棵树的训练样本集;第二,随机选取分裂属性集,假设当前节点共有d个可用属性,指定一个属性数k(k≤d),从d个属性中随机抽取k个属性作为分裂属性集,并从分裂属性集中选择最优属性用于数据划分;第三,每棵树任其生长,不进行剪枝;第四,根据投票法则对样本类别进行投票。

具体形式如图1所示,设数据集为D且创建k棵决策树,则对应有k个随机向量θi(其中i=1,2,…,k),数据集D在每个θi对应有一个子集数据集供Di第i棵决策树学习,得到决策树分类结果i。最后利用投票决定最优的分类结果。

3  实验及调参优化

3.1  数据预处理

3.1.1  标准化处理

采用z-score标准化。这种方法基于原始数据的均值和标准差进行数据的标准化。定义均值为u,方差为σ,x为原始数据,则标准化后新数据x'计算方式如式(1)所示:

(1)

3.1.2  连续值处理

一般地,我们考虑将连续值离散化以适应决策树模型。这里,我们应用二分法对连续值进行处理。

给定样本集D和连续属性a,假定a在D上有n个不同的取值,将这些值从小到大进行排序,得到序列(a1,a2,…,an)。对于该序列,选择一个a属性取值m,则可以把D分成两个子集A、B。第一个子集A包含那些在属性a上取值不大于m的样本,另一子集B则包含那些在属性a上取值大于m的样本。如此,只要取值m在[ai,ai+1)上,m的划分结果就不变。这样,n个属性值就形成n-1个离散值。由此,我们定义一个长度为n-1的序列M,第i个元素取值如式(2)所示:

(2)

即把区间[ai,ai+1)的中位点作为划分点。然后,我们就可以像离散属性值一样来考察这些划分点,选取最优的划分点进行样本集合的划分。

3.2  实验流程

我们采用随机森林算法,使用Matlab实现对数据的分类,将代码划分为训练、测试、调度三个模块。

在训练模块中,如表1所示,首先输入训练集;第一步,初始化随机森林;第二步,循环生成N次随机森林,其中每次循环都对单棵树进行初始化,然后使用有放回采样的方法从训练集中抽样,使用的函数有“sort”和“randsample”;第三步,利用二分法将所选择的连续属性离散化;最后,输出含N棵决策树的随机森林。

训练模型为整個实验的核心,因此将训练模块的关键代码特别进行展示,以下为代码清单:

#-*-coding: utf-8 -*-

%train为存放train_x(trian{1}), train_y(train{2})的cell 1*2

%   其中train_y 为k*1矩阵;矩阵存放标签

%   数据都已标准化

%   test与train数据结构类似

%   N:为随机森林内决策树的数量

%   m:为抽取样本量占总样本量的比例

%   theTrees:为含有N棵决策树的随机森林(cell*N)

%% 初始化随机森林

theTrees=[];

global Tree;

%%循环N次生成随机森林

for i=1:N

%%单棵树的初始化

TrainIndex=[];

train_x=[];

train_y=[];

Tree=[];

attr_list = cell(size(train{1},2), 1);

attr_value_list=[];

Tree=struct('father_Node_name',[],'Node_name',[], 'best_Attr',[], ... 'best_breakpoint',[],'MostVal',[]);

%%有放回采样训练集

TrainIndex =sort(randsample(size(train{1},1),round(size(train{1},1)*m),true));

train_x=train{1}(TrainIndex,:);

train_y=train{2}(TrainIndex,:);

%% 以下步骤为把所选的属性离散化

for i1 = 1 : size(train{1},2)

attr_value_list = unique(train_x(:,i1));

%利用二分法将连续属性离散化

attr_list{i1} = (attr_value_list(2 : end) + attr_value_list(1 : end - 1)) / 2;

end

%% 开始生成树

TreeGenerate('root', train_x, train_y, attr_list);

Tree(1)=[];

theTrees{i}=Tree;

end

end

在测试模块中,如表2所示,首先输入测试集;第一步,初始化数据,添加若干空列表用于接下来储存数据;第二步,利用训练模块得到的随机森林模型对测试机数据进行预测;第三步,根据投票原则生最终预测结果,投票采用的方法是“相对多数投票法”。使用Matlab里的“tabulate”函数,计算出某样本不同类别对应的分类概率,从而选择概率最高的一类作为最终的所属类别;最后,输出测试集的分类结果。

在调度模块中,如表3所示,首先读取训练数据、测试数据、标签集和光谱型的7种类型;第一步,调用训练模块;第二步,调用测试模块;第三步,评估结果即测试随机森林的精度;最后,计算程序运行时间并输出分类准确率。

3.3  实验数据

本文运用的数据是LAMOST平台提供的恒星光谱数据,该样本数据有481个属性,其中训练集保存了159条样本数据和标签,测试集保存了200条样本数据和标签。每条数据的标签有三列信息,第一列是对应光谱数据的光谱型,第二列是光谱次型,第三列是光度型。本文只对第一列的光谱型数据进行分类,其他两列类同。

3.4  实验结果

运行程序,我们得到随机森林算法对数据库的分类效果。默认使用50个子树数量、8个特征数量,得到准确率约为82%。

4  模型优化及测试

4.1  模型优化

为了得到更满意的学习效果,本文需要尽量遍历尽可能多的组合方式,找到最优分类效果。假设样本特征数为N,我们分别使用“50、100、1 000、1 500”子树数量与N个、8个、log2N个、 √N个特性数量两两搭配,运行结果如表4所示。

由表4可知,当取子树棵树为1 500、特征数量为√N时,能达到最高86%的准确率。因此对于本次分类任务,本文认为使用上述搭配效果最佳。

4.2  模型测试

虽然得到了更好的参数搭配,但是我们还要测试优化模型在该参数搭配下的其他性能。为此我们重复100次实验,统计每次实验下原模型和优化模型的准确率,计算100次实验中两个模型的平均准确率。

由于随机森林采取的是有放回的随机抽样,因此每次运行的准确率略有不同,故通过这种方法得到的准确率波动是具有参考价值的。通过这样的比较,我们希望看到的是优化后的模型比原模型具有更好的稳定性以及更高的预测准确率,甚至可以有更高的查准率、召回率以及F-score值。于是,我们分别运行原模型和优化模型,得到各自的预测准确率,绘制它们的对比图,详情如图2所示。

原模型取子树棵树为50,特征数量为8时的预测准确率波动图;优化模型选取子树棵树为1 500,特征数量为√N的预测准确率波动图。两模型均值和方差对比如表5所示。

对比发现,原模型平均准确率是82.48%,优化后的预测准确率在85.22%上下波动,比原来提高2.00%以上。另外,原模型准确率最低是77.80%,最高是86.70%,最大波幅4.00%以上;优化模型准确率最低为83.10%,最高为87.30%,波幅不超过2.20%,最大波幅比原来减小2.00%以上。

由表5可以看出,调参之后随着生成子树的数量的提高,模型的稳定性也提高了,同时随着选取特征数量的调整,预测准确率也有所上升,达到了预期目标。

接着,再来看看原模型和优化模型在micro算法下运行100次的查准率、召回率以及F-score值这三种分类指标的均值,如表6所示。

显然,优化模型三种分类指标均有明显提升。综上所述,优化后的模型具有比原模型更好的稳定性以及更高的预测准确率,甚至可以有更高的查准率、召回率以及F-score值。故此可以采纳该参数配置的随机森林算法。

5  结  论

本文介绍了机器学习,讲解了集成学习的Bagging算法,重点放在Bagging中的随机森林上,并用Matlab代码实现了随机森林算法。

对于随机森林,其优点是具有極高的准确率;它引入随机性,使得随机森林不容易过拟合,具有很好的抗噪声能力,对异常点/离群点不敏感;而且它能够处理很高维度的数据,并且不用做特征选择;随机森林还可以得到变量重要性排序。其缺点是相比于其他算法,随机森林的输出预测可能较慢。

用Matlab实现随机森林算法的难点在于算法的子函数很多,逻辑关系较为复杂,代码需要调试很久。

应用随机森林算法的难点在于参数调整是否合适,另外,训练样本集、随机划分和选择属性也很重要。

参考文献:

[1] 周志华.机器学习 [M].北京:清华大学出版社,2016.

[2] 方匡南,吴见彬,朱建平,等.随机森林方法研究综述 [J].统计与信息论坛,2011,26(3):32-38.

[3] 董乐红,耿国华,高原.Boosting算法综述 [J].计算机应用与软件,2006,23(8):27-29.

[4] 胡永德.海量光谱数据降维方法的研究与应用 [D].济南:山东大学,2021.

[5] BREIMAN L. Random forests [J].Machine Learning,2001,45(1):5-32.

[6] 周惠慧.恒星天文光谱数据分类方法探究 [J].信息与电脑(理论版),2021,33(7):84-86.

[7] 刘曼云,赵正旭,王威,等.LAMOST恒星光谱数据分析 [J].信息技术与信息化,2019(11):193-197.

作者简介:袁正熙(2000—),男,汉族,广东东莞人,本科在读,研究方向:应用统计。

猜你喜欢

随机森林
随机森林算法在中药指纹图谱中的应用:以不同品牌夏桑菊颗粒指纹图谱分析为例
基于随机森林的登革热时空扩散影响因子等级体系挖掘
基于随机森林的HTTP异常检测
个人信用评分模型比较数据挖掘分析
随机森林在棉蚜虫害等级预测中的应用
基于二次随机森林的不平衡数据分类算法
拱坝变形监测预报的随机森林模型及应用
基于随机森林算法的飞机发动机故障诊断方法的研究
基于奇异熵和随机森林的人脸识别
基于随机森林算法的B2B客户分级系统的设计