數據挖掘 - 分類算法比較

分類算法介紹

如下介紹典型的分類算法。 html

Bayes

貝葉斯分類器的分類原理是經過某對象的先驗機率,利用貝葉斯公式計算出其後驗機率,即該對象屬於某一類的機率,選擇具備最大後驗機率的類做爲該對象所屬的類。目前研究較多的貝葉斯分類器主要有四種,分別是:Naive Bayes、 TAN、BAN 和 GBN。 算法

  1. 貝葉斯網絡(BayesNet) bootstrap

    貝葉斯網絡是一個帶有機率註釋的有向無環圖,圖中的每個結點均表示一個隨機變量 , 圖中兩結點間若存在着一條弧,則表示這兩結點相對應的隨機變量是機率相依的,反之則說明這兩個隨機變量是條件獨立的。網絡中任意一個結點 X 均有一個相應的條件機率表 Conditional Probability Table,CPT) ,用以表示結點 X 在其父結點取各可能值時的條件機率。若結點 X 無父結點 , 則 X 的 CPT 爲其先驗機率分佈。貝葉斯網絡的結構及各結點的 CPT 定義了網絡中各變量的機率分佈。應用貝葉斯網絡分類器進行分類主要分紅兩階段。第一階段是貝葉斯網絡分類器的學習,即從樣本數據中構造分類器,包括結構學習和 CPT 學習;第二階段是貝葉斯網絡分類器的推理,即計算類結點的條件機率,對分類數據進行分類。這兩個階段的時間複雜性均取決於特徵值間的依賴程度,甚至能夠是 NP 徹底問題,於是在實際應用中,每每須要對貝葉斯網絡分類器進行簡化。根據對特徵值間不一樣關聯程度的假設,能夠得出各類貝葉斯分類器。 網絡

  2. 樸素貝葉斯(NaiveBayes) app

    樸素貝葉斯模型(NBC)發源於古典數學理論,有着堅實的數學基礎,以及穩定的分類效率。同時,NBC 模型所需估計的參數不多,對缺失數據不太敏感,算法也比較簡單。NBC 模型假設屬性之間相互獨立,這個假設在實際應用中每每是不成立的,這給 NBC 模型的正確分類帶來了必定影響。在屬性個數比較多或者屬性之間相關性較大時,NBC 模型的分類效率比不上決策樹模型。而在屬性相關性較小時,NBC 模型的性能最爲良好。 工具

Lazy Learning

相對其它的 Inductive Learning 的算法來講,Lazy Learning 的方法在訓練是僅僅是保存樣本集的信息,直到測試樣本到達時才進行分類決策。也就是說這個決策模型是在測試樣本到來之後才生成的。相對與其它的分類算法來講,這類的分類算法能夠根據每一個測試樣本的樣本信息來學習模型,這樣的學習模型可能更好的擬 合局部的樣本特性。kNN 算法的思路很是簡單直觀:若是一個樣本在特徵空間中的 k 個最類似 ( 即特徵空間中最鄰近 ) 的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。其基本原理是在測試樣本到達的時候尋找到測試樣本的 k 臨近的樣本,而後選擇這些鄰居樣本的類別最集中的一種做爲測試樣本的類別。在 weka 中關於 kNN 的算法有兩個,分別是 IB1,IBk。 性能

  1. IB1 即 1 近鄰 學習

    IB1 是經過它的一個鄰居來判斷測試樣本的類別 測試

  2. IBk 即 K 近鄰 ui

    IBk 是經過它周圍的 k 個鄰居來判斷測試樣本的類別

在樣本中有比較多的噪音點是(noisy points)時,經過一個鄰居的效果很顯然會差一些,由於出現偏差的狀況會比較多。這種狀況下,IBk 就成了一個較優的選項了。這個時候有出現了一個問題,k 這個值如何肯定,通常來講這個 k 是經過經驗來判斷的。

Trees

即決策樹算法,決策樹是對數據進行分類,以此達到預測的目的。該決策樹方法先根據訓練集數據造成決策樹,若是該樹不能對全部對象給出正確的分類,那麼選擇一些例外加入到訓練集數據中,重複該過程一直到造成正確的決策集。決策樹表明着決策集的樹形結構。決策樹由決策結點、分支和葉子組成。決策樹中最上面 的結點爲根結點,每一個分支是一個新的決策結點,或者是樹的葉子。每一個決策結點表明一個問題或決策,一般 對應於待分類對象的屬性。每個葉子結點表明一種可能的分類結果。沿決策樹從上到下遍歷的過程當中,在每一個結點都會遇到一個測試,對每一個結點上問題的不一樣的 測試輸出致使不一樣的分支,最後會到達一個葉子結點,這個過程就是利用決策樹進行分類的過程,利用若干個變量來判斷所屬的類別。

  1. Id3 即決策樹 ID3 算法

    ID3 算法是由 Quinlan 首先提出的。該算法是以信息論爲基礎,以信息熵和信息增益度爲衡量標準,從而實現對數據的概括分類。

    如下是一些信息論的基本概念:

    定義 1:若存在 n 個相同機率的消息,則每一個消息的機率 p 是 1/n,一個消息傳遞的信息量爲 Log2(n)

    定義 2:如有 n 個消息,其給定機率分佈爲 P=(p1,p2 … pn),則由該分佈傳遞的信息量稱爲 P 的熵,記爲

    I (p) =-(i=1 to n 求和 ) piLog2(pi) 。

    定義 3:若一個記錄集合 T 根據類別屬性的值被分紅互相獨立的類 C1C2..Ck,則識別 T 的一個元素所屬哪一個類所須要的信息量爲 Info (T) =I (p) ,其中 P 爲 C1C2 … Ck 的機率分佈,即 P= (|C1|/|T| … |Ck|/|T|)

    定義 4:若咱們先根據非類別屬性 X 的值將 T 分紅集合 T1,T2 … Tn,則肯定 T 中一個元素類的信息量可經過肯定 Ti 的加權平均值來獲得,即 Info(Ti) 的加權平均值爲:

    Info(X, T) = (i=1 to n 求和 ) ((|Ti|/|T |) Info (Ti))

    定義 5:信息增益度是兩個信息量之間的差值,其中一個信息量是需肯定 T 的一個元素的信息量,另外一個信息量是在已獲得的屬性 X 的值後需肯定的 T 一個元素的信息量,信息增益度公式爲:

    Gain(X, T) =Info (T)-Info(X, T)

  2. J48 即決策樹 C4.5 算法

    C4.5 算法一種分類決策樹算法 , 其核心算法是 ID3 算法。C4.5 算法繼承了 ID3 算法的優勢,並在如下幾方面對 ID3 算法進行了改進:

    1. 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;

    2. 在樹構造過程當中進行剪枝;

    3. 可以完成對連續屬性的離散化處理;

    4. 可以對不完整數據進行處理。

    C4.5 算法有以下優勢:產生的分類規則易於理解,準確率較高。其缺點是:在構造樹的過程當中,須要對數據集進行屢次的順序掃描和排序,於是致使算法的低效。

Rule

  1. Decision Table 即決策表

    決策表 (Decision Table),是一中使用表的結構,精確而簡潔描述複雜邏輯的方式。

  2. JRip 即 RIPPER 算法

    規則概括學習從分類實例出發可以概括出通常的概念描述。其中重要的算法爲 IREP 算法和 RIPPER 算法。重複增量修枝(RIPPER)算法生成一條規則,隨機地將沒有覆蓋的實例分紅生長集合和修剪集合,規定規則集合中的每一個規則是有兩個規則來生成:替代規則和修訂規則。

Meta

  1. AdaBoostM1 即 AdaBoosting 算法

    Adaboost 是一種迭代算法,其核心思想是針對同一個訓練集訓練不一樣的分類器 ( 弱分類器 ) ,而後把這些弱分類器集合起來,構成一個更強的最終分類器 ( 強分類器 ) 。其算法自己是經過改變數據分佈來實現的,它根據每次訓練集之中每一個樣本的分類是否正確,以及上次的整體分類的準確率,來肯定每一個樣本的權值。將修改過權值的新數據集送給下層分類器進行訓練,最後將每次訓練獲得的分類器最後融合起來,做爲最後的決策分類器。

  2. Bagging 即 Bagging 方法

    Bootstrps bagging boosting 都屬於集成學習方法,將訓練的學習器集成在一塊兒。原理來源於 PAC 學習模型(Probably Approximately CorrectK)。其中的 Bagging 是 bootstrap aggregating 的縮寫,是最先的 Ensemble 算法之一,它也是最直接容易實現,又具備不錯的效果的算法之一。Bagging 中的多樣性是由有放回抽取訓練樣原本實現的,用這種方式隨機產生多個訓練數據的子集,在每個訓練集的子集上訓練一個同種分類器,最終分類結果是由多個分類器的分類結果多數投票而產生的。

回頁首

Weka 中分類算法的參數解釋

Correlation coefficient (= CC) : 相關係數

Root mean squared error (= RMSE) : 均方根偏差

Root relative squared error (= RRSE) : 相對平方根偏差

Mean absolute error (= MAE) : 平均絕對偏差

Root absolute error (= RAE) : 平均絕對偏差平方根

Combined: (1-abs (CC)) + RRSE + RAE: 結合的

Accuracy (= ACC) : 正確率

注意,Correction coefficient 只適用於連續值類別,Accuracy 只適用於離散類別

Kappa statistic:這個指標用於評判分類器的分類結果與隨機分類的差別度。

絕對差值(Mean absolute error):這個指標用於評判預測值與實際值之間的差別度。把屢次測得值之間相互接近的程度稱爲精密度,精密度用誤差表示,誤差指測得值與平均值之間的差值,誤差越小,精密度則越高。

中偏差(Root mean square error:RMSE):帶權殘差平方和的平均數的平方根,做爲在必定條件下衡量測量精度的一種數值指標。中偏差是衡量觀測精度的一種數字標準,亦稱「標準差」或「均方根差」。在相同觀測條件下的一組真偏差平方中數的平方根。因真偏差不易求得 , 所 以一般用最小二乘法求得的觀測值改正數來代替真偏差。它是觀測值與真值誤差的平方和觀測次數 n 比值的平方根。中偏差不等於真偏差,它僅是一組真偏差的表明值。中偏差的大小反映了該組觀測值精度的高低,所以,一般稱中偏差爲觀測值的中偏差。

回頁首

分類算法的評價標準

預測的準確率:這涉及到模型正確地預測新的或先前沒見過的數據的類 標號能力。

速度:涉及到產生和使用模型的計算花費。

強壯性:這涉及給定噪聲數據或具備空缺值的數據,模型正確預測的能力。

可伸縮性:這涉及給定大量的數據,有效的構造模型的能力。

可解釋性:這涉及學習模型提供的理解和洞察的層次。

回頁首

分類算法的比較

如下主要採用兩種數據集(Monk's Problems 和 Satimage)來分別運行不一樣的分類算法,採用的是 Weka 數據挖掘工具。

Monk's Problems 數據集特色

1. 屬性所有爲 nominal 類型

2. 訓練樣本較少

圖 1. 訓練數據集
圖 1. 訓練數據集

3. 訓練集數據的可視化圖,該圖根據直方圖上方一欄所選擇的 class 屬性(attr6)來着色。

圖 2. 訓練數據集可視化圖
圖 2. 訓練數據集可視化圖

各分類器初步分類效果分析

各分類器不作參數調整,使用默認參數進行獲得的結果。

表 1. 分類器初步結果比較
Data Source Category Classifier Correctly Classified Mean absolute error Root relative squared error Time taken
(Seconds)
Test Data Bayes BayesNet 49.31% 0.4987 0.5051 0
NaiveBayes 49.77% 0.4988 0.5049 0
Lazy IB1 60.65% 0.3935 0.6273 0
IBk 59.49% 0.3867 0.5188 0
Trees Id3 57.87% 0.3787 0.597 0
J48 59.72% 0.4625 0.4988 0.02
Rules Decision Table 59.49% 0.4622 0.5007 0.02
JRip 51.39% 0.4987 0.5007 0.02
Meta AdaBoostM1 50.00% 0.4988 0.5048 0.08
Bagging 55.09% 0.4898 0.5021 0.03

分類器比較

預測的準確率比較

採用基於懶惰學習的 IB一、IBk 的分類器的偏差率較低,採用基於機率統計的 BayesNet 分類器的偏差率較高,其餘的基於決策樹和基於規則的分類器偏差居於前二者之間,這是由於在樣本較少的狀況下,採用 IB1 時,生成的決策模型是在測試樣本到來之後才生成,這樣的學習模型可能更好的擬合局部的樣本特性。採用統計學分類方法的 BayesNet 之因此準確度較低,多是因爲貝葉斯定理的成立自己須要很強的獨立性假設前提,而此假設在實際狀況中常常是不成立的。可是通常地,統計分類算法趨於計算量大。

進一步比較分類結果的散點圖(其中正確分類的結果用叉表示,分錯的結果用方框表示),發現 BayesNet 分類器針對屬性 6(attr6)的預測結果分錯的結果明顯比 IB1 的分錯結果要多些,而這些錯誤的散點中,又以屬性 6 的取值爲 2 的散點中錯誤的數目較多。

圖 3. BayesNet 的分類結果散點圖
圖 3. BayesNet 的分類結果散點圖
圖 4. IB1 分類結果散點圖
圖 4. IB1 分類結果散點圖

分類速度比較

Adaboost 的分類花了 0.08 秒,Bagging 的分類花了 0.03 秒,相對於其餘的分類器,這兩個分類器速度較慢。這是由於這兩個算法採用迭代,針對同一個訓練集,訓練多種分類器,而後把這些分類器集合起來,因此時間消耗較長。

分類器參數調優

IBK 調優

【 KNN 】:6

擴大鄰近學習的節點範圍,下降異常點的干擾(距離較大的異常點)

 【 DistanceWeighting 】:Weight by 1/distance

經過修改距離權重,進一步下降異常點的干擾(距離較大的異常點)

圖 5. IBk 分類調優
圖 5. IBk 分類調優

IBk 調優結果

調優後準確率從 60.65% 上升到 63.43%。

表 2. IBk 調優結果
Data Source Category Classifier Correctly Classified Mean absolute error Root relative squared error Time taken
(Seconds)
Test Data Lazy IBk 63.43% 0.373 0.4802 0

J48 調優

【 binarySplits 】:True

採用 2 分法,生成決策樹。

圖 6. J48 分類調優
圖 6. J48 分類調優

J48 調優結果

調優後準確率從 59.72% 上升到 64.35%,可是分類模型創建時間從 0 延長到了 0.31 秒

表 3. J48 調優結果
Data Source Category Classifier Correctly Classified Mean absolute error Root relative squared error Time taken
(Seconds)
Test Data Trees J48 64.35% 0.3908 0.4817 0.31

Salmage 數據集特色

1. 屬性爲 numeric 類型 , 共 37 個屬性

2. 訓練數據各種不平衡,測試數據各種不平衡

圖 7. 訓練數據集可視化圖
圖 7. 訓練數據集可視化圖

各分類器初步分類效果分析

各分類器不作參數調整,使用默認參數獲得的結果以下:

表 4. 分類器初步結果比較
Data Source Category Classifier Correctly Classified Mean absolute error Root relative squared error Time taken
(Seconds)
Test Data Bayes BayesNet 82.74% 0.0586 0.2366 0.44
NaiveBayes 79.72% 0.0681 0.2552 0.28
Lazy IB1 90.36% 0.0321 0.1793 0
IBk 90.36% 0.0324 0.1792 0
Trees Id3 NA (Not nominal data) NA NA NA
J48 86.47% 0.0484 0.2033 2.06
Rules Decision Table 82.35% 0.0718 0.215 4.33
Jrip NA (Not enough memory) NA NA NA
Meta AdaBoostM1 43.08% 0.2221 0.3345 0.09
Bagging 89.66% 0.0559 0.1594 3.92

分類器比較

預測的準確率比較

採用基於懶惰學習的 IB一、IBk 的分類器的準確率都較高,爲 90.36%,採用 基於決策樁的 AdaBoostM 分類器的準確率較低,爲 43.08%,貝葉斯分類器的準確 率較以前的數據集(Monk ’ s problem)有明顯的提升,從 49% 到了 80% 左右,這主 要是由於樣本空間的擴大,其餘的分類器準確率也處於 80% 左右。

分類速度比較

DecisionTable 的分類花了 4.33 秒,Bagging 的分類花了 3.92 秒,J48 的分類模型創建花了 2.06 秒,相對於其餘的分類器,這三個分類器速度較慢。

分類器參數調優

IBK 調優

【 KNN 】:6

擴大鄰近學習的節點範圍,下降異常點的干擾(距離較大的異常點)

 【 DistanceWeighting 】:Weight by 1/distance

經過修改距離權重,進一步下降異常點的干擾(距離較大的異常點)

IBK 調優結果

調優後準確率從 90.36% 上升到 90.98%, 準確度有略微提高,說明經過擴大鄰近學習的節點範圍不能明顯提升分類器的性能。

表 5. IBk 調優結果
Data Source Category Classifier Correctly Classified Mean absolute error Root relative squared error Time taken
(Seconds)
Test Data Lazy IBk 90.98% 0.0395 0.1478 0.02

J48 調優

【 binarySplits 】:True

採用 2 分法,生成決策樹。

J48 調優結果

分類性能沒有提高。說明採用 2 分法對分類沒有影響。相反,時間比原來的算法有略微延長。

表 6. J48 調優結果
Data Source Category Classifier Correctly Classified Mean absolute error Root relative squared error Time taken
(Seconds)
Test Data Trees J48 86.47% 0.0484 0.2033 2.23
相關文章
相關標籤/搜索