賈明華 徐月 王曉東
摘要:蛻變測(cè)試方法是一種科學(xué)有效的軟件測(cè)試方法,數(shù)據(jù)集的生成是人們一直以來的研究重點(diǎn),本文提出了一種基于蛻變關(guān)系的貝葉斯分類器測(cè)試數(shù)據(jù)集生成器。該工具首先將數(shù)據(jù)集作為輸入;其次,依次按照不同的蛻變關(guān)系對(duì)數(shù)據(jù)集進(jìn)行蛻變;最后,輸出各個(gè)衍生的數(shù)據(jù)集。該工具實(shí)現(xiàn)了針對(duì)貝葉斯分類器的測(cè)試數(shù)據(jù)集生成器,提高了貝葉斯分類器測(cè)試數(shù)據(jù)的生成效率,并解決了數(shù)據(jù)集數(shù)量少且質(zhì)量不高問題。
關(guān)鍵詞:蛻變關(guān)系;貝葉斯分類器;數(shù)據(jù)集生成器
中圖分類號(hào):TP18 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2019)05-0166-02
0 前言
隨著智能化軟件的普遍應(yīng)用,機(jī)器學(xué)習(xí)應(yīng)用程度越來越廣。機(jī)器學(xué)習(xí)是人工智能技術(shù)的重要研究領(lǐng)域,機(jī)器學(xué)習(xí)算法為模式識(shí)別、生物信息學(xué)、計(jì)算機(jī)語言學(xué)等許多領(lǐng)域提供了核心功能。構(gòu)建準(zhǔn)確度高的分類、預(yù)測(cè)或聚類機(jī)器學(xué)習(xí)模型是機(jī)器學(xué)習(xí)研究的核心目標(biāo)之一。隨著機(jī)器學(xué)習(xí)算法應(yīng)用在金融、自動(dòng)駕駛、工業(yè)控制等領(lǐng)域越來越普遍的應(yīng)用,基于機(jī)器學(xué)習(xí)的程序模塊已成為軟件系統(tǒng)的核心組件,這對(duì)機(jī)器學(xué)習(xí)程序的安全性和可靠性提出了更高的要求,必須測(cè)試和驗(yàn)證基于機(jī)器學(xué)習(xí)的應(yīng)用程序,以保證其正確性。而貝葉斯分類算法是一類常見的機(jī)器學(xué)習(xí)方法,對(duì)貝葉斯分類器的訓(xùn)練測(cè)試需要大量的數(shù)據(jù)集,但是數(shù)據(jù)集常常數(shù)據(jù)量少并且不符合程序的要求。
貝葉斯分類算法是統(tǒng)計(jì)學(xué)的一種分類方法,它是一類利用概率統(tǒng)計(jì)知識(shí)進(jìn)行分類的算法。在許多場(chǎng)合,樸素貝葉斯(Nave Bayes,NB)分類算法可以與決策樹和神經(jīng)網(wǎng)絡(luò)分類算法相媲美,該算法能運(yùn)用到大型數(shù)據(jù)庫中,而且方法簡(jiǎn)單、分類準(zhǔn)確率高、速度快。首先是貝葉斯網(wǎng)絡(luò)分類器的學(xué)習(xí),即從樣本數(shù)據(jù)中構(gòu)造分類器,包括結(jié)構(gòu)學(xué)習(xí)和CPT學(xué)習(xí)。其次是貝葉斯網(wǎng)絡(luò)分類器的推理,即計(jì)算類結(jié)點(diǎn)的條件概率,對(duì)分類數(shù)據(jù)進(jìn)行分類。[1]其中Naive Bayes、TAN、BAN、GBN就是其中較典型、研究較深入的貝葉斯分類器。隨著貝葉斯分類器應(yīng)用的逐漸增多,對(duì)貝葉斯分類器的訓(xùn)練測(cè)試需要不斷加強(qiáng),這就需要更加優(yōu)質(zhì)的數(shù)據(jù)集來進(jìn)行訓(xùn)練測(cè)試,目前大部分?jǐn)?shù)據(jù)集都存在數(shù)據(jù)量少,并且不符合程序的要求質(zhì)量不高的問題。
1 工具簡(jiǎn)介
針對(duì)上述提到的一些問題,本文提出了基于蛻變關(guān)系的貝葉斯分類器測(cè)試數(shù)據(jù)集生成器。該工具基于蛻變關(guān)系,能夠解決數(shù)據(jù)集數(shù)據(jù)量少,并且不符合程序的要求質(zhì)量不高的問題。生成器工具具體包括輸入數(shù)據(jù)集、蛻變操作、輸出衍生數(shù)據(jù)集三大功能。用戶通過這個(gè)數(shù)據(jù)集生成器可以將原始數(shù)據(jù)集輸入,點(diǎn)擊不同的蛻變關(guān)系按鈕進(jìn)行不同的蛻變操作,最后輸出對(duì)應(yīng)的衍生數(shù)據(jù)集。
2 設(shè)計(jì)流程
該數(shù)據(jù)集生成器整體分為三個(gè)部分,分別是輸入數(shù)據(jù)集、蛻變操作、輸出衍生數(shù)據(jù)集。其中,蛻變操作包括蛻變關(guān)系1、蛻變關(guān)系2、……、蛻變關(guān)系n,設(shè)計(jì)框架如圖1所示。
輸入數(shù)據(jù)集是將貝葉斯分類器測(cè)試數(shù)據(jù)集作為文件上傳至數(shù)據(jù)集生成器工具即可。蛻變操作包括5種蛻變關(guān)系,如表1所示。[2]點(diǎn)擊不同的蛻變操作按鈕,進(jìn)行相應(yīng)的數(shù)據(jù)集蛻變操作。MR1是將數(shù)據(jù)集中第i行和第j行數(shù)據(jù)記錄的順序進(jìn)行交換;MR2是在數(shù)據(jù)集中增加不提供信息的數(shù)據(jù)特征列;MR3是在將數(shù)據(jù)集中第p列和第q列數(shù)據(jù)特征的順序交換;MR4是將數(shù)據(jù)集中第p列數(shù)據(jù)特征復(fù)制變成新的一列;MR5是將數(shù)據(jù)集標(biāo)簽列第r類和第s類的取值互換。輸出衍生數(shù)據(jù)集是將生成的數(shù)據(jù)集在工具中進(jìn)行展示。
貝葉斯分類器測(cè)試數(shù)據(jù)集生成器界面設(shè)計(jì)如圖2所示。用戶點(diǎn)擊上傳數(shù)據(jù),選擇數(shù)據(jù)集文件即可。選擇相應(yīng)的蛻變關(guān)系,點(diǎn)擊數(shù)據(jù)生成,即可完成對(duì)應(yīng)的蛻變關(guān)系的數(shù)據(jù)蛻變操作。在右側(cè)列表展示了每一種蛻變關(guān)系對(duì)應(yīng)的操作內(nèi)容。用戶可以點(diǎn)擊查看結(jié)果彈出衍生數(shù)據(jù)集所生產(chǎn)的數(shù)據(jù)文件所在位置彈框。
3 實(shí)現(xiàn)方案
3.1 蛻變關(guān)系1
MR1是調(diào)整數(shù)據(jù)集中第i行和第j行數(shù)據(jù)記錄的順序。通過row_content=file.readline()將數(shù)據(jù)集中的每一行row_content添加一維數(shù)組中,再通過二重循環(huán)進(jìn)行交換任意兩行數(shù)據(jù)記錄,蛻變后的文件命名為mr1_row_i_j.txt,整個(gè)數(shù)據(jù)集經(jīng)過蛻變關(guān)系1生成的衍生數(shù)據(jù)集命名為mr1_data,其中包含所有生成的蛻變后的數(shù)據(jù)集文件。實(shí)驗(yàn)采用隱形眼鏡數(shù)據(jù)集[3],它包含了很多患者眼部狀況的觀察條件以及醫(yī)生推薦的隱形眼鏡類型,隱形眼鏡的類型包括硬材質(zhì)、軟材質(zhì)和不適合佩戴隱形眼鏡。[4]針對(duì)實(shí)驗(yàn)采用的隱形眼鏡數(shù)據(jù)集,由于該數(shù)據(jù)集共有24行數(shù)據(jù)記錄,因此生成的mr1_data中共有258個(gè)衍生數(shù)據(jù)集。
3.2 蛻變關(guān)系2
MR2是增加數(shù)據(jù)集中不提供信息的數(shù)據(jù)特征列。通過split方法將數(shù)據(jù)集進(jìn)行切分,循環(huán)對(duì)每個(gè)列間的位置添加無關(guān)列形成新的蛻變集,蛻變后的文件命名為mr2_col_i.txt,整個(gè)數(shù)據(jù)集經(jīng)過蛻變關(guān)系2生成的衍生數(shù)據(jù)集命名為mr2_data。對(duì)于隱形眼鏡數(shù)據(jù)集,由于該數(shù)據(jù)集有4列數(shù)據(jù)特征列,因此生成的mr2_data中共有5n個(gè)衍生數(shù)據(jù)集,n指不提供信息的數(shù)據(jù)特征列的數(shù)量。
3.3 蛻變關(guān)系3
MR3是調(diào)整數(shù)據(jù)集中第p列和第q列數(shù)據(jù)特征的順序。方法仍然是通過split方法切分?jǐn)?shù)據(jù)集,將我們需要調(diào)整的順序定義在順序數(shù)組中,通過循環(huán)進(jìn)行每種順序的重組,形成新的蛻變集,蛻變后的文件命名為mr3_col_p_q.txt,整個(gè)數(shù)據(jù)集經(jīng)過蛻變關(guān)系3生成的衍生數(shù)據(jù)集命名為mr3_data。對(duì)于隱形眼鏡數(shù)據(jù)集,由于該數(shù)據(jù)集有4列數(shù)據(jù)特征列,因此生成的mr3_data中共有6個(gè)衍生數(shù)據(jù)集。
3.4 蛻變關(guān)系4
MR4是將數(shù)據(jù)集中第p列數(shù)據(jù)特征復(fù)制。在切分?jǐn)?shù)據(jù)集之后得到本數(shù)據(jù)集的列數(shù)n,通過循環(huán)將每一列的信息復(fù)制一遍添加到本列之后,得到n個(gè)不同的蛻變集,蛻變后的文件命名為mr4_p_n.txt,整個(gè)數(shù)據(jù)集經(jīng)過蛻變關(guān)系4生成的衍生數(shù)據(jù)集命名為mr4_data。對(duì)于隱形眼鏡數(shù)據(jù)集,由于該數(shù)據(jù)集有4列數(shù)據(jù)特征列,因此生成的mr4_data中共有20個(gè)衍生數(shù)據(jù)集。
3.5 蛻變關(guān)系5
MR5是將數(shù)據(jù)集標(biāo)簽列第r類和第s類的取值互換。對(duì)于數(shù)據(jù)集中的每條數(shù)據(jù)都有它自己的標(biāo)簽值,將不同類型的標(biāo)簽進(jìn)行變換,例如:某數(shù)據(jù)集中的標(biāo)簽有兩種,分別是a和b,那么將a換成b,b換成a,這樣蛻變之后的數(shù)據(jù)集用于測(cè)試測(cè)試的結(jié)果也應(yīng)該是轉(zhuǎn)換之后的結(jié)果,將切分后的數(shù)據(jù)集中的標(biāo)簽列提取出來,如果符合轉(zhuǎn)換關(guān)系,那么對(duì)于這一條數(shù)據(jù)的特征信息不變,標(biāo)簽列轉(zhuǎn)化為相應(yīng)的結(jié)果,在這里需要表格記錄蛻變前后的轉(zhuǎn)換關(guān)系,蛻變后的文件命名為mr5_r_s.txt,整個(gè)數(shù)據(jù)集經(jīng)過蛻變關(guān)系5生成的衍生數(shù)據(jù)集命名為mr5_data。對(duì)于隱形眼鏡數(shù)據(jù)集,由于該數(shù)據(jù)集有3種數(shù)據(jù)標(biāo)簽,因此生成的mr5_data中共有3個(gè)衍生數(shù)據(jù)集。
4 結(jié)語
本文通過對(duì)基于蛻變關(guān)系的貝葉斯分類器測(cè)試數(shù)據(jù)集生成器的研究,實(shí)現(xiàn)了一種對(duì)貝葉斯分類器測(cè)試數(shù)據(jù)集生成的工具。該工具基于蛻變關(guān)系,解決了數(shù)據(jù)集數(shù)據(jù)量少,并且不符合程序的要求質(zhì)量不高的問題。生成的衍生數(shù)據(jù)集用來對(duì)貝葉斯分類器進(jìn)行訓(xùn)練,還可以對(duì)貝葉斯分類器進(jìn)行更加有效的測(cè)試。
參考文獻(xiàn)
[1] 李蕓.基于貝葉斯信念網(wǎng)絡(luò)的數(shù)據(jù)分類挖掘算法[J].計(jì)算機(jī)科學(xué),2006,33(9):157-158.
[2] Xie X , Ho J W K , Murphy C , et al. Testing and validating machine learning classifiers by metamorphic testing[J]. Journal of Systems and Software,2011,84(4):544-558.
[3] Benoit Julien.: UCI machine learning repository.http://archive.ics.uci.edu/ml/machine-learning-databases/lenses/ (2013).Accessed January,2019.
[4] 李銳,等譯.機(jī)器學(xué)習(xí)實(shí)戰(zhàn)[M].人民郵電出版社,2103.