5.1基於規則的分類器
基於規則的分類器的規則用析取範式表示。R稱作規則集,是分類規則或析取項。
每一個分類規則都可以表示爲:規則前件規則後件
如果規則r的前件和記錄x的屬性匹配,則稱r覆蓋x。稱r被激發或被觸發。
分類規則的質量可以用覆蓋率(coverage)和準確率(accuracy)來度量
其中|A|表示符合前件的記錄數,表示同時符合前後件的記錄數,|D|表示記錄總數。
5.1.1基於規則的分類器的工作原理
互斥規則(Mutually Exclusive Rule):如果規則集R中不存在兩條規則被同一條記錄觸發,則稱R中的規則是互斥的。。
窮舉規則(Exhaustive Rule):如果對屬性值任一組合,R中都有一條規則加以覆蓋,則稱規則集R具有窮舉覆蓋
默認規則:默認規則的前件爲空,當所有其他規則失效時觸發。
有序規則(ordered rule):在這種方法中,規則集中的規則按照優先級降序排列,優先級的定義方法很多(覆蓋率準確率總描述長度規則產生的順序等)。有序的規則集也稱決策表(decision list)
無序規則:允許一條測試記錄觸發多條分類規則,每觸發一次看做一次對類的加權投票(權數可以是準確率),最後根據票數將記錄分配到某個類標號。這優於有序原則,建模開銷也小,但對測試記錄分類很繁重。
本章主要討論使用有序規則的分類器
5.1.2規則的排序方案
基於規則的排序方案
基於類的排序方案:大部分分類器都是用這種方案
5.1.4規則提取的直接方法
直接方法就是直接從數據中提取分類規則
Rule_set = {}; //學習的規則集初試爲空
E是訓練記錄,Y是類的有序集
for 每個類c do
repeat
Rule = Learn_One_Rule(E,Att-vals,y)
從E中刪除被Rule覆蓋的訓練記錄;
until終止條件被滿足
Rule_set = Rule_set +Rule%追加rule到列表尾部
end for
把默認規則插入到規則列表的尾部
返回Rule_set
1.Learn-One-Rule函數
Learn_One_Rule採用一種貪心的增長規則。他先產生一個初始規則r。並不斷對該規則求精,直到滿足某種終止條件爲止。
規則增長策略 :
(1)從一般到特殊:從初始規則r(前件爲空)開始,添加合取項來提高規則質量
(2)從特殊到一般:相反
束狀搜索:算法維護k個最佳候選規則,個候選規則在其前件中添加或刪除合取項獨立增長。評估候選規則的質量,選擇k個進行下一輪迭代
規則評估 由於準確率存在片面性,我們提供以下幾種方法來解決問題。
(1)可以使用統計檢驗剪出覆蓋率較低的規則。似然比(likelihood ratio)統計量:
k表示類的個數,表示被規則覆蓋的類i的樣本的觀測頻率,是規則做隨機猜測的期望頻率。R是滿足自由度爲k-1的分佈。較大的R值說明該規則作出的正確預測數顯著的大於隨機猜測的結果。
(2)可以使用一種考慮規則覆蓋率的評估度量:
n爲規則覆蓋的樣例數,爲規則覆蓋的正例數,k是總類數,p+是正類的先驗概率。由於規則的覆蓋率,兩個度量達到了準確率和正類先驗概率之間的平衡。當覆蓋率很高時,他們都趨向於規則的準確率
(3)另一種可使用的評估度量是考慮規則的支持度計數的評估度量。
在這種度量中,規則的支持度計數對應於它所覆蓋的正例數。假設規則r:A→+覆蓋p0個正例和n0個反例,增加新的合取項B,擴展後的規則r‘=A且B→+覆蓋p1個正例,和n1個反例。
該度量值與p1和p1/(p1_n1)成正比,所以它傾向於選擇那些高支持度計數和高準確率的規則。
規則剪枝,對於Learn——One——Rule函數產生的的規則,也可以像對第四章中的決策樹一樣剪枝,來改善泛化誤差。就像4.4節介紹的那樣。
2.順序覆蓋基本原理
規則提取出來後,順序覆蓋算法必須刪除該規則所覆蓋的所有正例和反例。
3.RIPPER算法
該算法的複雜度幾乎線性的隨着訓練樣例的數目增長,並且特別適合爲類分佈不均衡的數據及建立模型。它也能很好地處理噪聲數據集。
RIPPER算法按照類的頻率進行排序其中,y1是最不頻繁地類,在第一次迭代中,先把屬於的樣例標記爲正例,把其他的樣例標記爲反例,使用順序覆蓋算法產生規則,直到剩下最後一個類yc,把它作爲默認類。
規則增長使用FOIL信息增益來組安澤最佳合取項添加到規則前件中。通過計算來判斷是否剪枝,其中p,n分別是被覆蓋的確認集中的正例與反例數,如果該度量值增加就進行剪枝。
建立規則及規則生成後,他所覆蓋的所有正反例都要刪除。只要改規則不違反最小描述長度原則的終止條件,就將它添加到規則集中。具體措施需要進一步學習。
5.1.5規則提取的間接方法
現在介紹一種基於決策樹生成規則集的方法。
決策樹從根節點到葉節點的路徑表示爲一個分類規則,這樣的規則是完全且互斥的。但可以進行簡化,儘管簡化後不再互斥,但更容易解釋。
規則產生 只要簡化後的規則的誤差率低於原規則的誤差率,就保留其中悲觀誤差率最低的規則。重複進行知道不能再改進爲止。
規則排序 C4.5規則算法使用基於類的排序方案定序。同一個類的規則分到同一個子集中。計算每個子集的總描述長度,然後各類按照總描述長度由小到大排序。類的總描述長度等於,其中是對誤分類樣例編碼所需要的比特位數,是對模型編碼所需要的比特位數,而g是調節參數。調節參數取決於模型中冗餘屬性的數量。
基於規則分類器的特徵
- 基於規則的分類器可以構造更爲複雜的決策邊界
- 基於類的規則的定序方法非常是預處理類分佈不平均的數據集
- 性能可與決策樹分類模型媲美
5.2 最近鄰分類器
積極學習方法(eager learner):先建模,再預測(一勞永逸)
消極學習方法(lazy learner):比如Rote分類器,記住訓練數據,匹配時再分類(現學現賣)
最近鄰分類器:把每個樣例看做d維空間的一個數據點,d是屬性個數。
如果數據點的近鄰中有多個類標號,則將該數據點指派到其最近鄰的多數類。k值得選擇很重要,k太小,分類器容易受到容易受到噪聲影響產生過擬合,如果k太大可能會誤分類。
5.2.1 算法
k-最近鄰分類算法
令k是最近鄰數目,D是訓練樣例集合
for 每個測試樣例z=(x',y') do
計算z和每個樣例(x,y)∈D之間的距離d(x',x)
選擇離x最近的k個樣例的集合D_z
y'=argmax∑I(v=y_i)
距離加權表決其中,v是類標號,y是一個最近鄰的類標號,是指示函數,參數爲真返回1,否則爲0。,表示遠離z的樣例對分類的影響變弱。
5.3貝葉斯分類器
貝葉斯分類器是一種對屬性集和類變量的概率關係建模的方法。
5.3.3 樸素貝葉斯分類器
2.樸素貝葉斯分類器如何工作
對每個類Y計算後驗概率:由於對所有的Y,P(X)都是固定的,因此只需要計算條件概率就可以了。
3.估計分類屬性的條件概率
對於分類屬性,根據類y中屬性值等於的訓練實例的比例就可以了,比如7個還清房貸的人裏面有3個結婚,那麼就是3/7
4.估計連續屬性的條件概率
樸素貝葉斯分類有兩種方法
1.可以把一個連續屬性離散化。這要注意,離散區間的數目不能太多也不能太少。
2.可以將設連續變量服從某種概率分佈,然後使用訓練數據估計分佈的參數。比如正態分佈,通過求訓練記錄的均值和方差來估計條件概率。
在計算條件概率的時候P(Y|X),X是一個向量,包含多個屬性,我們假設多個屬性相互獨立,所以應該算多個條件概率的乘積
6.條件概率的m估計
上述方法有一個缺點就是,如果有一個屬性的類條件概率爲0,那麼乘積爲零。解決該問題的途徑就是使用m估計
其中,n是類中的實例總數,表示類的訓練樣例中的取值的樣例數,m是稱爲等價樣本大小的參數,而p是用戶指定的參數。如果n=0,則條件概率就就是p,因此p可以看做是類y中觀察屬性值x的先驗概率。等價樣本大小決定先驗概率p與觀測概率之間的平衡。
7.樸素貝葉斯分類器的特徵
- 面對孤立的噪聲點,樸素貝葉斯分類器是健壯的。
- 面對無關屬性,也是健壯的。
- 相關屬性可能會降低樸素貝葉斯分類器的性能
5.3.4 貝葉斯誤差率
當先驗概率不同時,決策邊界朝着先驗概率較小的類移動。
5.3.5貝葉斯網絡
該方法不需要給定類的所有屬性都條件獨立。
1.模型表示
貝葉斯信念網絡(Bayesian belief networks,BBN ),用圖形表示一組隨機變量之間的概率關係。它有兩個組成部分
- 一個有向無環圖,表示變量之間的依賴關係
- 一個概率表,把節點和他的直接父節點關聯起來。
如圖,D是C的父母,是A的祖先,B是C的子女,B是D的後代
- 如果結點X沒有父母結點,則表中只包含先驗概率P(X)
- 如果結點X只有一個父母結點Y,則表中包含條件概率P(X|Y)
- 如果結點X有多個父母結點,則表中包含條件概率P(X|Y1,…,Yk)
性質1:貝葉斯網絡中的一個結點,如果它的父母結點已知,則它的條件獨立於它的所有非後代結點。
給定C,B獨立於A和D。一條有向路徑就是一條規則。
2.建立模型
- 創建網絡結構
- 估計每一個結點的概率表
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FLmm539Y-1582592758681)(http://image.sciencenet.cn/album/201211/26/15452104kqr04wbr9o66kz.png)]
爲了簡化模型的計算,我們可以把變量分爲原因變量和結果變量,然後規定從原因變量向其對應的結果變量畫弧。
4.BBN的特點
1.用圖形模型來捕獲特定領域的先驗知識,網絡還可以用來對變量之間的因果依賴關係進行編碼
2.構造網絡費時費力,但一旦網絡結構確定下來,添加新變量就很容易
3.BBN適合處理不完整的數據
4.因爲數據和先驗知識以概率的方式結合起來了,所以BBN對模型的的過擬合是很魯棒的。
5.4人工神經網絡
5.4.2 多層人工神經網絡
- 在前饋神經網絡(feed-foward)中,每一層結點僅和下一層結點相連。在遞歸(recurrent)神經網絡中,允許同一層結點相連或一層結點連到前面各層中的結點
- 激活函數有很多,雨蕁隱藏結點和輸出節點的輸出值呈非線性關係
- 因爲缺少隱藏結點的真實輸出的先驗知識,這使得很難確定各隱藏結點的誤差項。
- 我們可以使用梯度下降法,求誤差函數的極小值來確定權數,但這也會出現局部最優的問題
- 反向傳播(back-propagation):分爲兩個階段,前向階段和後向階段。在前項階段,使用前一次迭代所得到的權值計算網絡中每一個神經元的輸出值,計算是前項進行的,即先更新k層的權值再更新k+1層權值。在後向階段,先更新k+1層,再更新k層。運用反向傳播的方法,可以用k+1層的誤差估計第k層的誤差
設計問題
- 確定輸入層結點的數目。對於k元變量,,可以爲每一個分類值創建一個分類結點,也可以 用個輸入節點對k元變量進行編碼
- 選擇網絡拓部結構。目標函數取決於鏈上的權值,隱藏結點數和隱藏層數,結點的偏置和激活函數的類型。找拓撲結構的一種方法是,使用足夠多的結點和隱藏層的全連接網絡然後使用較少的結點重複該建模過程,這種方法非常耗時。另一種方法是,不重複建模過程。而是刪除一些結點,然後重複模型評價過程來選擇合適的模型複雜度
- 初始化可以隨機賦值
5.4.3人工神經網絡的特點
- 選擇合適的拓撲結構防止過擬合很重要
- ANN可以處理冗餘特徵,因爲權值是自動學習的,可以很小
- 對噪聲敏感。處理噪聲的一種方法是使用確認集來確定模型的泛化誤差,另一種是每次迭代把權值減少一個因子
- 在權值更新公式中添加一個動量項(momentum term)
5.5 支持向量機(supporting vector machine,SVM)
支持向量機可以很好地應用於高維數據,避免了維災難問題。它使用訓練實例的一個子集來表示決策邊界,該子集稱作支持向量。
5.5.1最大邊緣超平面
- 每個決策邊界都對應着一對超平面,超平面之間的距離就是分類器的邊緣
基本原理:具有較大邊緣的決策邊界有更好的決策誤差
結構風險最小化理論:在概率下,分類器的泛化誤差在最壞條件下滿足
是分類器的訓練誤差、訓練樣本數N,模型複雜度h即它的能力(capacity),R表示泛化誤差的上界,是能力h的單調增函數。
它與4.4.4節中最想描述長度原理十分相似。體現了訓練誤差和複雜度之間的折中。線性模型的能力和它的邊緣逆相關,擁有較小邊緣的模型擁有較高的能力
5.5.2線性支持向量機:可分情況
線性SVM尋找具有最大邊緣的超平面,因此也被稱爲最大邊緣分類器
1線性決策邊界
KaTeX parse error: Expected & or \\ or \cr or \end at end of input: … \\
end{cases}
2線性分類器邊緣
兩個平行的超平面可以表示如下
兩個超平面可以表示爲
d表示邊緣大小
3.學習線性SVM模型
爲了學習出我們得到一個約束
爲了求最大邊緣,要求的最小值
於是我們可以綜合寫成一個拉格朗日函數的形式
通過對求偏導和KKT條以及把寫成對偶形式
決策邊界可以表示成
b可以通過求解支持向量公式得到,由於lambda通過數值計算得到,因此b可能不唯一,它取決於所使用的支持向量,實踐中使用b的平均值做決策邊界的參數。
5.5.3不可分情況
類似
5.5.4非線性支持向量機
當我們遇到非線性的分類情況,很難用線性的超平面來劃分。因此我們可以使用屬性變換的方法變化座標系,把非線性空間轉換成線性空間,但這會導致維災難。這個問題在後面的敘述中會提到解決辦法
學習非線性SVM模型
這個過程和學習線性SVM的過程完全相似,惟一的區別在於用來替換一切x,其中是x的變換函數
核技術
在原屬性中計算的相似度函數K稱爲核函數(ernel function).
在非線性SVM中使用的核函數必須滿足Mercer定理。這樣我們不必知道的具體形式,因爲核函數可以用x與y的點積形式表示。
比如:、
支持向量機的特徵
- SVM學習問題可以表示爲凸優化問題,因此可以求得全局最優解
- SVM擴展到多類問題
5.6 組合方法
通過聚集多個分類器的預測來提高準確率。這些技術稱爲組合(ensemble).組合方法有訓練數據構建一組基分類器,通過對每個基分類器的預測進行投票來進行分類。
5.6.1基本原理
如果基分類器實行互獨立的(即他們的誤差是不相關的),則僅當超過一半的基分類器都預測錯誤時,組合分類器纔會做出錯誤預測。這種情況下,組合分類器的誤差率爲:
這裏假設有一個25個分類器的組合,每一個基分類器的誤差爲,當時組合分類器比不上基分類器。
實際上,基分類器很難做到相互獨立,當然也不會完全相似,因此組合還是有優勢的。
5.6.2 構建組合分類器的方法
- 通過處理訓練數據集。比如裝袋(bagging)和提升(boosting)
- 通過處理輸入特徵。比如隨機森林算法
- 通過處理類標號。比如錯誤-糾正輸出編碼(error-correcting output coding)
- 通過處理學習算法。比如在同一個訓練數據集上多次執行算法可能得到不同的模型。
組合方法對於不穩定的分類器(unstable classifer)比如決策樹、基於規則的分類器、人工神經網絡 ,訓練樣本的可變性是分類器誤差的主要來源之一。
5.6.3 偏倚(bias)-方差分解
期望誤差是一個分類器誤分一個給定樣本的概率。一般來說,分類器關於它的決策邊界性質所做的假定越強,分類器的偏倚就越大。實際決策邊界與平均決策邊界之間的差反映了分類器的偏倚,決策邊界的可變性反映了分類器的方差。
5.6.4裝袋(bagging)
又稱自助聚集(boot strap aggregating),是一種根據均勻概率分佈從數據集中重複抽樣(有放回)的技術。每個自主樣本集都和原數據集一樣大。一般來說每個自主樣本大約包含63%的原訓練數據。訓練過k個分類器後,測試樣本被指派到得票最高的類如果參數爲真則 ,否則等於0
決策樹樁(decision stump):他是一個分類器,僅包含一層的二叉決策樹,只有一個測試條件,其中k是使得葉結點熵最小的分裂點。
裝袋通過降低基分類器方差改善了泛化誤差,而且對於噪聲數據,裝袋不太受過分擬合的影響。裝袋的性能依賴於基分類器的穩定性。如果基分類器不穩定那很好,若是穩定的,則誤差主要由偏倚產生,分類器達不到改善的效果。
5.6.5提升
提升是一個迭代過程,用來自適應的改變訓練樣本的分佈,使得基分類器聚焦在那些很難分的樣本上。它給每一個訓練樣本賦一個權值,而且可以在每一輪提升結束時自動的提升權值。權值可以用於
- 用作抽樣分佈
- 基分類器使用權值學習有利於高權值樣本的模型
不同的提升算法的差別在於
- 每輪結束時如何更新權值
- 如何組合每個分類器的預測
下面說一個具體的提升例子AdaBoost算法
5.7不平衡類問題
本節將給出一些爲處理不平衡類問題而開發的方法。
5.7.1可選度量
在不平衡數據集中,稀有類比多數類更有意義。對於二元分類,稀有類通常記爲正類,而多數類被認爲是負類。由此我們得到混淆矩陣
- TP ——
- FN ——
- FP ——
- TN ——
**真正率(true positive rate,TPR)或靈敏度(sensitivity)被定義爲模型正確預測的正樣本比例
同理真負率(TNR)或特指度(specificity)**被定義爲模型正確預測負樣本的比例
假正率(FPR)
假負率(FNR)
召回率®和精度§是兩個廣泛使用的度量
精度越高,假正錯誤越低。召回率越高,真正率越高。因此構建一個最大化精度和召回率是分類算法的主要任務之一。
度量 | ||||
---|---|---|---|---|
召回率 | 1 | 1 | 0 | 0 |
精度 | 1 | 0 | 1 | 0 |
+1 | 1 | 0 | ||
準確率 | 1 | 1 | 1 | 1 |
其中
表示召回率與精度之間的一個度量值
5.7.2 接受者操作特徵曲線
接受者操作特徵(ROC)曲線是顯示分類器真正率和假正率之間折中的一種圖形化方法。在一個ROC曲線中,TPR沿y軸繪製,FPR沿x軸繪製。
ROC曲線下方的面積(AUC)提供了一個評價的方法
如果模型是完美的,那麼AUC=1
如果模型是隨機猜測的,那麼AUC=0.5
AUC越大,模型越優。
ROC曲線的繪製是一個連續迭代的過程。
5.7.3代價敏感學習
代價矩陣對講一個類的記錄分類到另一個類的懲罰進行編碼。表示把一個i類預測成爲j的代價。在不平衡類問題中,不同的錯誤的代價也是不一樣的,嚴重的錯誤代價更大。
代價信息可以用來:
- 選擇用以分類數據的最好的屬性
- 決定子樹是否需要修枝
- 處理訓練記錄的權值
- 修改每個葉節點上的決策規則
5.7.4基於抽樣的方法
抽樣是處理不平衡問題的另一種方法。主要思想是改變實例的分佈,從而幫助稀有類在訓練數據集中很好地表示。
現有的技術包括,不充分抽樣、過分抽樣、和兩種技術的混合。
考慮一個100個正例1000個負例的記錄
- 不充分抽樣:只取100個負樣本的隨機抽樣和正樣本組成訓練集。(可以多次進行,覆蓋更廣)
- 過分抽樣:把100個正例複製到1000個。(容易受到噪聲影響,過擬合等問題)
- 混合:對多數類進行不充分抽樣,對稀有類進行過分抽樣
5.8多類問題
本節給出一些將二類問題推廣到多類的方法
- 一對其他(1-r)方法:將多類問題分解成K個二類問題。爲每一個類yi創建一個二類問題,然後構建一個二元分類器,將屬於yi的樣本從其他類中分離出來。
- 一對一(1-1)方法:構建K(K-1)/2個二類分類器,每個分類器用來區分一對類(yi,yj)。
糾錯輸出編碼(error-correcting output coding,ECOC)
基本思想是藉助於代碼字向傳輸信息中增加一些冗餘,從而能使得接收方能發現接受信息中的一些錯誤,而且如果錯誤量少還可能回覆原始信息。
對於多類學習,每個類yi用一個長度n的唯一位串來表示,稱爲它的代碼字。然後訓練n個二元分類器,預測每個代碼字串的二進位。如果一個類的代碼字與二元分類器的海明距離最近,那麼這個類就是檢驗實例的預測類。海明距離是他們的不同二進位的數目。