余肖生,宋 錦,任明霞,陳 鵬
(三峽大學(xué) 計(jì)算機(jī)與信息學(xué)院,湖北 宜昌 443002)
案例推理是指從案例庫(kù)中檢索與新案例相似的案例,然后重用相似案例的方法,若不能匹配則將新案例修正并保存到案例庫(kù)中。一般采用四步驟,即:案例表示,案例檢索,案例重用,案例修正和保存[1]。其中最關(guān)鍵的部分是負(fù)責(zé)檢索提取的案例檢索階段、歸納推理新案例分類的案例重用階段。
案例推理算法近年來(lái)已在醫(yī)療、法律、金融、工業(yè)等領(lǐng)域都有應(yīng)用。它是一種比較重要的推理方法,該方法模擬了人類的思維方式,它的一般優(yōu)點(diǎn)是:案例表示簡(jiǎn)單,不需要人工設(shè)計(jì)復(fù)雜的規(guī)則;求解過(guò)程方便,不需要根據(jù)規(guī)則推理;求解的結(jié)果方便用戶接受。
在案例推理領(lǐng)域,案例之間相似度的衡量非常關(guān)鍵。其通常采用距離度量和偽度量等。在距離度量方面,有些學(xué)者采用歐氏距離、曼哈頓距離、改進(jìn)的歐氏距離等度量案例之間的相似度,但是這需要案例的各個(gè)特征屬性之間相互獨(dú)立。另一些學(xué)者則引入差異空間的概念,提出差異關(guān)系和案例推理相結(jié)合的方法,通過(guò)差異指數(shù)集成完成案例之間的相似性度量[2-5]。但這樣預(yù)先設(shè)定的度量會(huì)導(dǎo)致相似的案例并不能總是反映在預(yù)設(shè)計(jì)的度量空間上。在偽度量方面,有學(xué)者研究了案例推理中的度量空間[6],另有學(xué)者提出了在相似性度量時(shí)使用偽度量空間[7],將其與案例推理領(lǐng)域常用的歐氏距離作比較,并通過(guò)實(shí)驗(yàn)驗(yàn)證了偽度量應(yīng)用于相似性時(shí)在穩(wěn)定性和魯棒性方面優(yōu)于其他算法。基于偽度量的案例推理算法在處理工業(yè)上的故障分類也取得了較好的效果[8-9],但是該算法需要較長(zhǎng)的訓(xùn)練時(shí)間。該文提出的算法在案例檢索階段采用偽度量作為度量函數(shù),在案例重用階段采用新的公式判斷目標(biāo)案例的分類,取代以往的聚類做法,與BP神經(jīng)網(wǎng)絡(luò)、案例推理、SVM等算法相比,在測(cè)試數(shù)據(jù)上平均提高準(zhǔn)確率2%。與文獻(xiàn)[9]基于偽度量的案例推理算法對(duì)比節(jié)省了聚類需要大量預(yù)訓(xùn)練數(shù)據(jù)的時(shí)間,并提升了案例推理算法在不平衡數(shù)據(jù)上的表現(xiàn)。
案例推理算法的關(guān)鍵是盡可能地檢索出與目標(biāo)案例相近的案例,所以度量案例之間的相似度非常關(guān)鍵[10],而衡量?jī)蓚€(gè)案例之間的相似度一般采用歐氏距離作為相似度測(cè)量方法[11],但是這樣可能會(huì)將每個(gè)屬性特征的作用平均化,很容易帶來(lái)“距離陷阱”的問(wèn)題,即距離數(shù)值最接近的案例卻并不是最相似的,所以需要采用一些新的方法來(lái)解決這個(gè)問(wèn)題。其他的相似度度量方法還有余弦相似度、皮爾森相關(guān)系數(shù)等方法[12]。
采用偽度量的方法是直接設(shè)定案例之間的距離關(guān)系,再由神經(jīng)網(wǎng)絡(luò)擬合偽度量空間,作為相似度檢索的依據(jù)。根據(jù)案例數(shù)據(jù)集構(gòu)建具體的度量空間,避免了歐氏距離等需要分配各特征屬性分配權(quán)重和“距離陷阱問(wèn)題”。
所謂案例重用即將舊案例中解決問(wèn)題的方法應(yīng)用于新案例。案例重用階段同時(shí)優(yōu)化度量設(shè)計(jì),如:采用基于二進(jìn)制灰狼算法確定分類[13];基于遺傳算法和粒子群優(yōu)化算法,并根據(jù)設(shè)置的權(quán)值計(jì)算相似度重用分類[14];在以往基于偽度量的案例算法中,采用基于聚類的重用方法聚類并輸出分類。文獻(xiàn)[9]偽度量的案例推理算法中,在案例重用階段采用聚類方法。但是聚類需要預(yù)先匹配大量數(shù)據(jù),需要進(jìn)一步研究?jī)?yōu)化。
在案例推理算法發(fā)展過(guò)程中,不斷有研究嘗試改進(jìn)案例檢索和重用階段。文獻(xiàn)[9]的研究認(rèn)為:案例推理過(guò)程中,度量難以設(shè)計(jì),權(quán)重難以分配,所以嘗試使用神經(jīng)網(wǎng)絡(luò)來(lái)擬合案例之間的度量空間。該算法設(shè)計(jì)首先從案例庫(kù)中選取大量案例,構(gòu)建一個(gè)具有案例和度量關(guān)系的匹配池,然后使用神經(jīng)網(wǎng)絡(luò)模型學(xué)習(xí)擬合這個(gè)匹配池的度量空間,并輸出目標(biāo)案例與案例庫(kù)案例的度量距離,最后通過(guò)聚類方法得出目標(biāo)案例的最終分類。
該研究主要是從設(shè)計(jì)上引入了擬合度量空間的思路,取得了一定程度的優(yōu)化效果,但在案例匹配的基礎(chǔ)上仍采用聚類算法,導(dǎo)致了需要重復(fù)匹配數(shù)據(jù)問(wèn)題,仍有優(yōu)化的空間。
為進(jìn)一步提升算法準(zhǔn)確率,解決重復(fù)匹配數(shù)據(jù)等問(wèn)題,該文采用新的方法取代案例重用階段的聚類方法。設(shè)計(jì)提出新的案例推理算法(簡(jiǎn)稱LPM-CBR-K),如圖1所示。首先從案例庫(kù)中將數(shù)據(jù)劃分為訓(xùn)練集和測(cè)試集,在案例庫(kù)測(cè)試集內(nèi)按偽度量關(guān)系構(gòu)建匹配池,采用BP神經(jīng)網(wǎng)絡(luò)擬合案例之間的度量關(guān)系,案例重用階段依據(jù)公式根據(jù)上一階段的預(yù)測(cè)關(guān)系輸出目標(biāo)案例的最終分類。
圖1 算法流程
具體步驟如下:
(1)將歷史案例庫(kù)中的數(shù)據(jù)表達(dá)為二元組的形式:
Ck=(Xk;Yk),k=1,2,…,p
(1)
其中,p是案例總數(shù),Xk是第k個(gè)案例的描述,Yk是第k個(gè)案例的所屬分類,其中Xk的描述可表示為:
Xk=(x1k,x2k,…,xik,…,xnk)
(2)
其中,xik為第k個(gè)案例第i個(gè)屬性的值,n為案例庫(kù)的屬性值數(shù)量。
(2)數(shù)據(jù)劃分:將數(shù)據(jù)依據(jù)比例劃分,比如10%作為測(cè)試集,90%作為訓(xùn)練集。在數(shù)據(jù)預(yù)處理階段,即依據(jù)案例構(gòu)建的匹配池?cái)?shù)據(jù)輸入到神經(jīng)網(wǎng)絡(luò)前,該文選擇了數(shù)據(jù)標(biāo)準(zhǔn)化的方法。標(biāo)準(zhǔn)化的方法適合將數(shù)據(jù)處理為無(wú)量綱的形式,在使用距離度量的算法中經(jīng)常被使用,即
(3)
LPM-CBR-K算法則首先設(shè)置一個(gè)度量空間[15-16],即偽度量。對(duì)于集合X中任意元素x,y,若實(shí)值函數(shù){d:(X,X)→R}符合以下三個(gè)條件,稱它為一個(gè)偽度量。
(1)d(x,x)=0;
(2)d(x,y)=d(y,x);
(3)d(x,z)≤d(x,y)+d(y,z)。
它的特點(diǎn)是允許相異的元素之間的度量d(x,y)=0。即在偽度量空間中,雖然兩個(gè)案例之間的距離為0,并非同一個(gè)案例,但是這意味著同屬一類,所以在后面的設(shè)計(jì)中,筆者將同類案例之間的度量距離設(shè)置為0,異類案例之間的度量距離設(shè)置為1。
定理1:給定集合R和分類案例{[aj],j=1,2,…,n},有
(4)
則函數(shù)d為集合R上的一個(gè)偽度量。
根據(jù)分類,同類案例距離為0,異類案例距離為1,構(gòu)建一個(gè)基于案例庫(kù)的匹配池。
例如:構(gòu)建
F(k)={X,Y;d(X,Y)}
(5)
其中,F(xiàn)(k)為兩個(gè)數(shù)據(jù)之間的度量距離,X,Y為兩個(gè)案例,d(X,Y)為X和Y的度量關(guān)系,即當(dāng)X和Y的分類相同時(shí)d(X,Y)為0,否則為1。通過(guò)此方法對(duì)案例庫(kù)中的數(shù)據(jù)逐條構(gòu)建成匹配池。
基于案例庫(kù)的匹配池建成后,基于案例的偽度量空間同時(shí)被建立。通過(guò)神經(jīng)網(wǎng)絡(luò)等技術(shù)去擬合案例的偽度量函數(shù)f,訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò)就是一個(gè)可以輸出兩個(gè)案例之間偽度量距離的函數(shù),對(duì)新輸入的案例就可以根據(jù)函數(shù)求得其與任一案例之間的相似度[17]。
在理論上,神經(jīng)網(wǎng)絡(luò)等技術(shù)可以擬合任意函數(shù),如BP神經(jīng)網(wǎng)絡(luò),通過(guò)對(duì)x和f(x)學(xué)習(xí),完成訓(xùn)練之后,對(duì)于任意輸入x,神經(jīng)網(wǎng)絡(luò)都能輸出f(x),或接近f(x)的預(yù)測(cè)值。同樣,在設(shè)置完偽度量空間并通過(guò)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練之后,對(duì)新輸入的目標(biāo)數(shù)據(jù)也能近似地輸出其與案例庫(kù)案例之間的度量距離,即預(yù)測(cè)新輸入案例的分類情況。
由于神經(jīng)網(wǎng)絡(luò)的特點(diǎn),神經(jīng)網(wǎng)絡(luò)在預(yù)測(cè)輸出已知案例和目標(biāo)案例之間的距離時(shí),一般并不會(huì)直接輸出0或者1,而是由激活函數(shù)決定輸出的值。如Sigmod函數(shù)將輸出約束到區(qū)間[0,1]。
文獻(xiàn)[9]的LPM-CBR算法是對(duì)神經(jīng)網(wǎng)絡(luò)輸出的分類,先定值化為0或1,再進(jìn)行聚類操作,根據(jù)聚類的結(jié)果預(yù)測(cè)分類,而LPM-CBR-K算法在這一步,并不立即根據(jù)閾值得出目標(biāo)案例和案例庫(kù)中每個(gè)案例的具體確定判別,過(guò)早的確定值會(huì)帶來(lái)信息損失,而是將求得的關(guān)系值加入后續(xù)的運(yùn)算中。
在文本處理等領(lǐng)域,除去正常的判斷邏輯之外,利用否定詞或否定關(guān)系判斷也是常用的方法。尤其在情感分析、評(píng)論挖掘等領(lǐng)域,鑒別否定詞是非常關(guān)鍵的。類似的,在案例推理領(lǐng)域判斷新案例X的分類時(shí),既可以通過(guò)判斷與案例X最相似的案例集合,由這個(gè)集合推斷出案例X的分類,同樣的,也可以計(jì)算與案例X最不相似的案例集合,同樣由這個(gè)集合也能推斷出案例X最不可能的分類,如果只存在二元分類,則此時(shí)得出案例X的最不可能分類,也就得案例X最可能的分類。
類似的,計(jì)算案例最相似的或最不相似的案例都能得出新案例的分類,所以該文提出一個(gè)公式,綜合最相似和最不相似的案例統(tǒng)一考量。已知x1,x2,…,xi,…,xn的分類為0或1,xi為任意一個(gè)案例,Sim(i)為xi和目標(biāo)案例xp之間的度量距離預(yù)測(cè)。則對(duì)于目標(biāo)案例xp遍歷案例x1至xn,分別計(jì)算與每個(gè)案例的相似度Sim(i),根據(jù)既定公式計(jì)算匹配數(shù)據(jù)的度量關(guān)系并記錄,k為訓(xùn)練數(shù)據(jù)中距離0和距離1的比例,則目標(biāo)案例的最終分類f輸出為:
(6)
最終以0作為閾值,目標(biāo)案例的最終分類P為:
(7)
通過(guò)公式獲得目標(biāo)案例的分類。算法綜合考慮案例之間的相似度和度量距離的不平衡性,根據(jù)函數(shù)返回的值輸出目標(biāo)案例的最終預(yù)測(cè)分類。這樣就避免了以往的算法中需要大量的預(yù)訓(xùn)練生成數(shù)據(jù)的過(guò)程,該算法只需訓(xùn)練一次訓(xùn)練集即可。同時(shí),傳統(tǒng)的算法中需要先將目標(biāo)案例與案例庫(kù)中案例的相似度Sim(i)取定值,然后做聚類計(jì)算,造成了一定程度的信息損失,而通過(guò)該方法可以得到解決。
對(duì)用戶滿意的案例,將其保存到案例庫(kù)中。若判決結(jié)果并未給出合適的解,則將案例作為新的案例源保存到案例庫(kù)中。
實(shí)驗(yàn)數(shù)據(jù)選擇UCI的8類數(shù)據(jù)集合,如表1所示。其中,Blogger是關(guān)于網(wǎng)絡(luò)日志的分類數(shù)據(jù),Breast Cancer Wisconsin (Diagnostic)是關(guān)于良性惡性乳腺癌判斷的數(shù)據(jù)集,Acute Inflammations (nephritis)是對(duì)泌尿系統(tǒng)的兩種疾病進(jìn)行推定診斷,F(xiàn)ertility是精液質(zhì)量的數(shù)據(jù)集,Ionosphere是關(guān)于雷達(dá)信號(hào)的分類,Parkinsons是關(guān)于帕金森疾病的檢測(cè)數(shù)據(jù),Planning Relax是關(guān)于腦電波的分類數(shù)據(jù),EEG Eye State是關(guān)于眼部狀態(tài)的檢測(cè)數(shù)據(jù),Pima Indians Diabetess是關(guān)于糖尿病的數(shù)據(jù)。
表1 實(shí)驗(yàn)數(shù)據(jù)集
為了驗(yàn)證提出的案例推理算法改進(jìn)的有效性,在每一個(gè)數(shù)據(jù)集上都分別采用傳統(tǒng)的基于KNN的案例推理算法,BP神經(jīng)網(wǎng)絡(luò),LPM-CBR算法與提出的LPM-CBR-K算法進(jìn)行對(duì)比。算法的驗(yàn)證基于Python語(yǔ)言編寫,使用了Sklearn和Keras框架。Sklearn是一個(gè)基于Python語(yǔ)言的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)的集成庫(kù),包含了大部分的傳統(tǒng)機(jī)器學(xué)習(xí)方法,它的功能包括分類、回歸、聚類等,因此實(shí)驗(yàn)的支持向量機(jī)算法和基于近鄰的案例推理算法采用Sklearn框架編寫。Keras是一個(gè)基于Tensorflow和Theano的封裝的框架,具有高度模塊化,容易上手的特點(diǎn),文中算法中神經(jīng)網(wǎng)絡(luò)部分基于Keras框架編寫完成。
在實(shí)驗(yàn)中,選擇90%的數(shù)據(jù)作為訓(xùn)練集,剩余10%作為測(cè)試集,每輪算法運(yùn)行10次,以平均值作為最終值。
實(shí)驗(yàn)中,在SVM的參數(shù)設(shè)定中:C設(shè)置為1,kernel設(shè)置為rbf,gamma設(shè)定為auto。在基于KNN的案例推理中:聚類數(shù)量設(shè)置為5。在BP神經(jīng)網(wǎng)絡(luò)中:層數(shù)設(shè)定為3層,隱藏層節(jié)點(diǎn)設(shè)置為10個(gè),激活函數(shù)選擇sigmod,epochs設(shè)置為1 200,batch_size設(shè)置為128,在LPM-CBR和提出的算法中:90%的數(shù)據(jù)構(gòu)建訓(xùn)練庫(kù),10%的數(shù)據(jù)構(gòu)建待測(cè)試庫(kù)。在訓(xùn)練集中再劃分為訓(xùn)練集和測(cè)試集,分別構(gòu)建一個(gè)訓(xùn)練池和一個(gè)待測(cè)試的測(cè)試池。在神經(jīng)網(wǎng)絡(luò)部分,層數(shù)設(shè)定為3層,隱藏節(jié)點(diǎn)設(shè)置為10個(gè),epochs設(shè)置為1 200,batch_size設(shè)置為128。
3.3.1 算法準(zhǔn)確率
對(duì)實(shí)驗(yàn)的數(shù)據(jù)集依次測(cè)試并記錄實(shí)驗(yàn)結(jié)果,各算法的準(zhǔn)確率如表2所示。
表2 算法準(zhǔn)確率對(duì)比
續(xù)表2
從表2可以看出:LPM-CBR-K算法在大部分?jǐn)?shù)據(jù)上的準(zhǔn)確率較好,在IO數(shù)據(jù)集上比其他算法至少高1.81%,在FE數(shù)據(jù)集上比其他數(shù)據(jù)集高1%,在BL數(shù)據(jù)集上比其他算法高3%,在PR數(shù)據(jù)集上比其他算法高1%,即使是在PK、EE和PID數(shù)據(jù)中,該算法也和最高值差距較小。
不難看出,LPM-CBR-K算法在準(zhǔn)確率上有一定提升,在所有的數(shù)據(jù)集上的準(zhǔn)確率平均提升至少2%,因?yàn)長(zhǎng)PM-CBR算法在定值化神經(jīng)網(wǎng)絡(luò)的輸出和聚類階段會(huì)損失一定的信息。公式(6)、(7)步驟減少了先取值再聚類的操作,沒(méi)有在運(yùn)算中間將神經(jīng)網(wǎng)絡(luò)的輸出數(shù)據(jù)分類,因此減少了信息的損失,直至最終的輸出預(yù)測(cè)步驟才定值化信息,因此提升了算法的準(zhǔn)確率。
3.3.2 算法運(yùn)行時(shí)間
在對(duì)比實(shí)驗(yàn)中,依次運(yùn)行參照對(duì)比的LPM-CBR算法和提出的LPM-CBR-K算法,除去數(shù)據(jù)較多的PID和BWC數(shù)據(jù)(LPM-CBR算法在一般條件下會(huì)少量配對(duì),在PID和BWC等數(shù)據(jù)較多情況下需要設(shè)置合適匹配次數(shù)),數(shù)據(jù)的運(yùn)行時(shí)間對(duì)比如圖2所示。
圖2 實(shí)驗(yàn)數(shù)據(jù)的運(yùn)行時(shí)間
由圖2知,在DG、BL等數(shù)據(jù)集上,由于數(shù)據(jù)較少,以往的算法需要抽樣提升準(zhǔn)確率,而提出的算法極大地節(jié)省了時(shí)間。在IO、FE等數(shù)據(jù)較多的數(shù)據(jù)集上,該算法在不損失信息的情況下,也節(jié)省了一定的時(shí)間,所以LPM-CBR-K算法顯著降低了運(yùn)行時(shí)間。在數(shù)據(jù)不足的情況下或者數(shù)據(jù)不均衡的條件下,LPM-CBR算法需要隨機(jī)選取1 000~20 000條數(shù)據(jù)生成匹配池。而LPM-CBR-K算法步驟則只需要一次構(gòu)建,所以省卻了大量的抽樣的時(shí)間,而LPM-CBR算法即使是耗時(shí)最小的1 000對(duì)數(shù)據(jù)訓(xùn)練所花的時(shí)間也遠(yuǎn)比提出的算法花費(fèi)的時(shí)間多。改進(jìn)的案例檢索流程上設(shè)計(jì)為L(zhǎng)PM-CBR-K算法運(yùn)行節(jié)省了時(shí)間。
3.3.3 不均衡數(shù)據(jù)
LPM-CBR-K算法在準(zhǔn)確率上表現(xiàn)較優(yōu),但是在正負(fù)樣本不平衡的二分類數(shù)據(jù)中,準(zhǔn)確率單一指標(biāo)參考作用并不大,還需要綜合考慮查全率和查準(zhǔn)率。一般有較多的衡量指標(biāo),實(shí)驗(yàn)采用F1指標(biāo)衡量算法在不均衡數(shù)據(jù)上的性能,F(xiàn)1是對(duì)精度和召回率的調(diào)和平均。以數(shù)據(jù)較多的PID數(shù)據(jù)為例,將PID的數(shù)據(jù)數(shù)量設(shè)置為300,分別用不同比例的正負(fù)樣本測(cè)試。圖3展示了在PID數(shù)據(jù)正負(fù)數(shù)據(jù)樣本比例從1∶4到4∶1時(shí)的案例推理的判決結(jié)果。
圖3 不均衡數(shù)據(jù)對(duì)比
可以看出在不同的正負(fù)樣本案例測(cè)試時(shí),LPM-CBR-K算法的準(zhǔn)確率在以往算法之上,正負(fù)樣本數(shù)量差距較大時(shí)表現(xiàn)較以往算法更好。正負(fù)樣本均衡時(shí),LPM-CBR-K的算法F1值略高于傳統(tǒng)算法,在正負(fù)案例數(shù)量差距較大時(shí)仍表現(xiàn)較好。綜合起來(lái)LPM-CBR-K算法的準(zhǔn)確率和F1值都要高于文獻(xiàn)[9]的算法,提出的算法在數(shù)據(jù)不均衡的情況下效果更好。
案例推理算法的原理是利用相似的案例判決,因此數(shù)據(jù)中正負(fù)案例的數(shù)量會(huì)影響判決的結(jié)果。為了解決數(shù)據(jù)不平衡的問(wèn)題,一種方法是在數(shù)據(jù)層面進(jìn)行改進(jìn),即通過(guò)少量采樣過(guò)采樣或者大量樣本欠采樣,文獻(xiàn)[9]的算法采用了混合采樣的方法,自然帶來(lái)了數(shù)據(jù)規(guī)模的增大,不僅導(dǎo)致神經(jīng)訓(xùn)練訓(xùn)練的時(shí)間增長(zhǎng),也可能導(dǎo)致模型過(guò)擬合,泛化能力下降。另一種方法則是直接在算法層面進(jìn)行改進(jìn),比如隨機(jī)森林或集成學(xué)習(xí)的方法,通過(guò)抽樣逐步擬合殘差或加權(quán)方式解決問(wèn)題。提出的算法就嘗試了在算法層面進(jìn)行改進(jìn),放棄因?yàn)榫垲惒糠中桦S機(jī)抽取數(shù)據(jù)導(dǎo)致的部分信息的損失,通過(guò)提出神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)匹配和處理判決階段的公式(6)和公式(7)來(lái)解決數(shù)據(jù)不平衡的問(wèn)題。
案例推理算法作為機(jī)器學(xué)習(xí)領(lǐng)域常見(jiàn)的算法,不斷地有針對(duì)其案例檢索和案例重用階段的研究和優(yōu)化。提出的LPM-CBR-K算法,在案例檢索階段選取了偽度量的方法,在設(shè)計(jì)上選擇了利用神經(jīng)網(wǎng)絡(luò)去擬合案例之間偽度量空間,取代以往的預(yù)先設(shè)值度量方法;在案例重用階段,提出公式(6)和公式(7)取代以往的重用階段的聚類方法,解決算法在檢索步驟匹配大量數(shù)據(jù)的耗時(shí)問(wèn)題,并有效地避免了信息的損失,減少了隨機(jī)抽取數(shù)據(jù)的步驟,并嘗試解決數(shù)據(jù)不平衡時(shí)的解決方法。最后通過(guò)實(shí)驗(yàn)證明了LPM-CBR-K算法在精度上的提高,在時(shí)間上的優(yōu)化,在一定程度上推進(jìn)了案例推理算法在不平衡樣本上的表現(xiàn)。