基于LDA主题模型的雷达软件缺陷分类算法研究 徐天宇,曹 玮,苏艺博,王艳娇(中国船舶集团有限公司第八研究院,南京 211153)0 引 言雷达软件的特点是任务场景复杂、功能集成度高、数据交互频繁,对接口的要求是吞吐量、速率和实时性等,对人机交互界面的要求是友好性和易用性等目前在装备中已大量使用C/C++和FPGA语言代码,且代码量规模较大,导致雷达软件缺陷组合复杂,如何有效提高雷达软件缺陷预测和识别,有助于提高对软件缺陷分布规律和现象的认知,成为影响雷达软件测试设计工作质量和效率的关键与一般软件不同,雷达软件缺陷具有比较复杂的领域特征,难以使用当前可用的文本分类技术或通用主题获取模型,例如通用的隐含狄利克雷分布(Latent Dirichlet Allocation,LDA)主题模型,对雷达软件缺陷数据执行精确的文本分类或主题获取[1]同时,雷达用户对系统的整体功能、性能等质量因素要求较高,而配置项和系统级软件测试更关注软件需求和系统需求是否符合要求,以及软件任务的可靠性和用户体验的潜在需求,并且需要大量人力资源及其他资源用于配置项级和系统级的软件合格性测试上述多个原因直接影响雷达缺陷数据分类的准确性和召回率。
为了提升雷达软件测试效率,减少测试工作量,本文研究并改进现有软件缺陷分类算法,提出的算法适用于配置项级测试和系统级测试的雷达软件缺陷分类1 软件缺陷分类算法相关技术1.1 基于支持向量机的分类算法支持向量机(Support Vector Machine,SVM)按监督学习方式对数据进行二元分类,可表示为在特征空间内使分类间隔最大的线性分类器,其学习目标是使分类间隔最大化,可以化为求解凸二次规划的问题当训练数据线性可分时,利用间隔最大化求最优分类超平面,以便所有数据样本在平面内可以被正确划分开[2]图1为数据线性可分情况下SVM分类示意图1 SVM分类示意图1.2 基于LDA主题模型的分类算法LDA主题模型是一种文档主题生成模型,包含文本、主题和Key3个层次,也可称为三层贝叶斯模型通过LDA建模,可以将文本映射到主题空间上,从而对其进行主题分类和判断相似度等操作[3]LDA主题模型文本分类原理如图2所示图2 基于LDA主题模型的分类示意图2 改进LDA主题模型2.1 基于雷达领域术语词典的软件缺陷文本分词首先分析雷达领域相关标准、系统需求、软件需求、软件设计、测试用例、测试记录、测试问题报告单等语料集,并根据雷达领域系统和软件开发专家的经验确定每个术语的同义词,从多个角度建立“雷达领域术语词典”:(1)雷达领域专业术语集合:与雷达系统、配置项、软件等相关的专业术语;(2)雷达领域停用词集合:在公共停用词列表的基础上,去掉在雷达测试领域中与主题无关的词,如调试助手、软件、人员、数据等;(3)雷达领域同义词集合:雷达专业术语的同义词集合,如“静默区”的同义词为“沉默区”等;(4)典型雷达软件异常缺陷集合:例如目标丢失、航迹点溢出、目标批号不同步等;(5)雷达软件需求特征集合:例如扇区划分、航迹、回波接收任务、主被动切换等。
基于雷达领域术语词典和逆向最大匹配算法的软件缺陷文本分词方法如图3所示图3 软件缺陷文本分词方法流程图2.2 雷达软件缺陷数据主题获取借助LDA模型对语料库(即软件缺陷数据库)D中的任意文档(即软件缺陷数据)d建模,生成主题概率分布:(1)得到联合概率公式:针对式(1)和式(2)中的变量说明如下:假设雷达缺陷数据库有D个缺陷数据集合,总字数为Nd、wd,n,n表示d数据中的第n个字缺陷数据由k个主题组成,则每个主题下的主题词概率分布фk服从以β为参数的狄利克雷分布;θd是文档主题分布,每个缺陷数据对应不同的主题分布,服从狄利克雷分布,以α为参数;Zd,n表示缺陷数据d中主题和Key之间的指定分布,服从多项式分布,以θz为参数根据式(1)、式(2)以及相应变量,基于LDA模型的雷达软件缺陷的获取过程描述如下[4]:(1)对于每个缺陷数据d∈D,根据θd~Dir(α)(即θd服从狄利克雷分布,以α为参数),得到多项式分布参数θd;(2)对于每个主题z∈k,根据θd~Dir(α),得到多项式分布参数θd;(3)对于缺陷数据d中的第i个字Wd,i:·根据多项式分布Zd,i~Mult(θd),得到缺陷主题Zd,i;·根据多项式分布Wd,i~Mult(θz),得到缺陷KeyWd,i。
2.3 基于融合雷达软件需求特征的改进LDA主题模型构建传统的LDA模型没有考虑领域上下文中的Key权重信息,且主题分配偏向高频Key所属的主题在许多情况下,具有强大领域背景的重要术语,如雷达软件需求,可能不会经常出现,因此很难成为主题关键字的输出通过构建基于融合雷达软件需求特征的改进LDA主题模型,本文提升了描述雷达软件需求Key的权重和文本长度,具体实现如下:步骤1:提升Key的词频权重针对原始缺陷数据集D={d1,d2,…,dn}中的分词结果,查找描述雷达软件需求的KeyV={v1,v2,…,vs}(V∈D),例如功能需求、性能参数、接口名称、接口类型、工作状态等,同时提升这些Key的词频权重步骤2:扩充软件缺陷数据集针对雷达软件需求KeyV,为其中的每个Keyvi,i=1~s匹配相关的需求信息,例如针对某需求vi,可将其功能需求、性能参数、接口名称、接口类型、工作状态等文本信息自动添加到原始缺陷数据集中,形成扩充数据集V′={v1,v2,…,vs,vs+1,vs+2,…,VS},最终扩充软件缺陷数据集D′=D∪V′ (软件缺陷数据集的长度为S+n)步骤3:循环迭代计算主题分布和主题Key分布对经过扩充的雷达软件缺陷数据集D′,构造概率向量模型:(θ1×(φ11,…,φ1,S+n),…,θz×(φz1,…,φz,S+n),θn×(φS1,…,φS,S+n))(3)因此,构造的概率向量模型为n×S维。
这种扩充后的软件缺陷数据集合既保留了LDA主题模型降维降噪的效果,也融合了雷达软件需求特征,具有更好的语义可解释性[5]为了获取上述模型中的Key概率分布,须估算隐含参数θ与φ本文借助Gibbs抽样方法,结合扩充后的软件缺陷数据集合,获得θ与φ的估计值θ与φ的估算过程可以看作软件缺陷数据文本生成的逆过程,即在给定软件缺陷数据集的情况下,通过参数估计得到隐含参数的估计值Gibbs抽样在于确定每个Key的主题,隐含主题参数可以通过统计主题频数来获得假定在排除当前Key主题分配的情况下,根据其他词的主题分配估计当前词分配各个主题的概率[6],公式如下:(4)假定每个Key的主题被确定,则可以按照下式估算θ与φ:(5)(6)式中,θm,k为缺陷数据m中主题k的概率;φk,t为主题k中Keyt的概率循环迭代计算软件缺陷数据m的主题分布θ以及主题Key分布φ2.4 基于改进LDA主题模型的雷达软件缺陷数据主题识别利用雷达领域术语词典的软件缺陷文本分词算法,并借助雷达领域术语词典,提取文本中的单词对雷达软件缺陷数据集D中的每项软件缺陷数据di,i=1~N进行预处理,获得N个软件缺陷数据的文本分词向量集合Ds=ds1,ds2,…,dsN;然后根据2.3节确定隐含主题的个数k(k值可以预先设置,k值越大,实验产生的结果信息越多,主题就越发散;k值越小,主题越收敛),方法如图4所示。
图4 确定k值方法流程结合雷达软件测试领域应用场景,根据雷达软件项目中功能数量、性能数量、接口数量等需求信息和测试类型个数等,初步确定预期隐含主题个数k,通过多次实验调参,并根据专家经验采用最优密度模型等方法,设置较为合理的k值由于各型号雷达软件具有相似性,可根据各型号雷达软件提前确定k值将软件缺陷数据的文本分词向量集合Ds=ds1,ds2,…,dsN以及预期的隐含主题个数k,代入融合雷达软件需求特征的改进LDA主题模型中进行模拟训练[7],得到主题模型个数k,记为DM=dM1,dM2,…,dMK每个主题模型DMj,j=1~k都由s个Key组成,即Key向量集合为DMj={dmj1,…,dmjk},dmjk∈Ds2.5 基于主题相似度因子的雷达软件缺陷数据分类算法在所生成的雷达软件缺陷数据的k个主题模型基础上,借助Gibbs抽样方法,采用JS散度,计算每项软件缺陷数据文本分词向量dsi,与每个主题模型DMj之间的主题相似度因子Gibbs抽样方法可以估算软件缺陷数据集D中任意缺陷数据dsi的主题概率分布向量,采用JS散度和KL散度计算软件缺陷数据的主题相似度[8]因此,得到面向雷达软件缺陷数据与主题模型的相似度因子LS的计算式为(7)式中,DKL为KL散度,且(8)针对每项缺陷数据dsi,分别计算其与每个主题模型DMj的相似度因子LS,若LS的取值超出阈值,则可判定该项缺陷数据dsi大概率属于该主题模型DMj,即缺陷数据dsi的从属主题模型。
重复上述相似度因子计算和分析过程,对每项缺陷数据dsi都能找到相应的从属主题模型DMj,也可以称为缺陷数据dsi从属与主题模型DMj最后,若m,m≤k个主题模型下有属于自己的缺陷数据集,雷达软件缺陷数据分类完成,即将雷达软件缺陷数据D分为m类,对应m个主题模型整个流程如图5所示图5 基于主题相似因子的软件缺陷分类算法流程3 实验及结果分析3.1 实验评价方法本实验选用某型雷达显控软件的90项测试问题报告单,预先按照各类测试问题报告单所属功能,人工将其分为9类,形成软件缺陷标准分类集合,如图6所示图6 软件缺陷标准分类集合流程图对比选用的缺陷数据分类算法包括:传统LDA主题模型(记为LDA)、本文提出的融合雷达软件需求特征的改进LDA主题模型(记为I-LDA)以及主流的支持向量机的文本分类算法(记为SVM)以下3个主要指标用于评价雷达软件缺陷数据分类算法的性能:(1)分类精确率P=(算法准确实现的软件缺陷分类数)/(算法实现的所有软件缺陷分类数)*100%;(2)分类召回率R=(算法准确实现的软件缺陷分类数)/(缺陷数据库中实际的软件缺陷分类数)*100%;(3)综合指标F1=2PR/(P+R)。
当实际评估一个分类算法的性能时,应同时考虑P和R,但同时要比较两个数值,很难做到一目了然作为P和R的调和平均,综合指标F1值可以对二者进行综合评价,最终利用F1值并结合P值和R值对分类结果进行效果评估[9]3.2 实验内容及结果分析采用Python语言在Win7操作系统下实现改进LDA主题模型针对LDA主题模型的主要参数设置如下:采用Gibbs抽样方法进行参数估计,雷达软件缺陷数据的训练集和测试集比例设置为5:1,文档主题概率分布参数α为0.1,主题Key概率分布参数β设置为0.01,每个主题下的Key个数设置为101)步骤1:设置改进LDA主题模型的预期主题个数K在测试问题标准分类集合中,已人工将其分为9类,所以设置LDA和I-LDA两个主题模型的预期主题个数K为92)步骤2:雷达软件缺陷数据文本分词借助本文提出的“基于雷达领域术语词典的缺陷文本分词”算法,对90项测试问题报告单的缺陷数据进行分词3)步骤3:基于3种模型算法训练的分类过程将LDA、I-LDA和SVM等3种模型分类算法,对90项测试问题报告单的缺陷数据分词集合进行模拟训练,形成各自对应的分类结果以I-LDA模型算法为例,其软件缺陷数据的分类结果如下:在90项缺陷数据中有6项数据(如表1所示,原始数据文本较长,做了一定简化)与“初始化”功能相关。