【文章摘要】
本文主要介紹的模型和算法都是數據挖掘中最常見的和應用最廣泛的,在計算機科學、統計數學、和人工智能領域的科學家們已經在研究和改進這些算法方面作了大量的工作。
【關鍵詞】
數據挖掘;算法;神經網絡
1 神經網絡的應用
神經網絡近來越來越受到人們的關注,因為它為解決大復雜度問題提供了一種相對來說比較有效的簡單方法。神經網絡可以很容易的解決具有上百個參數的問題。神經網絡常用于兩類問題;分類和回歸。
在結構上,可以把一個神經網絡劃分為輸入層、輸出層和隱含層(見圖1)。輸入層的每個節點對應一個個的預測變量。輸出層的節點對應目標變量,可有多個。在輸入層和輸出層之間是隱含層,隱含層的層數和每層節點的個數決定了神經網絡的復雜度。
圖1 一個神經元網絡
除了輸入層的節點,神經網絡的每個節點都與很多它前面的節點(稱為此節點的輸入節點)連接在一起,每個連接對應一個權重Wxy,此節點的值就是通過它所有輸入節點的值與對應連接權重乘積的和作為一個函數的輸入而得到,我們把這個函數稱為活動函數或擠壓函數。如圖2中節點4輸出到節點6的值可通過如下計算得到:
W14*節點1的值+W24*節點2的值
神經網絡的每個節點都可表示成預測變量(節點1,2)的值或值的組合(節點3-6)。注意節點6的值已經不再是節點1,2的線性組合,因為數據在隱含層中傳遞時使用了活動函數。實際上如果沒有活動函數的話,神經元網絡就等價于一個線性回歸函數,如果此活動函數是某種特定的非線性函數,那神經網絡又等價于邏輯回歸。
調整節點間連接的權重就是在建立(也稱訓練)神經網絡時要做的工作。最早的也是最基本的權重調整方法是錯誤回饋法,現在較新的有變化坡度法、類牛頓法、Levenberg-Marquardt法、和遺傳算法等。
圖2 帶權重Wxy的神經元網絡
決定神經網絡拓撲結構(或體系結構)的是隱含層及其所含節點的個數,以及節點之間的連接方式。要從頭開始設計一個神經網絡,必須要決定隱含層和節點的數目,活動函數的形式,以及對權重做那些限制等。
2 傳播式神經網絡
在諸多類型的神經網絡中,最常用的是前向傳播式神經網絡,也就是我們前面圖示中所描繪的那種。我們下面詳細討論一下,為討論方便假定只含有一層隱含節點。
可以認為錯誤回饋式訓練法是變化坡度法的簡化,其過程如下:
前向傳播:數據從輸入到輸出的過程是一個從前向后的傳播過程,后一節點的值通過它前面相連的節點傳過來,然后把值按照各個連接權重的大小加權輸入活動函數再得到新的值,進一步傳播到下一個節點。
回饋:當節點的輸出值與我們預期的值不同,也就是發生錯誤時,神經網絡就要“學習”(從錯誤中學習)。我們可以把節點間連接的權重看成后一節點對前一節點的“信任”程度。學習的方法是采用懲罰的方法,過程如下:如果一節點輸出發生錯誤,那么他看他的錯
誤是受哪個(些)輸入節點的影響而造成的,是不是他最信任的節點(權重最高的節點)陷害了他(使他出錯),如果是則要降低對他的信任值(降低權重),懲罰他們,同時升高那些做出正確建議節點的信任值。對那些收到懲罰的節點來說,他也需要用同樣的方法來進一步懲罰它前面的節點。就這樣把懲罰一步步向前傳播直到輸入節點為止。
對訓練集中的每一條記錄都要重復這個步驟,用前向傳播得到輸出值,如果發生錯誤,則用回饋法進行學習。當把訓練集中的每一條記錄都運行過一遍之后,我們稱完成一個訓練周期。要完成神經網絡的訓練可能需要很多個訓練周期,經常是幾百個。訓練完成之后得到的神經網絡就是在通過訓練集發現的模型,描述了訓練集中響應變量受預測變量影響的變化規律。
由于神經網絡隱含層中的可變參數太多,如果訓練時間足夠長的話,神經網絡很可能把訓練集的所有細節信息都“記”下來,而不是建立一個忽略細節只具有規律性的模型,我們稱這種情況為訓練過度。顯然這種“模型”對訓練集會有很高的準確率,而一旦離開訓練集應用到其他數據,很可能準確度急劇下降。為了防止這種訓練過度的情況,我們必須知道在什么時候要停止訓練。
圖3中的曲線可以幫我們理解為什么利用測試集能防止訓練過度的出現。在圖中可以看到訓練集和測試集的錯誤率在一開始都隨著訓練周期的增加不斷降低,而測試集的錯誤率在達到一個谷底后反而上升,我們認為這個開始上升的時刻就是應該停止訓練的時刻。
圖3 神經網絡在訓練周期
增加時準確度的變化情況
3 神經網絡的優點
神經元網絡和統計方法在本質上有很多區別。神經網絡的參數可以比統計方法多很多。如圖1中就有13個參數(9個權重和4個限制條件)。由于參數如此之多,參數通過各種各樣的組合方式來影響輸出結果,以至于很難對一個神經網絡表示的模型做出直觀的解釋。實際上神經網絡也正是當做“黑盒”來用的,不用去管“黑盒”里面是什么,只管用就行了。在大部分情況下,這種限制條件是可以接受的。比如銀行可能需要一個筆記識別軟件,但他沒必要知道為什么這些線條組合在一起就是一個人的簽名,而另外一個相似的則不是。在很多復雜度很高的問題如化學試驗、機器人、金融市場的模擬、和語言圖像的識別等領域神經網絡都取得了很好的效果。
4 在使用神經網絡時有幾點需要注意
第一,神經網絡很難解釋,目前還沒有能對神經網絡做出顯而易見的解釋的方法學。
第二,神經網絡會學習過度,在訓練神經網絡時一定要恰當的使用一些能嚴格衡量神經網絡的方法,如前面提到的測試集方法和交叉驗證法等。這主要是由于神經網絡太靈活、可變參數太多,如果給足夠的時間,他幾乎可以記住任何事情。
第三,除非問題非常簡單,訓練一個神經網絡可能需要相當可觀的時間才能完成。當然,一旦神經網絡建立好了,在用它做預測時運行還是很快的。
第四,建立神經網絡需要做的數據準備工作量很大。一個很有誤導性的就是不管用什么數據神經網絡都能很好的工作并做出準確的預測。這是不確切的,要想得到準確度高的模型必須認真的進行數據清洗、整理、轉換、選擇等工作,對任何數據挖掘技術都是這樣,神經網絡尤其注重這一點。
【參考文獻】
熊熊,汪德馨,宋軼民.利用模糊神經網絡進行模糊數據挖掘的一種算法[J].系統工程學報,2000,3(1):32-37.
【作者簡介】
陳晨(1986—),女,遼寧沈陽人,就職于遼寧省科學技術廳,同濟大學軟件學院碩士研究生。