侯慶山,邢進生
(山西師范大學 數學與計算機科學學院,山西 臨汾 041000)
數據挖掘技術的不斷發展和完善,吸引了相關信息產業和大量研究人員的注意。隨著計算機相關技術的不斷成熟和進步,數據量變得越來越龐大,更多的數據可以被利用。利用相關的數據挖掘技術可以將這些數據轉化為更有意義的信息和知識。收集到的信息可以應用到市場調查、生產控制、進化分析和科學探索[1-2]等領域。樣本分類是一種重要的數據挖掘技術,涉及到從現實世界的大型數據庫中提取出有效的知識模式。與有效知識數據挖掘的相關研究是非常重要的,決策過程的復雜程度以及決策結果的好壞往往取決于所用的分類方法是否有效。
由于輸入數據的不精確性、模糊性、類別間邊界的重疊性以及特征定義的不明確性,在對數據樣本進行分類時的任何階段都可能存在不確定性。傳統的樣本分類算法中證據理論是模糊決策的有效工具,在對樣本分類時,往往需要對樣本的特征進行篩選、降維以及為樣本分配權重等處理。這些處理過程往往需要人工的參與,因此傳統的樣本分類算法通常是比較復雜的。首次出現的Dempster-Shafer證據理論[3]被認為是智能系統中推理不確定性信息的有效模型,但當高度沖突的證據被組合起來時,樣本數據的分類結果往往是錯誤的[4-6]。Murph等人[7]提出了一種基于計算所有證據平均值的證據組合方法,但并沒有考慮證據權重對于融合結果的影響,將所有的權重設定為同一值。Han等人[8]提出了一種改進的基于證據距離測量的平均組合方法,每個證據主體的權重都被考慮在內。但其組合規則不能有效地處理高度沖突的證據組合。Deng等人[9]提出了一種新的加權平均證據組合方法,但隨著樣本特征增多,利用不確定性度量來確定證據主體的權重變得困難。
總體上看,數據樣本分類[10-11]就是發現區分數據類型的相關模型算法,以便模型能夠預測具有未知類標簽值的樣本。人工神經網絡[12-14]是一種流行的數據建模工具,可以執行類似于人腦的智能任務。多層感知器反向傳播網絡[15-16]算法是神經網絡領域中進行數據分類的可靠方法之一。徑向基函數神經網絡[17-18]是另一種利用徑向基函數作為激活函數的強大神經網絡模型。此外,針對輸入樣本數據的不確定性,基于經典集合論的模糊集合論[19-21]在處理現實生活中的不確定性方面是非常靈活的。在模糊系統中,特征與不同樣本類別的隸屬度相關聯。
該文提出的算法與傳統的證據理論算法相比,利用神經網絡模型并結合模糊理論對數據集進行有效的分類,避免了人工參與樣本特征分配權重、特征選擇等問題,過程更為簡單,效果更加良好。神經網絡處理數值和定量數據,模糊系統處理符號和定性數據。該算法有效地結合了這兩種方法的優勢,利用基于模糊集理論的方法將模糊系統的類人邏輯推理與神經網絡的學習相結合,樣本分類的算法效率大幅提升。
1.1.1 模糊因素集和模糊因素權重集
模糊因素集被定義為Ω={b1,b2,…,bm},其中bi,i∈[1,m]表示第i個決定分類結果的模糊因素。W={w1,w2,…,wm},其中wi,i∈[1,m]表示第i個影響因素對分類結果的影響程度。
1.1.2 隸屬度函數
模糊決策的結果與隸屬度函數存在緊密的聯系,隸屬度函數定義如下:對于模糊數據集Ω中的任意元素bi,都有一個數F(bi)∈[0,1]與其相對應,當bi在Ω中變動時,F(bi)稱作隸屬度函數。隸屬度的大小表明了輸入樣本屬于該類可能性的大小。
1.2.1 結構組成
前饋神經網絡由多層連續的非線性函數構成,包含輸入層、隱含層、輸出層三部分。結構如圖1所示。

圖1 前饋神經網絡結構
1.2.2 前向傳播
前饋神經網絡可通過式(1)進行傳播。通過逐層的網絡傳遞,由輸出層將最終結果輸出。網絡的傳遞及輸出過程可由式(2)表達。

(1)
其中,fl(·)表示第l層網絡節點的激活函數,W(l)∈Rm(l)×m(l-1)表示第l-1層和第l層之間的權值矩陣,其中m(l)表示第l層的節點個數。b(l)∈Rm(l)表示第l-1層和第l層之間的偏置值。z(l)∈Rm(l)表示第l層網絡節點的輸入值,a(l)∈Rm(l)表示第l層網絡節點的輸出值。
x=a(0)→z(1)→a(1)→z(2)→…→a(L-1)→
z(L)→a(L)
(2)
其中,L表示網絡的層數。
1.2.3 反向傳播
對于輸入樣本(X,y),網絡損失采用交叉熵損失,損失定義如式(3)所示。
(3)

(4)
(5)

通過隨機梯度下降法對網絡參數進行學習和調整,在網絡的迭代訓練過程中,第l層權重和偏置參數的更新可由式(6)、式(7)表達。

(6)

(7)
其中,α表示學習率。
考慮N個輸入樣本,每個輸入樣本包含k個屬性,輸入樣本共屬于M個類別。定義輸入樣本集S={s1,s2,…,sn},樣本屬性集A={a1,a2,…,ak},樣本類別集C={c1,c2,…,cM}。定義的樣本屬性隸屬度函數可由式(8)表達。
(8)
i∈[1,k],j∈[1,n]
式中,參數z決定了隸屬度函數的中心位置,參數e,l控制交界點處的斜率。隸屬度函數的形狀及位置由參數e,l,z決定,通過調控相關參數得到滿足需求的屬性隸屬度函數。輸入樣本某一類別的隸屬度可由式(9)表達。
(9)
j∈[1,n],i∈[1,k],m∈[1,M]
對輸入樣本的類別隸屬度進行歸一化操作,可由式(10)表達。

(10)
(1)求解輸入樣本的隸屬度矩陣。
假定包含N個輸入樣本s以及M個預測類別c,每個樣本包含了k個樣本特征a。


(11)
(2)設置神經網絡激活函數與網絡損失。
在輸入樣本前向傳播的過程中,樣本信息可由式(12)進行表達,將輸入信息z經過網絡節點的激活函數,得到網絡節點的激活值。為簡化計算,神經網絡的激活函數選取ReLU與Swish-B激活函數,由式(13)定義表達。
(12)
式中,W=[w1,w2,…,wn]∈Rd為權重向量,b表示偏置值。

(13)
針對樣本分類問題,神經網絡的損失采用交叉熵損失函數,可由式(14)表達。

(14)
式中,n表示輸入樣本的數量,m表示輸入樣本種類,yij表示第i個樣本屬于分類j的標簽值,取值為0或1。f(xij)表示樣本i被預測為j類別的概率。
(3)網絡參數調節。
將求解好的隸屬度矩陣輸入到神經網絡中,利用反向傳播算法對網絡的參數進行不斷的迭代修正。算法描述如下:
步驟:
①對網絡的權值參數W和b隨機初始化。
②對樣本訓練集Ω中的樣本進行隨機抽取排序。
③從樣本訓練集Ω中依次選取訓練樣本(X(n),y(n))。
④通過前向傳播計算每一層的輸入值與激活函數的值。
⑤通過反向傳播算法調整每一層的誤差值,更新網絡的權值與偏置值。
⑥重復步驟②~⑤直到網絡模型在樣本驗證集上的錯誤趨于穩定。
輸出:權值矩陣W與偏置b。
(4)預測集樣本的預測。
利用訓練好的人工神經網絡對樣本預測集數據進行預測,對網絡性能做出評估。
選取鳶尾花數據集作為算法網絡的實驗數據集,鳶尾花數據集作為統計學習與樣本分類領域的經典數據集,常被用于實驗測試。數據集中記錄了150條數據,分為3類鳶尾花(Iris-Setosa,Iris-Versicolour,Iris-Virginica),每類鳶尾花包含了50條數據。每條數據記錄了鳶尾花的四個特征,即花瓣的長度和寬度,花萼的長度和寬度,通過鳶尾花的特征預測鳶尾花的品種。
(1)讀取鳶尾花數據集的csv文件,鳶尾花數據集中的部分數據如表1所示。每條數據包含了Sepal.Length、Sepal.Width、Petal.Length、Petal.Width四個屬性以及品種類別Species。數據集各類屬性的均值、方差、中位數、最大值和最小值等如表2所示。

表1 數據集部分數據

表2 數據集屬性值數據
(2)繪制3類鳶尾花數據各屬性值與ID之間的關系圖,如圖2所示。

(a)花萼長與ID之間關系

(b)花萼寬與ID之間關系

(c)花瓣長與ID之間關系

(d)花瓣寬與ID之間關系
ID為1~50的為Setosa鳶尾花,51~100的為Versicolour鳶尾花,剩余的為Virginica鳶尾花。通過關系圖可以直觀地分析各類鳶尾花的屬性值分布范圍。
3.3.1 數據處理
在進行相關參數設定之前,首先要對鳶尾花數據集進行一系列的數據操作,對數據集的操作可從以下兩個方面考慮:
(1)基于3.2節的數據分析,分析鳶尾花數據集中是否存在異常點,如果存在,將異樣點刪除,并處理某些樣本屬性的丟失值。丟失的樣本屬性值通常由該屬性基于統計信息的平均值替換。
(2)對數據集進行相關性分析,分析樣本屬性之間是否存在相關性,如果存在,去除相關的冗余屬性。
對處理過的數據進行劃分,將原始數據集劃分為訓練數據集、測試數據集以及驗證數據集三個部分。其中,訓練數據集包含80組鳶尾花數據,驗證數據集包含40組鳶尾花數據,驗證集用于監測過擬合現象以及超參數的調整,測試數據集包含30組鳶尾花數據,用于驗證模型的準確性。
3.3.2 參數設定
根據鳶尾花種類,設定3種不同參數的隸屬度函數,求解樣本基于不同鳶尾花種類的隸屬值。基于鳶尾花數據集的可視化分析,隸屬度函數中心位置參數Z分別設置為:Z1=5,Z2=6,Z3=7,其中Z1表示Setosa隸屬度函數的中心,Z2表示Versicolor隸屬度函數的中心,Z3表示Virginica隸屬度函數的中心。e1=1,e2=e3=2,l1=l2=l3=2。
3.3.3 神經網絡設計
基于對鳶尾花數據集的分析,設計具有單隱含層的神經網絡模型,采用隨機梯度下降法對網絡模型的參數進行學習。神經網絡輸入層中的節點個數等同于隸屬度函數的種類個數。輸出層節點的數量與數據集中存在的類的數量相同。神經網絡的輸入層為數據樣本對各類鳶尾花的隸屬度值,共有3個神經元,輸出層為類別種類,共有3個輸出神經元。對隱含層設置不同個數的神經元,通過實驗選擇最優隱含層神經元個數,以樣本分類準確率為評價指標,實驗結果如表3所示。

表3 神經元數目準確率測試結果
根據實驗結果,最終隱藏層神經元數目設定為4,選取ReLU作為隱含層和輸出層的激活函數,Swish-B作為輸入層和隱含層的激活函數,設置網絡誤差為0.000 1,學習率為0.01,最大迭代次數為100。模型訓練過程的性能變化如圖3所示。

圖3 不同隱層神經元數目下的訓練性能
3.3.4 數據集訓練和預測
在神經網絡的訓練階段,首先將鳶尾花數據集分為訓練集、驗證集、預測集三部分,對其進行模糊化處理。把經模糊化處理后的訓練集應用于提出的模糊神經網絡,訓練網絡以建立模糊神經網絡分類模型。在測試階段,通過模糊化處理后的測試集對模型性能進行評估,根據測試集樣本預測的準確性對模型進行評估。其詳細步驟如下:
Step1:隨機抽取鳶尾花數據集中的80條樣本數據作為訓練集,隨機抽取40條樣本數據作為驗證集,剩余部分數據作預測集。
Step2:利用式(8)~式(10)求解出預測集樣本和驗證集樣本的隸屬度矩陣D1、D2。
Step3:設置網絡誤差、學習率等相關參數,利用訓練集的隸屬度矩陣D1對網絡進行100次的迭代訓練,利用驗證集的隸屬度矩陣D2對神經網絡的超參數進行調整。模型迭代過程中的損失變化如圖4所示。

圖4 模型訓練過程中的迭代損失變化
Step4:利用測試集樣本預測的準確率對模型的性能進行評估。
選取引言部分四種經典的基于證據理論的樣本分類算法,計算傳統算法基于鳶尾花數據集的分類準確率,與文中提出的樣本分類方法進行比較,結果如圖5、表4所示。

表4 準確率比較

圖5 相關算法精確度比較
隨著模糊神經網絡訓練迭代次數的增加,樣本分類的準確性最終穩定到0.98,與基于證據理論的分類算法相比,樣本分類的準確率明顯提升。
由于基于證據理論的分類算法在進行樣本分類時過于復雜,樣本的某些屬性間存在相關性。另外,在復雜數據集上,基于證據理論的樣本分類算法往往不夠理想,隨著樣本屬性的增加,算法過程變得越來越復雜,數據集中樣本的沖突變得明顯。該文提出了一種基于模糊神經網絡的樣本分類算法,并采用鳶尾花數據集對算法進行檢驗。與傳統的樣本分類算法相比,一方面,基于模糊神經網絡的樣本分類算法不需要過多關注求解過程中的計算以及樣本某些屬性間是否存在相關性。另一方面,基于證據理論的樣本分類算法中存在如何將權重合理分配給相關特征等問題,基于模糊神經網絡的樣本分類算法引入隨機梯度下降的方法,通過多次迭代訓練結合反向傳播算法自動求解出合理的權重值。由實驗結果可知,基于模糊神經網絡的樣本分類算法對分類問題的平均準確性為98%,樣本分類的準確性與傳統數據算法相比顯著提高。