人工神經網絡(ANN)
ANN是有相互連接的結點和有項鏈構成。
(1)感知器。
感知器的一般模型如下所示:
分類思想:Ij = Sum(Wi*Oi) + a,其中Ij為特定的類標號,Wi為輸入向量的權重,Oi為輸入屬性的值,a為偏置因子。用這個模型就可以對未知的記錄分類。圖中的激活函數的用處是:將某個Ij的計算值映射到相應的類標號中。在訓練一個感知器時,最初將所有的權重隨機取值,而訓練一個感知器模型就相當於不斷的調整鏈的權值,直到能擬合訓練數據的輸入輸出關系為止。其中權值更新公式如下:Wj(k+1) = Wjk + r(yi - yik)Xij。其中Wk是第k次循環后第i個輸入鏈上的權值,參數r稱為學習率,Xij是訓練樣例的Xi的第j個屬性值。學習率值在0到1之間,可以用來控制每次循環時的調整量。自適應r值:r在前幾次循環時值相對較大,而在接下來的循環中逐漸減少。
(2)多層人工神經網絡
一個多層人工神經網絡的示意圖如下兩圖所示:其中左邊是多類標號情況,右邊是一類情況。
ANN學習中的設計問題:
(1)確定輸入層的結點數目
(2)確定輸出層的結點數目
(3)選擇網絡拓撲結構
(4)初始化權值和偏置(隨機值)
(5)去掉有遺漏的訓練樣例,或者用最合理的值來代替。
ANN的特點:
(1)至少含有一個隱藏層的多層神經網絡是一種普適近似,即可以用來近似任何目標函數。(2)ANN可以處理冗余特征,因為權值在訓練過程中自動學習。冗余特征的權值非常小。(3)神經網絡對訓練數據中的噪聲非常敏感。噪聲問題的一種方法是使用確認集來確定模型的泛化誤差;另一種方法是每次迭代把權值減少一個因子。(4)ANN權值學習使用的梯度下降方法經常會收斂到局部最小值。避免方法是在權值更新公式中加上一個自動量。
支持向量機(SVM)
它可以很好的應用於高維數據,避免了維災難問題,它使用訓練實例的一個子集來表示決策邊界,該子集稱作支持向量。SVM尋找具有最大邊緣的超平面(比那些較小的決策邊界具有更好的泛化誤差),因此也經常稱為最大邊緣分類器。最大邊緣的決策邊界如韓佳偉書P220圖6-21所示。
分類思想:
(1) 線性
- 線性可分
在線性可分的情況下就是要學習(找)到這個最大邊緣的決策邊界(通過線性規划或拉格朗日乘子來求得),當然也允許有一定的誤差(可以有少量的結點分在了它 不該在的類,但只要在能夠容忍的范圍就行),然后利用這個最大邊緣的決策邊界來分類,結果落在一邊的為一類,在另一邊的為另一類。
- 線性不可分
軟邊緣。線性可分的基礎上引入松弛變量,來改變優化函數和約束條件等。
(2)非線性
在線性不可分的情況下,將原來的數據從原先的坐標空間X轉換到一個新的坐標空間中,從而可以在變換后的坐標空間中使用一個線性的決策邊界來划分樣本的類標號(主要技術包括:非線性變換、核技術和Mercer定理)。
SVM的特點:
(1)SVM學習問題可以表示為凸優化問題,因此可以利用已知的有效算法發現目標函數的全局最小值
(2)通過對數據中每個分類屬性值引入一個啞變量,SVM可以應用於分類數據。
組合方法
該方法聚集多個分類器的預測來提高分類的准確率,這些技術稱為組合或分類器組合方法。組合方法由訓練數據構建一組基分類器,然后通過對每個分類器的預測進行投票來進行分類。預測過程如下所示:
由上面的分類過程可以看出當誤差率大於0.5時,組合分類器的性能比基分類器更差。組合分類器的性能優於單個分類器必須滿足兩個必要條件:(1)基分類器之間應該是相互獨立的(輕微相關也行);(2)基分類器應當好於隨機猜測分類器。
構建組合分類器的方法
(1)通過處理訓練數據集。根據某種抽樣分布,通過對原始數據進行再抽樣來得到多個訓練集(如有放回隨機抽樣)。一般得到的訓練集和原始數據集一樣大。然后使用特定的學習算法為每個訓練集建立一個分類器(裝袋和提升是兩種處理訓練集的組合方法)。
(2)通過處理輸入特征。通過選擇輸入特征的子集來形成每個訓練集。對那些含有大量冗余特征的數據集,這種方法的性能非常好(隨機深林就是一種處理輸入特征的組合方法,它使用決策樹作為基分類器)。
(3)通過處理類標號。這種方法適用於類數足夠多的情況。這種方法先將所有的類划分為兩個大類,然后將兩個大類的每個大類划分為兩個次大類……,預測時按照前面的分類遇到一個分類結點得一票,最后得票數最多的那個就是最終的類。
(4)通過處理學習算法。如果在同一個訓練集上用同一個學習算法得到的分類器模型不一樣,就可以多做幾次以建立多個基分類器。
組合方法對於不穩定的分類器效果很好。不穩定分類器是對訓練數據集微小的變化都很面干的基分類器。不穩定分類器的例子包括決策樹、基於規則的分類器和人工神經網絡。
(1)裝袋(boost strap aggregating,bagging)。裝袋又稱自助聚集,是一種根據均勻分布從數據集中重復抽樣的(有放回的)技術。每個自助樣本集都和原始數據一樣大。然后對每個樣本集訓練一個基分類器,訓練k個分類器后,測試樣本被指派到得票最高的類。用於噪聲數據,裝袋不太受過分擬合的影響。
(2)提升(boosting)。是一個迭代過程,用來自適應地改變樣本的分布,使得基分類器聚焦在那些很難分的樣本上。例如開始時所有的樣本都賦予相同的權值1/N, 然 后按這個概率抽取樣本集,然后得到一個分類器,並用它對原始數據集中的所有樣本進行分類。每一輪結束時更新樣本的權值。增加錯誤分類的樣本的權值,減少被 正確分類的樣本的權值,這迫使分類器在隨后的迭代中關注那些很難分類的樣本。通過聚集每一輪得到的分類器,就得到最終的分類器。目前有幾個提升算法的實現。
它們的差別在於:
(1)每輪提升結束時如何更新訓練樣本的權值;
(2)如何組合每個分類器的預測。
Adaboost:在該算法中,基分類器Ci的重要性依賴於它的錯誤率。算法思想:首先初始化N個樣本的權值(w = 1/N),然后對於第i次(總共k次,產生k個基分類器)提升(其他次一樣),根據w通過對D進行有放回抽樣得到訓練集Di,然后根據Di得到一個基分類器Ci,用Ci對訓練集D中的樣本進行分類。然后計算分類的加權誤差,如果加權誤差大於0.5,就將所有樣本的權值重設為為1/N,否則用ai更新每個樣本的權值。得到k個基分類器后,然后合並k個基分類器得到預測結果。Adaboost算法將每一個分類器Cj的預測值根據 aj進行加權,而不是使用多數表決的方案。這種機制允許Adaboost懲罰那些准確率很差的模型,如那些在較早的提升輪產生的模型。另外,如果任何中間輪產生高於50%的誤差,則權值將被恢復為開始的一致值wi = 1/N,並重新進行抽樣。Adaboost算法傾向於那些被錯誤分類的樣本,提升技術很容易受過分擬合的影響。
隨機森林。它是一類專門為決策樹分類器設計的組合方法。它結合多顆決策樹做出預測。與Adaboost算法使用的自適應方法不同,Adaboost中概率分布是變化的,以關注難分類的樣本,而隨機森林則采用一個固定的概率分布來產生隨機向量。
隨機森林與裝袋不同之處在於:
(1)裝袋可以用任何分類算法產生基分類器而隨機森林只能用決策樹產生基分類器。
(2)裝袋最后組合基分類器時用的投票方法二隨機森林不一定用投票。
(3)隨機森林的每個基分類器是一個樣本集的隨機向量而裝袋是用的有放回抽樣來產生樣本。隨機森林的的決策樹在選擇分類屬性時,隨機選擇F個輸入特征(而不是考察所有可用的特征)來對決策樹的節點進行分裂,然后樹完全增長而不進行任何剪枝,最后用多數表決的方法來組合預測(這種方法叫Forest-RI,其中RI是指隨機輸入選擇)。注意此時如果F太小,樹之間的相關度就減弱了,F太大樹分類器的強度增加,折中通常F取log2d + 1,其中d是輸入特征數。如果d太小,可以創建輸入特征的線性組合,在每個節點,產生F個這種隨機組合的新特征,並從中選擇最好的來分裂節點,這種方法稱為Forest-RC。隨機森林的分類准確率和Adaboost差不多,但是隨機森林對噪聲更加魯棒,運行速度也快得多。
不平衡類問題
有時候需要准確分類訓練集中的少數類而對多數類不是太關心。如不合格產品對合格產品。但是這樣建立的模型同時也容易受訓練數據中噪聲的影響。
新定的指標(過去的指標不頂用如:准確率不頂用):真正率(靈敏度)、真負率(特指度)、假正率、假負率、召回率、精度。 混淆矩陣
- 接受者操作特征(ROC)曲線
該曲線是顯示分類器真正率和假正率之間的折中的一種圖形化方法。在一個ROC曲線中,真正率沿y軸繪制,而假正率沿x軸繪制。一個好的分類模型應該盡可能靠近圖的左上角。隨機預測分類器的ROC曲線總是位於主對角線上。
ROC曲線下方的面積(AUC)提供了評價模型的平均性能的另一種方法。如果模型是完美的,則它在ROC曲線下方的面積等於1,如果模型僅僅是簡單地隨機猜測,則ROC曲線下方的面積等於0.5。如果一個模型好於另一個,則它的ROC曲線下方的面積較大。為了繪制ROC曲線,分類器應當能夠產生可以用來評價它的預測的連續值輸出,從最有可能分為正類的記錄到最不可能的記錄。這些輸出可能對應於貝葉斯分類器產生的后驗概率或人工神經網絡產生的數值輸出。(繪制ROC曲線從左下角開始到右上角結束,繪制過程見hanjiawei P243)。
- 代價敏感學習
代價矩陣對將一個類的記錄分類到另一個類的懲罰進行編碼。代價矩陣中的一個負項表示對正確分類的獎勵。算法思想:將稀有的類標號預測錯誤的代價權值設為很 大,則在計算總代價時,它的權值較高,所以如果分類錯誤的話,代價就較高了。代價敏感度技術在構建模型的過程中考慮代價矩陣,並產生代價最低的模型。例 如:如果假負錯誤代價最高,則學習算法通過向父類擴展它的決策邊界來減少這些錯誤。
主要思想:改變實例的分布,而使得稀有類在訓練數據集得到很好的表示。有兩種抽樣方法:第一種選擇正類樣本的數目和稀有樣本的數目一樣多,來進行訓練(可以 進行多次,每次選擇不同的正類樣本)。第二種復制稀有樣本(或者在已有的稀有樣本的鄰域中產生新的樣本)使得和正類樣本一樣多。注意,第二種方法對於噪聲 數據可能導致模型過分擬合。
多類問題(結果類標號不止兩個)
解決方法:
(1)將多類問題分解成K個二類問題。為每一個類yi Y(所有的類標號集合)創建一個二類問題,其中所有屬於yi的樣本都被看做正類,而其他樣本都被看做負類。然后構建一個二元分類器,將屬於yi的樣本從其他的類中分離出來。(稱為一對其他(1-r)方法)。
(2)構建K(K-1)/2個二類分類器,每一個分類器用來區分一對類(yi,yj)。當為類(yi,yj)構建二類分類器時,不屬於yi或yj的樣本被忽略掉(稱為一對一(1-1)方法)。這兩種方法都是通過組合所有的二元分類器的預測對檢驗實例分類。組合預測的典型做法是使用投票表決,將驗證樣本指派到得票最多的類。
糾錯輸出編碼(ECOC):前面介紹的兩種處理多類問題的方法對二元分類的錯誤太敏感。ECOC提供了一種處理多類問題更魯棒的方法。該方法受信息理論中通過噪聲信道發送信息的啟發。基本思想是借助於代碼字向傳輸信息中增加一些冗余,從而使得接收方能發現接受信息中的一些錯誤,而且如果錯誤量很少,還可能恢復原始信息。具體:對於多類學習,每個類yi用一個長度為n的唯一位串來表示,稱為它的代碼字。然后訓練n個二元分類器,預測代碼子串的每個二進制位。檢驗實例的預測類由這樣的代碼字給出。該代碼字到二元分類器產生的代碼字海明距離最近(兩個位串之間的海明距離是它們的不同的二進制位的數目)。糾錯碼的一個有趣的性質是,如果任意代碼字對之間的最小海明距離為d,則輸出代碼任意 (d-1) / 2個 錯誤可以使用離它最近的代碼字糾正。注意:為通信任務設計的糾正碼明顯不同於多類學習的糾正嗎。對通信任務,代碼字應該最大化各行之間的海明距離,使得糾 錯可以進行。然而,多類學習要求將代碼字列向和行向的距離很好的分開。較大的列向距離可以確保二元分類器是相互獨立的,而這正是組合學習算法的一個重要要求。
摘要於:http://blog.chinaunix.net/uid-26226106-id-3137245.html