APP下载

基于XGBoost算法的恒星/星系分类研究∗

2019-04-18张文辉林基明

天文学报 2019年2期
关键词:测光星系决策树

李 超 张文辉 林基明

(1 桂林电子科技大学信息与通信工程学院 桂林 541004)

(2 桂林电子科技大学认知无线电与信息处理教育部重点实验室 桂林 541004)

(3 桂林电子科技大学广西云计算与大数据协同创新中心 桂林 541004)

(4 桂林电子科技大学广西高校云计算与复杂系统重点实验室 桂林 541004)

1 引言

近些年来,随着各国空间科学技术的进步和大型巡天项目的不断开展,天文数据量已经呈指数式增长,数据量也以TB量级,甚至以PB量级来计量,天文学显然已经发展到了一个前所未有的阶段,即大数据-巨信息量-全波段时代[1].面对如此庞大而又复杂的天文数据,如何进行高效而且准确的数据分析显得极为重要.

恒星/星系分类一直是天文数据分析的基本内容之一,而且人们对它的研究最早可以追溯到18世纪[2].基于形态、启发式分割等原始的恒星/星系分类方法在之前被广泛应用.随着机器学习的不断发展,越来越多基于恒星/星系分类算法的研究也随之展开.如严太生等[3]通过去除离群化数据,并且使用自动聚类的方法,对SDSS-DR6 (Sloan Digital Sky Survey Data Release 6)的测光数据进行恒星/星系的分类,结果表明自动聚类算法具有较高的效率;Vasconcellos等[4]使用了约13种不同的决策树算法对SDSSDR7的测光数据进行了恒星/星系分类研究,结果表明功能树决策树算法在恒星/星系分类的这个问题上要优于其他决策树算法;Sevilla-Noarbe等[5]基于SDSS-DR9 (SDSS Data Release 9)测光图像目录中给定的特征数据集,做了Boosted决策树在恒星/星系分类问题上的应用研究,实验结果表明Boosted决策树的分类性能要优于SDSS数据集中给定的type测光分类器;Kim等[6]提出了一个深度卷积网络框架,并将其应用到天文图像数据中进行恒星/星系的分类,取得了非常好的效果;李俊峰等[7]通过深度置信网络(Deep Belief Network,DBN)、神经网络(Neural Network,NN)和支持向量机(Support Vector Machine,SVM)等算法对SDSS数据分类的性能对比,研究并分析了3种自动光谱分类算法是否适用;刘蓉等[8]提出了一种非参数回归与Adaboost (Adaptive boosting)相结合且对恒星光谱进行MK分类的方法,将恒星按照其光谱型和光度型进行分类,同时识别出其光谱型的次型;Xan等[9]在集成学习的背景下探索了天文学中恒星/星系的分类,并给出了合理的解释.虽然在天文学领域,已经研究并使用了很多优秀的算法,但是这些算法都存在一些问题,比如泛化能力弱.即在亮源集有很高的分类正确率,但在暗源集分类正确率低的问题始终无法得到有效的解决.

到目前为止,国内外将XGBoost (eXtreme Gradient Boosting)算法应用到天文数据挖掘领域的并不多见,尤其是用来研究恒星/星系的分类.基于此,本文研究了基于XGBoost的恒星/星系分类算法,首次将XGBoost方法应用到SDSS-DR7测光数据之中,并将XGBoost与功能树(Function Tree,FT)、Adaboost、随机森林(Random Forest,RF)、梯度提升决策树(Gradient Boosting Decision Tree,GBDT)、堆叠降噪自编码(Stacked Denoising AutoEncoders,SDAE)和DBN等模型的分类效果进行对比,验证XGBoost方法在天文学研究中的应用价值.

2 斯隆数字巡天

迄今为止,世界上已经有非常多的巡天项目投入使用,但是在众多巡天项目中,SDSS被认为是最成功,也是最有影响力的一个.SDSS的测光系统分别对天体进行u、g、r、i、z 5个波段的测量.本文使用的测光数据只针对r波段.在测光数据中,同时带有光谱证认参数和测光参数的数据集仅占全部测光数据集的极少一部分,剩下的绝大部分只有测光参数.这意味着,本文提出的XGBoost恒星/星系分类模型可能是对那些没有光谱证认参数的天体进行准确分类的一个有效方法.

3 提升算法

提升算法基于这样一种思想:即对于任何一个复杂的任务来说,将多个专家的判断进行适当的综合所得出的最终判断,要比其中任何一个专家单独的判断好.实际上,这和“三个臭皮匠顶个诸葛亮”的道理是相似的.提升算法是一种非常常用的统计学习方法,其应用非常广泛并且有很好的效果.在分类问题中,首先,它通过更新训练样本的权重,能够学习到多个分类器.然后,再将这些分类器进行线性组合,以此来提高分类器的分类性能.

3.1 GBDT原理

梯度提升决策树[10](GBDT)算法本质上是一种以决策树作为基函数的提升算法.梯度提升决策树模型可以表示为决策树的加法模型:

其中,x表示样本数据集,T(x;θm)表示决策树,θm表示决策树的参数,M表示决策树的个数.梯度提升树使用前向分布算法.首先,它需要确定初始的提升树f0(x)=0.然后,根据前向分布算法得出第m步的模型:

其中,fm−1(x)是当前的模型.最后,根据经验风险最小化确定下一棵决策树的参数θm:

式中,yi表示第i个样本的真实标签,N表示数据样本的个数.当L采用平方误差形式的损失函数时:

其中,y表示所有样本数据的真实标签.这时,损失函数变为:

如果是对于分类问题,GBDT算法需要将基分类器限制为分类树.虽然训练数据中的输入和输出之间可能存在着较为复杂的关系,但是决策树模型本身固有的特点决定了决策树的线性组合可以很好地拟合训练数据,并得到模型参数.

3.2 XGBoost原理

XGBoost[11]也是提升算法的一种.与传统的GBDT在优化时使用一阶导数信息不同,XGBoost在优化时做出了很好的改进.它通过对损失函数进行2阶泰勒展开,在保留一阶导数信息的同时也加入了2阶导数的信息,这样可以使得模型在训练集上更快地收敛.不仅如此,XGBoost为了控制模型的复杂程度,还在损失函数中添加了一个正则项,防止模型出现过拟合.XGBoost算法具体推导过程如下.设D={(xi,yi)}(|D|=n,xi∈Rd,yi∈R)为一个拥有n个样本、每个样本有d个特征的数据集;xi表示第i个样本数据.树的集成模型通过K(树的数目)个相加函数来预测最终结果:

其中,F= {f(x)=wq(x)}(q:Rd→T,w∈RT)(q表示将样本实例Rd映射到相应叶索引的结构,T表示叶子节点的数目,RT为叶子节点权重w的空间)代表了一个决策树的函数空间,样本xi和预测值的函数关系记为ϕ;wq(x)把每一个节点映射成一个值,即f(x)的值;fk表示第k棵树的模型.每一个fk对应着一个独立的树结构q和叶子节点的权值w.为了学习模型中使用的函数集,故定义正则化目标函数如下:

其中,l是一个用来衡量预测值和真实值yi之间差异的可微凸损失函数,Ω表示模型复杂度的惩罚项,γ表示叶子数目的正则化参数,用来抑制节点继续向下分裂,λ表示叶子权重的正则化参数.目标是最小化损失函数

其中,L(t)表示第t棵树的目标函数;表示前t−1棵树的输出值之和,构成前t−1棵树的预测值;ft表示第t棵树的模型,ft(xi)表示第t棵树的输出结果,相加构成最新的预测值.定义gi和hi:

去掉常数项,第t次迭代后的损失函数变为:

定义Ij={i|q(xi)=j}作为叶子节点j的实例集,根据(12)式得:

其中,wj表示叶子节点j的权重.对于固定的决策树的结构q(x),可以计算得出叶子节点j的最优权重:

(15)式作为衡量树结构质量的指标,可以用来计算树结构q的得分.即便如此,想要列举出所有可能的树结构q几乎不可能.因此,需要使用贪心算法迭代地在每一个已有的叶子节点添加分支.假定IL和IR是划分后左右子树叶子节点的集合,即I=IL∪IR,则划分后的损失函数如下:

4 实验测试

4.1 数据集介绍

为了能与已有算法进行更好的比较,本研究采用的恒星/星系数据集是使用SQL(Structured Query Language)指令在SDSS数据库中提取,并且与文献[4]保持一致.数据特征如表1所示.

表1 用于SDSS-DR7恒星/星系分类的特征Table 1 The features for SDSS-DR7 star/galaxy classification

4.2 实验分析

4.2.1 特征重要性测试

通过对数据特征仿真,得知数据特征的重要程度如图1所示,其中F score是表示特征重要程度的参数.

图1 特征的重要程度Fig.1 Feature importance

4.2.2 XGBoost模型优化

XGBoost使用贪心算法,其具体算法流程如下.使用栅格搜索对XGBoost算法进行参数调优,树的深度为6,学习率为0.01,在710次迭代下模型收敛,达到最优值,利用训练好的模型进行实验.

?

4.2.3 实验方法及模型对比

为了能更好地评估XGBoost模型在恒星/星系分类上的性能,使用了十折交叉验证的方法(将完整的数据集分为10等份,其中1份作为测试集,剩余9份作为训练集),并且与文献[4]中的FT (分类性能优于其他传统决策树算法)、RF、GBDT、Adaboost和目前已经使用的新的算法如DBN、SDAE等作对比,详细的对比结果如表2.同样,为了保证对比分类结果的有效性,采用与文献[4]一致的分类性能衡量指标(CP),即星系的分类正确率,其定义如下:

表2 SDSS-DR7星系分类正确率Table 2 The accuracy of SDSS-DR7 galaxy classification

从通过仿真实验得出的表2中可以看出,XGBoost的星系分类准确率要优于FT.尤其是在暗星等区间,XGBoost相比FT提高了近10%的准确率.而与其他较为先进的DBN[12]、SDAE、RF、Adaboost、GBDT相比,在modelMag值为20.5–21的最暗星等区间,也提高了2%–5%的星系分类准确率,由此可见,XGBoost算法模型具有更强的泛化能力,在恒星星系分类问题上的表现优于其他算法.另外,本文利用modelMag属性值为14–19的约88万条数据,来测试XGBoost、GBDT和Adaboost在亮星等数据集上训练模型时的效率.使用亮源是因为在暗星等或者最暗星等数据量小的数据集上,对比结果差异不明显.结果如表3所示.

之所以没有测试其他模型的训练时间,是因为其他模型的星系分类准确率要远低于以上3个模型.实验结果表明,在数据集不变的情况下,XGBoost在训练模型上所消耗的时间要远远低于GBDT和Adaboost.相对于GBDT,XGBoost使用了2阶信息,可以更快地在训练集上收敛.因此,XGBoost不仅在准确率上优于其他模型,而且在效率上也远高于GBDT和Adaboost.

表3 模型训练时间Table 3 The time of the model training

5 总结与展望

本文通过使用SDSS-DR7测光数据集,并且采用十折交叉验证的方法,研究了基于XGBoost算法的恒星/星系的分类问题.最后通过使用经验值调参、栅格搜索等常用方法对模型不断调优,基于星系分类准确率的评价指标,与FT、Adaboost、RF、GBDT、SDAE、DBN等模型进行对比.实验结果表明,调优后的XGBoost算法模型在恒星/星系数据集上的分类效果要远好于其他模型.同时,在训练模型时,XGBoost要比GBDT和Adaboost更加高效.因此,无论是准确性还是高效性,XGBoost模型无疑都具有更加明显的优势.虽然,在恒星/星系暗源的准确性还有待进一步提高,但是,我相信随着XGBoost算法在天文学数据挖掘方面的研究逐步深入,天文学相关领域将会快速发展.

猜你喜欢

测光星系决策树
跟着星系深呼吸
迄今发现的最大星系
基于决策树和神经网络的高血压病危险因素研究
If I Were an Astronaut
决策树和随机森林方法在管理决策中的应用
技术橱窗 科技一点不枯燥
本月话题机内测光系统
决策树多元分类模型预测森林植被覆盖
地外星系
基于决策树的出租车乘客出行目的识别