數據挖掘十大經典算法

 一、 C4.5  

C4.5算法是機器學習算法中的一種分類決策樹算法,其核心算法是ID3 算法.   C4.5算法繼承了ID3算法的優點,並在以下幾方面對ID3算法進行了改進:  
1) 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;  
2) 在樹構造過程中進行剪枝;  
3) 能夠完成對連續屬性的離散化處理;  
4) 能夠對不完整數據進行處理。  
C4.5算法有如下優點:產生的分類規則易於理解,準確率較高。其缺點是:在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致算法的低效。

1、機器學習中,決策樹是一個預測模型;他代表的是對象屬性與對象值之間的一種映射關係。樹中每個節點表示某個對象,而每個分叉路徑則代表的某個可能的屬性值,而每個葉結點則 
對應從根節點到該葉節點所經歷的路徑所表示的對象的值。決策樹僅有單一輸出,若欲有複數輸出,可以建立獨立的決策樹以處理不同輸出。  
2、 從數據產生決策樹的機器學習技術叫做決策樹學習,  通俗說就是決策樹。  
3、決策樹學習也是數據挖掘中一個普通的方法。在這裏,每個決策樹都表述了一種樹型結構,他由他的分支來對該類型的對象依靠屬性進行分類。每個決策樹可以依靠對源數據庫的分割 
進行數據測試。這個過程可以遞歸式的對樹進行修剪。當不能再進行分割或一個單獨的類可以被應用於某一分支時,遞歸過程就完成了。另外,隨機森林分類器將許多決策樹結合起來 
以提升分類的正確率。 

決策樹是如何工作的?   
1、決策樹一般都是自上而下的來生成的。  
2、選擇分割的方法有好幾種,但是目的都是一致的:對目標類嘗試進行最佳的分割。 
3、從根到葉子節點都有一條路徑,這條路徑就是一條―規則  
4、決策樹可以是二叉的,也可以是多叉的。  
對每個節點的衡量:  
1)         通過該節點的記錄數  
2)         如果是葉子節點的話,分類的路徑  
3)         對葉子節點正確分類的比例。  
有些規則的效果可以比其他的一些規則要好。  
由於ID3算法在實際應用中存在一些問題,於是Quilan提出了C4.5算法,嚴格上說C4.5只能是ID3的一個改進算法。相信大家對ID3算法都很.熟悉了,這裏就不做介紹。  
C4.5算法繼承了ID3算法的優點, 並在以下幾方面對ID3算法進行了改進:  
1) 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足; 
2) 在樹構造過程中進行剪枝;  
3) 能夠完成對連續屬性的離散化處理;  
4) 能夠對不完整數據進行處理。  
C4.5算法有如下優點:產生的分類規則易於理解,準確率較高。其缺點是:在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致算法的低效。此外,C4.5只適合於 
能夠駐留於內存的數據集,當訓練集大得無法在內存容納時程序無法運行。  來自搜索的其他內容:  
 C4.5算法是機器學習算法中的一種分類決策樹算法,其核心算法是ID3算法.  分類決策樹算法是從大量事例中進行提取分類規則的自上而下的決策樹. 決策樹的各部分是:  
             根:    學習的事例集.  
             枝:    分類的判定條件.  
             葉:    分好的各個類.  

  ID3算法  
   1.概念提取算法CLS  
1)      初始化參數C={E},E包括所有的例子,爲根.  
2)        IF      C中的任一元素e同屬於同一個決策類則創建一個葉子      
               節點YES終止.  
           ELSE      依啓發式標準,選擇特徵Fi={V1,V2,V3,...Vn}並創建  
                       判定節點  
   
劃分C爲互不相交的N個集合C1,C2,C3,...,Cn;  
3)      對任一個Ci遞歸.  
    2.      ID3算法  
1)      隨機選擇C的一個子集W    (窗口).  
2)      調用CLS生成W的分類樹DT(強調的啓發式標準在後).  
3)      順序掃描C蒐集DT的意外(即由DT無法確定的例子).  
4)      組合W與已發現的意外,形成新的W.  
  
  
5)      重複2)到4),直到無例外爲止.  
   
啓發式標準:  
       只跟本身與其子樹有關,採取信息理論用熵來量度.  
       熵是選擇事件時選擇自由度的量度,其計算方法爲  
               P    =    freq(Cj,S)/|S|;  
       INFO(S)=    -    SUM(    P*LOG(P)    )    ;        SUM()函數是求j 從1到n和.  
       Gain(X)=Info(X)-Infox(X);  
       Infox(X)=SUM(    (|Ti|/|T|)*Info(X);  
爲保證生成的決策樹最小,ID3 算法在生成子樹時,選取使生成的子樹的熵(即Gain(S))最小的 
的特徵來生成子樹.  
   
  3、  ID3算法對數據的要求  
1).      所有屬性必須爲離散量.  
2).      所有的訓練例的所有屬性必須有一個明確的值.  
3).      相同的因素必須得到相同的結論且訓練例必須唯一.  
   
   C4.5對ID3算法的改進:  
       1.      熵的改進,加上了子樹的信息.  
             Split_Infox(X)=    -    SUM(      (|T|/|Ti|    )    *LOG(|Ti|/|T|)      );  
             Gain    ratio(X)=      Gain(X)/Split    Infox(X);  
        2.      在輸入數據上的改進.  
         1)  
因素屬性的值可以是連續量,C4.5 對其排序並分成不同的集合後按照ID3 算法當作離散量進 行處理,但結論屬性的值必須是離散值.  
       2)    訓練例的因素屬性值可以是不確定的,以    ?    表示,但結論必須是確定的  
       3.      對已生成的決策樹進行裁剪,減小生成樹的規模. 

二、k-means  

術語“k-means”最早是由James MacQueen在1967年提出的,這一觀點可以追溯到1957年 Hugo Steinhaus所提出的想法。1957年,斯圖亞特·勞埃德最先提出這一標準算法,當初是作爲一門應用於脈碼調製的技術,直到1982年,這一算法纔在貝爾實驗室被正式提出。1965年, E.W.Forgy發表了一個本質上是相同的方法,1975年和1979年,Hartigan和Wong分別提出了一個更高效的版本。 
算法描述 
輸入:簇的數目k;包含n個對象的數據集D。 
輸出:k個簇的集合。 
方法: 
從D中任意選擇k個對象作爲初始簇中心; 
repeat; 
根據簇中對象的均值,將每個對象指派到最相似的簇; 
更新簇均值,即計算每個簇中對象的均值; 
計算準則函數; 
until準則函數不再發生變化。 
算法的性能分析 
   1)優點 
(1)k-平均算法是解決聚類問題的一種經典算法,算法簡單、快速。 
(2)對處理大數據集,該算法是相對可伸縮的和高效率的,因爲它的複雜度大約是O(nkt),其中n是所有對象的數目,k是簇的數目,t是迭代的次數。通常k<<n。這個算法經常以局部最優結束。 
(3)算法嘗試找出使平方誤差函數值最小的k個劃分。當簇是密集的、球狀或團狀的,而簇與簇之間區別明顯時,它的聚類效果很好。 
   2)缺點 
(1)k-平均方法只有在簇的平均值被定義的情況下才能使用,不適用於某些應用,如涉及有分類屬性的數據不適用。 
(2)要求用戶必須事先給出要生成的簇的數目k。 
(3)對初值敏感,對於不同的初始值,可能會導致不同的聚類結果。 
(4)不適合於發現非凸面形狀的簇,或者大小差別很大的簇。 
(5)對於"噪聲"和孤立點數據敏感,少量的該類數據能夠對平均值產生極大影響。 
算法的改進 
針對算法存在的問題,對K-means算法提出一些改進: 
一是數據預處理, 
二是初始聚類中心選擇, 
三是迭代過程中聚類種子的選擇。 
1、首先對樣本數據進行正規化處理,這樣就能防止某些大值屬性的數據左右樣本間的距離。給定一組含有n個數據的數據集,每個數據含有m個屬性,分別計算每一個屬性的均值、標準差對每條數據進行標準化。 
3、其次,初始聚類中心的選擇對最後的聚類效果有很大的影響,原K-means算法是隨機選取k個數據作爲聚類中心,而聚類的結果要是同類間儘可能相似,不同類間儘可能相異,所以初始聚類中心的選取要儘可能做到這一點。採用基於距離和的孤立點定義來進行孤立點的預先篩選,並利用兩兩數據之間的最大距離在剩餘數據集合中尋找初始聚類中心。但對於實際數據,孤立點個數往往不可預知。在選擇初始聚類中心時,先將孤立點納入統計範圍,在樣本中計算對象兩兩之間的距離,選出距離最大的兩個點作爲兩個不同類的聚類中心,接着從其餘的樣本對象中找出已經選出來的所有聚類中心的距離和最大的點爲另一個聚類中心,直到選出k個聚類中心。這樣做就降低了樣本輸入順序對初始聚類中心選擇的影響。 
聚類中心選好以後,就要進行不斷的迭代計算,在K-means算法中,是將聚類均值點(類中所有數據的幾何中心點)作爲新的聚類種子進行新一輪的聚類計算,在這種情況下,新的聚類種子可能偏離真正的數據密集區,從而導致偏差,特別是在有孤立點存在的情況下,有很大的侷限性。在選擇初始中心點時,由於將孤立點計算在內,所以在迭代過程中要避免孤立點的影響。這裏根據聚類種子的計算時,採用簇中那些與第k-1輪聚類種子相似度較大的數據,計算他們的均值點作爲第k輪聚類的種子,相當於將孤立點排除在外,孤立點不參與聚類中心的計算,這樣聚類中心就不會因爲孤立點的原因而明顯偏離數據集中的地方。在計算聚類中心的時候,要運用一定的算法將孤立點排除在計算均值點那些數據之外,這裏主要採用類中與聚類種子相似度大於某一閾值的數據組成每個類的一個子集,計算子集中的均值點作爲下一輪聚類的聚類種子。爲了能讓更多的數據參與到聚類中心的計算種去,閾值範圍要包含大多數的數據。在第k-1輪聚類獲得的類,計算該類中所有數據與該類聚類中心的平均距離S,選擇類中與聚類種子相似度大於2S的數據組成每個類的一個子集,以此子集的均值點作爲第k輪聚類的聚類種子。在數據集中無論是否有明顯的孤立點存在,兩倍的平均距離都能包含大多數的數據。 
對孤立點的改進—基於距離法 
經典k均值算法中沒有考慮孤立點。所謂孤立點都是基於距離的, 是數據U集中到U中最近鄰居的距離最大的對象, 換言之, 數據集中與其最近鄰居的平均距離最大的對象。針對經典k均值算法易受孤立點的影響這一問題, 基於距離法移除孤立點, 具體過程如下: 
首先掃描一次數據集, 計算每一個數據對象與其臨近對象的距離, 累加求其距離和, 並計算出距離和均值。如果某個數據對象的距離和大於距離和均值, 則視該點爲孤立點。把這個對象從數據集中移除到孤立點集合中, 重複直到所有孤立點都找到。最後得到新的數據集就是聚類的初始集合。 
對隨機選取初始聚類中心的改進 
經典k均值算法隨機選取k個點作爲初始聚類中心進行操作。由於是隨機選取, 則變化較大, 初始點選取不同, 獲得聚類的結果也不同。並且聚類分析得到的聚類的準確率也不一樣。對k均值算法的初始聚類中心選擇方法—隨機法進行改進, 其依據是聚類過程中相同聚類中的對象是相似的, 相異聚類中的對象是不相似的。因此提出了一種基於數據對象兩兩間的距離來動態尋找並確定初始聚類中心的思路, 具體過程如下: 
首先整理移除孤立點後的數據集U,記錄數據個數y,令m=1。比較數據集中所有數據對象兩兩之間的距離。找出距離最近的2個數據對象形成集合Am;比較Am中每一個數據對象與數據對象集合U中每一個對象的距離,在U中找出與Am 中最近的數據對象,優先吸收到Am 中,直到Am 中的數據對象個數到達一定數值,然後令m=m+1。再從U中找到對象兩兩間距離最近的2個數據對象構成Am,重複上面的過程,直到形成k個對象集合。這些集合內部的數據是相似的,而集合間是相異的。 可以看出,這種聚類方法同時滿足以下2個條件:①每個組至少包含一個數據對象; ②每個數據對象必須屬於且僅屬於一個組。即數據對象Xi ∈Ai ,且U={{A1 ∪A2 ∪…∪Ak} ∪A0} ,且Ai ∩Aj =Φ。最後對k個對象集合分別進行算術平均,形成k個初始聚類中心。 
  
近似的k平均算法已經被設計用於原始數據子集的計算。 從算法的表現上來說,它並不保證一定得到全局最優解,最終解的質量很大程度上取決於初始化的分組。由於該算法的速度很快,因此常用的一種方法是多次運行k平均算法,選擇最優解。  
k平均算法的一個缺點是,分組的數目k是一個輸入參數,不合適的k可能返回較差的結果。另外,算法還假設均方誤差是計算羣組分散度的最佳參數。

三、Svm  

支持向量機,英文爲Support  Vector  Machine,簡稱SV機(論文中一般簡稱SVM)。它是一 
種監督式學習的方法,它廣泛的應用於統計分類以及迴歸分析中。  
   
支持向量機屬於一般化線性分類器.他們也可以認爲是提克洛夫規範化(Tikhonov  Regularization)方法的一個特例.這族分類器的特點是他們能夠同時最小化經驗誤差與最大化 
幾何邊緣區.因此支持向量機也被稱爲最大邊緣區分類器。在統計計算中,最大期望(EM) 算法是在概率(probabilistic)模型中尋找參數最大似然估計的算法,其中概率模型依賴於無 
法觀測的隱藏變量(Latent  Variabl)。最大期望經常用在機器學習和計算機視覺的數據集聚 (Data Clustering)領域。最大期望算法經過兩個步驟交替進行計算:

第一步是計算期望(E), 也就是將隱藏變量象能夠觀測到的一樣包含在內從而計算最大似然的期望值;

另外一步是最 大化(M),也就是最大化在  E 步上找到的最大似然的期望值從而計算參數的最大似然估計。 M 步上找到的參數然後用於另外一個  E 步計算,這個過程不斷交替進行。  
   
Vapnik等人在多年研究統計學習理論基礎上對線性分類器提出了另一種設計最佳準則。其原 理也從線性可分說起,然後擴展到線性不可分的情況。甚至擴展到使用非線性函數中去,這 
種分類器被稱爲支持向量機(Support Vector Machine,簡稱SVM)。支持向量機的提出有很深的 理論背景。支持向量機方法是在近年來提出的一種新方法。  
SVM 的主要思想可以概括爲兩點:  

 (1) 它是針對線性可分情況進行分析,對於線性不可分 的情況,通過使用非線性映射算法將低維輸入空間線性不可分的樣本轉化爲高維特徵空間使 
其線性可分,從而使得高維特徵空間採用線性算法對樣本的非線性特徵進行線性分析成爲可 能;

(2) 它基於結構風險最小化理論之上在特徵空間中建構最優分割超平面,使得學習器得 到全局最優化,並且在整個樣本空間的期望風險以某個概率滿足一定上界。  
在學習這種方法時,首先要弄清楚這種方法考慮問題的特點,這就要從線性可分的最簡單情 況討論起,在沒有弄懂其原理之前,不要急於學習線性不可分等較複雜的情況,支持向量機

在設計時,需要用到條件極值問題的求解,因此需用拉格朗日乘子理論,但對多數人來說, 以前學到的或常用的是約束條件爲等式表示的方式,但在此要用到以不等式作爲必須滿足的 條件,此時只要瞭解拉格朗日理論的有關結論就行。  
   
介紹  
支持向量機將向量映射到一個更高維的空間裏,在這個空間裏建立有一個最大間隔超平面。 在分開數據的超平面的兩邊建有兩個互相平行的超平面。分隔超平面使兩個平行超平面的距 離最大化。假定平行超平面間的距離或差距越大,分類器的總誤差越小。一個極好的指南是 C.J.C Burges的《模式識別支持向量機指南》。van der Walt 和  Barnard 將支持向量機和其他 分類器進行了比較。  
   
   
動機 

有很多個分類器(超平面)可以把數據分開,但是隻有一個能夠達到最大分割。  我們通常希望分類的過程是一個機器學習的過程。這些數據點並不需要是中的點,而可以是 任意(統計學符號)中或者  (計算機科學符號) 的點。我們希望能夠把這些點通過一個n-1維的 超平面分開,通常這個被稱爲線性分類器。有很多分類器都符合這個要求,但是我們還希望 找到分類最佳的平面,即使得屬於兩個不同類的數據點間隔最大的那個面,該面亦稱爲最大 間隔超平面。如果我們能夠找到這個面,那麼這個分類器就稱爲最大間隔分類器。  
   

四、Apriori  

Apriori算法是種最有影響的挖掘布爾關聯規則頻繁項集的算法。它的核心是基於兩階段頻集思想的遞推算法。該關聯規則在分類上屬於單維、單層、布爾關聯規則。在這裏,所有支持度大於最小支持度的項集稱爲頻繁項集(簡稱頻集),也常稱爲最大項目集。 
在Apriori算法中,尋找最大項目集(頻繁項集)的基本思想是:算法需要對數據集進行多步處理。第一步,簡單統計所有含一個元素項目集出現的頻數,並找出那些不小於最小支持度的項目集,即一維最大項目集。從第二步開始循環處理直到再沒有最大項目集生成。循環過程是:第k步中,根據第k-1步生成的(k-1)維最大項目集產生k維侯選項目集,然後對數據庫進行搜索,得到侯選項目集的項集支持度,與最小支持度進行比較,從而找到k維最大項目集。

從算法的運行過程,我們可以看出該Apriori算法的優點:簡單、易理解、數據要求低,然而我們也可以看到Apriori算法的缺點:

(1)在每一步產生侯選項目集時循環產生的組合過多,沒有排除不應該參與組合的元素;

(2)每次計算項集的支持度時,都對數據庫D中的全部記錄進行了一遍掃描比較,如果是一個大型的數據庫的話,這種掃描比較會大大增加計算機系統的I/O開銷。而這種代價是隨着數據庫的記錄的增加呈現出幾何級數的增加。因此人們開始尋求更好性能的算法,如F-P算法。 

五、EM  

 最大期望算法(Expectation-maximization algorithm,又譯期望最大化算法)在統計中被用於尋找,依賴於不可觀察的隱性變量的概率模型中,參數的最大似然估計。 
在統計計算中,最大期望(EM)算法是在概率模型中尋找參數最大似然估計或者最大後驗估計的算法,其中概率模型依賴於無法觀測的隱藏變量(Latent Variable)。最大期望經常用在機器學習和計算機視覺的數據聚類(Data Clustering)領域。最大期望算法經過兩個步驟交替進行計算,第一步是計算期望(E),利用對隱藏變量的現有估計值,計算其最大似然估計值;第二步是最大化(M),最大化在 E 步上求得的最大似然值來計算參數的值。M 步上找到的參數估計值被用於下一個 E 步計算中,這個過程不斷交替進行。 

M是一個在已知部分相關變量的情況下,估計未知變量的迭代技術。 EM的算法流程如下:

  1. 初始化分佈參數
  2. 重複直到收斂:
    1. E步驟:估計未知參數的期望值,給出當前的參數估計。
    2. M步驟:重新估計分佈參數,以使得數據的似然性最大,給出未知變量的期望估計。

應用於缺失值

最大期望過程說明 
我們用  表示能夠觀察到的不完整的變量值,用  表示無法觀察到的變量值,這樣  和  一起組成了完整的數據。 可能是實際測量丟失的數據,也可能是能夠簡化問題的隱藏變量,如果它的值能夠知道的話。例如,在混合模型(Mixture Model)中,如果“產生”樣本的混合元素成分已知的話最大似然公式將變得更加便利(參見下面的例子)。 
估計無法觀測的數據 
讓  代表矢量 :  定義的參數的全部數據的概率分佈(連續情況下)或者概率聚類函數(離散情況下),那麼從這個函數就可以得到全部數據的最大似然值,另外,在給定的觀察到的數據條件下未知數據的條件分佈可以表示爲:


六、PageRank  

PageRank,網頁排名,又稱網頁級別、Google左側排名或佩奇排名,是一種由搜索引擎根據網頁之間相互的超鏈接計算的技術,而作爲網頁排名的要素之一,以Google公司創辦人拉里·佩奇(Larry Page)之姓來命名。Google用它來體現網頁的相關性和重要性,在搜索引擎優化操作中是經常被用來評估網頁優化的成效因素之一。Google的創始人拉里·佩奇和謝爾蓋·布林於1998年在斯坦福大學發明了這項技術。


PageRank通過網絡浩瀚的超鏈接關係來確定一個頁面的等級。Google把從A頁面到B頁面的鏈接解釋爲A頁面給B頁面投票,Google根據投票來源(甚至來源的來源,即鏈接到A頁面的頁面)和投票目標的等級來決定新的等級。簡單的說,一個高等級的頁面可以使其他低等級頁面的等級提升。 

PageRank讓鏈接來"投票" 
一個頁面的“得票數”由所有鏈向它的頁面的重要性來決定,到一個頁面的超鏈接相當於對該頁投一票。一個頁面的PageRank是由所有鏈向它的頁面(“鏈入頁面”)的重要性經過遞歸算法得到的。一個有較多鏈入的頁面會有較高的等級,相反如果一個頁面沒有任何鏈入頁面,那麼它沒有等級。 
2005年初,Google爲網頁鏈接推出一項新屬性nofollow,使得網站管理員和網誌作者可以做出一些Google不計票的鏈接,也就是說這些鏈接不算作"投票"。nofollow的設置可以抵制垃圾評論。 
Google工具條上的PageRank指標從0到10。它似乎是一個對數標度算法,細節未知。PageRank是Google的商標,其技術亦已經申請專利。 
PageRank算法中的點擊算法是由Jon Kleinberg提出的。 

PageRank算法 

1.PageRank  
基本思想:如果網頁T存在一個指向網頁A的連接,則表明T的所有者認爲A比較重要,從而把T的一部分重要性得分賦予A。這個重要性得分值爲:PR(T)/C(T)  
其中PR(T)爲T的PageRank值,C(T)爲T的出鏈數,則A的PageRank值爲一系列類似於T的頁面重要性得分值的累加。  
優點:是一個與查詢無關的靜態算法,所有網頁的PageRank值通過離線計算獲得;有效減少在線查詢時的計算量,極大降低了查詢響應時間。  
不足:人們的查詢具有主題特徵,PageRank忽略了主題相關性,導致結果的相關性和主題性降低;另外,PageRank有很嚴重的對新網頁的歧視。  
2.Topic-Sensitive PageRank(主題敏感的PageRank)  
基本思想:針對PageRank對主題的忽略而提出。核心思想:通過離線計算出一個  PageRank向量集合,該集合中的每一個向量與某一主題相關,即計算某個頁面關於不同主題的得分。 
主要分爲兩個階段:主題相關的PageRank向量集合的計算和在線查詢時主題的確定。 

優點:根據用戶的查詢請求和相關上下文判斷用戶查詢相關的主題(用戶的興趣)返回查詢結果準確性高。  
不足:沒有利用主題的相關性來提高鏈接得分的準確性。  
3.Hilltop  
基本思想:與PageRank的不同之處:僅考慮專家頁面的鏈接。主要包括兩個步驟:專家頁面搜索和目標頁面排序。  
優點:相關性強,結果準確。  
不足:專家頁面的搜索和確定對算法起關鍵作用,專家頁面的質量決定了算法的準確性,而 
  
專家頁面的質量和公平性難以保證;忽略了大量非專家頁面的影響,不能反應整個Internet的民意;當沒有足夠的專家頁面存在時,返回空,所以Hilltop適合對於查詢排序進行求精。  
那麼影響google PageRank的因素有哪些呢?  
1 與pr高的網站做鏈接:  
2 內容質量高的網站鏈接  
3加入搜索引擎分類目錄  
4 加入免費開源目錄  
5 你的鏈接出現在流量大、知名度高、頻繁更新的重要網站上  
6 google對DPF格式的文件比較看重。  
7 安裝Google工具條  
8 域名和tilte標題出現關鍵詞與meta標籤等  
9 反向連接數量和反向連接的等級  
10 Google抓取您網站的頁面數量  
11導出鏈接數量

七、AdaBoost  

AdaBoost,是英文"Adaptive Boosting"(自適應增強)的縮寫,是一種機器學習方法,由Yoav Freund和Robert Schapire提出。

AdaBoost方法的自適應在於:前一個分類器分錯的樣本會被用來訓練下一個分類器。AdaBoost方法對於噪聲數據和異常數據很敏感。但在一些問題中,AdaBoost方法相對於大多數其它學習算法而言,不會很容易出現過擬合現象。

AdaBoost方法中使用的分類器可能很弱(比如出現很大錯誤率),但只要它的分類效果比隨機好一點(比如兩類問題分類錯誤率略小於0.5),就能夠改善最終得到的模型。而錯誤率高於隨機分類器的弱分類器也是有用的,因爲在最終得到的多個分類器的線性組合中,可以給它們賦予負係數,同樣也能提升分類效果。 

如果某個樣本點已經被準確地分類,那麼在構造下一個訓練集中,它被選中的概率就被降低;

相反,如果某個樣本點沒有被準確地分類,那麼它的權重就得到提高。通過這樣的方式,AdaBoost方法能“聚焦於”那些較難分(更富信息)的樣本上。

在具體實現上,最初令每個樣本的權重都相等,對於第k次迭代操作,我們就根據這些權重來選取樣本點,進而訓練分類器Ck。然後就根據這個分類器,來提高被它分錯的的樣本的權重,並降低被正確分類的樣本權重。然後,權重更新過的樣本集被用於訓練下一個分類器Ck[2]。整個訓練過程如此迭代地進行下去。 

Adaboost算法的具體步驟如下:   
1. 給定訓練樣本集  ,其中  分別對應於正例樣本和負例樣本;  爲訓練的最大循環次數;  
2. 初始化樣本權重  ,即爲訓練樣本的初始概率分佈;  
3. 第一次迭代:  
(1)  訓練樣本的概率分佈  下,訓練弱分類器:  
(2) 計算弱分類器的錯誤率:  
(3) 選取  ,使得  最小  
(4) 更新樣本權重:  
(5) 最終得到的強分類器:  
Adaboost算法是經過調整的Boosting算法,其能夠對弱學習得到的弱分類器的錯誤進行適應 
性調整。上述算法中迭代了次的主循環,每一次循環根據當前的權重分佈對樣本x定一個分 
布P,然後對這個分佈下的樣本使用若學習算法得到一個錯誤率爲的弱分類器  ,對於這個算 
法定義的弱學習算法,對所有的  ,都有,而這個錯誤率的上限並不需要事先知道,實際上。 
每一次迭代,都要對權重進行更新。更新的規則是:減小弱分類器分類效果較好的數據的概 
率,增大弱分類器分類效果較差的數據的概率。最終的分類器是個弱分類器的加權平均。 

八、 kNN  

1、K最近鄰(k-Nearest  Neighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。該方法的思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空 
間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。 
2、KNN算法中,所選擇的鄰居都是已經正確分類的對象。該方法在定類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。  KNN方法雖然從原理上也依賴於極限定理,但在類別決策時,只與極少量的相鄰樣本有關。由於KNN方法主要靠周圍有限的鄰近的樣本, 
而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更爲適合。  
3、KNN算法不僅可以用於分類,還可以用於迴歸。通過找出一個樣本的k個最近鄰居,將這些鄰居的屬性的平均值賦給該樣本,就可以得到該樣本的屬性。更有用的方法是將不同距離的 
鄰居對該樣本產生的影響給予不同的權值(weight),如權值與距離成正比。  
4、 該算法在分類時有個主要的不足是 ,當樣本不平衡時,如一個類的樣本容量很大,而其他類樣本容量很小時,有可能導致當輸入一個新樣本時,該樣本的K個鄰居中大容量類的樣本佔多數。因此可以採用權值的方法(和該樣本距離小的鄰居權值大)來改進。

      該方法的另一個不足之處是計算量較大,因爲對每一個待分類的文本都要計算它到全體已知樣本的距離,才能求得它的K個最近鄰點。目前常用的解決方法是事先對已知樣本點進行剪輯,事先去除對分類作用不大的樣本。該算法比較適用於樣本容量比較大的類域的自動分類,而那些樣本容量較小的類域採用這種算法比較容易產生誤分。 
算法分類過程如下: 
1 首先我們事先定下k值(就是指k近鄰方法的k的大小,代表對於一個待分類的數據點,我們要尋找幾個它的鄰居)。這邊爲了說明問題,我們取兩個k值,分別爲3和9; 
2 根據事先確定的距離度量公式(如:歐氏距離),得出待分類數據點和所有已知類別的樣本點中,距離最近的k個樣本。 
3 統計這k個樣本點中,各個類別的數量。根據k個樣本中,數量最多的樣本是什麼類別,我們就把這個數據點定爲什麼類別。 

訓練樣本是多維特徵空間向量,其中每個訓練樣本帶有一個類別標籤。算法的訓練階段只包含存儲的特徵向量和訓練樣本的標籤。 在分類階段,k是一個用戶定義的常數。一個沒有類別標籤的向量 (查詢或測試點)將被歸類爲最接近該點的K個樣本點中最頻繁使用的一類。

 一般情況下,將歐氏距離作爲距離度量,但是這是隻適用於連續變量。在文本分類這種非連續變量情況下,

另一個度量——重疊度量(或海明距離)可以用來作爲度量。

通常情況下,如果運用一些特殊的算法來計算度量的話,K近鄰分類精度可顯著提高,如運用大邊緣最近鄰法或者近鄰成分分析法。 
“多數表決”分類的一個缺點是出現頻率較多的樣本將會主導測試點的預測結果,那是因爲他們比較大可能出現在測試點的K鄰域而測試點的屬性又是通過K領域內的樣本計算出來的。解決這個缺點的方法之一是在進行分類時將樣本到測試點的距離考慮進去。 
K值得選擇 
如何選擇一個最佳的K值取決於數據。一般情況下,在分類時較大的K值能夠減小噪聲的影響。但會使類別之間的界限變得模糊。一個較好的K值能通過各種啓發式技術來獲取,比如,交叉驗證。 
噪聲和非相關性特徵向量的存在會使K近鄰算法的準確性減小。對於選擇特徵向量進行分類已經作了很多研究。一個普遍的做法是利用進化算法優化功能擴展[3],還有一種較普遍的方法是利用訓練樣本的互信息進行選擇特徵。 
K近鄰算法也適用於連續變量估計,比如適用反距離加權平均多個K近鄰點確定測試點的值。該算法的功能有: 
1、從目標區域抽樣計算歐式或馬氏距離; 
2、在交叉驗證後的RMSE基礎上選擇啓發式最優的K鄰域; 
3、計算多元k-最近鄰居的距離倒數加權平均。 

九、 Naive Baye 

簡介 
貝葉斯分類的基礎是概率推理,就是在各種條件的存在不確定,僅知其出現概率的情況下,如何完成推理和決策任務。概率推理是與確定性推理相對應的。而樸素貝葉斯分類器是基於獨立假設的,即假設樣本每個特徵與其他特徵都不相關。舉個例子,如果一種水果其具有紅,圓,直徑大概4英寸等特徵,該水果可以被判定爲是蘋果。 
儘管這些特徵相互依賴或者有些特徵由其他特徵決定,然而樸素貝葉斯分類器認爲這些屬性在判定該水果是否爲蘋果的概率分佈上獨立的。樸素貝葉斯分類器依靠精確的自然概率模型,在有監督學習的樣本集中能獲取得非常好的分類效果。在許多實際應用中,樸素貝葉斯模型參數估計使用最大似然估計方法,換而言之樸素貝葉斯模型能工作並沒有用到貝葉斯概率或者任何貝葉斯模型。 
儘管是帶着這些樸素思想和過於簡單化的假設,但樸素貝葉斯分類器在很多複雜的現實情形中仍能夠取得相當好的效果。2004年,一篇分析貝葉斯分類器問題的文章揭示了樸素貝葉斯分類器取得看上去不可思議的分類效果的若干理論上的原因。儘管如此,2006年有一篇文章詳細比較了各種分類方法,發現更新的方法(如boosted trees和隨機森林)的性能超過了貝葉斯分類器。樸素貝葉斯分類器的一個優勢在於只需要根據少量的訓練數據估計出必要的參數(變量的均值和方差)。由於變量獨立假設,只需要估計各個變量的方法,而不需要確定整個協方差矩陣。 

兩種分類模型:

分類是將一個未知樣本分到幾個預先已知類的過程。數據分類問題的解決是一個兩步過程:

第一步,建立一個模型,描述預先的數據集或概念集。通過分析由屬性描述的樣本(或實例,對象等)來構造模型。假定每一個樣本都有一個預先定義的類,由一個被稱爲類標籤的屬性 
確定。爲建立模型而被分析的數據元組形成訓練數據集,該步也稱作有指導的學習。 在衆多的分類模型中,應用最爲廣泛的兩種分類模型是:

決策樹模型(Decision Tree Model)和樸素貝葉斯模型(Naive  Bayesian  Model,NBC) 。

決策樹模型通過構造樹來解決分類問題。

1、首先利用訓練數據集來構造一棵決策樹,一旦樹建立起來,它就可爲未知樣本產生一個分類。在分類問題中使用決策樹模型有很多的優點,決策樹便於使用,而且高效;根據決策樹可以 
很容易地構造出規則,而規則通常易於解釋和理解;決策樹可很好地擴展到大型數據庫中,同時它的大小獨立於數據庫的大小;決策樹模型的另外一大優點就是可以對有許多屬性的數據集構造決策樹。

決策樹模型也有一些缺點,比如處理缺失數據時的困難,過度擬合問題的出現,以及忽略數據集中屬性之間的相關性等。  
2、和決策樹模型相比,樸素貝葉斯模型發源於古典數學理論,有着堅實的數學基礎,以及穩定的分類效率。同時,NBC模型所需估計的參數很少,對缺失數據不太敏感,算法也比較簡單。 
理論上,NBC模型與其他分類方法相比具有最小的誤差率。

但是實際上並非總是如此,這是因爲NBC模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,這給NBC 
模型的正確分類帶來了一定影響。在屬性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。而在屬性相關性較小時,NBC模型的性能最爲良好。  

貝葉斯分類器特點 
1、 需要知道先驗概率 
先驗概率是計算後驗概率的基礎。在傳統的概率理論中,先驗概率可以由大量的重複實驗所獲得的各類樣本出現的頻率來近似獲得,其基礎是“大數定律”,這一思想稱爲“頻率主義”。而在稱爲“貝葉斯主義”的數理統計學派中,他們認爲時間是單向的,許多事件的發生不具有可重複性,因此先驗概率只能根據對置信度的主觀判定來給出,也可以說由“信仰”來確定。 
2、按照獲得的信息對先驗概率進行修正 
在沒有獲得任何信息的時候,如果要進行分類判別,只能依據各類存在的先驗概率,將樣本劃分到先驗概率大的一類中。而在獲得了更多關於樣本特徵的信息後,可以依照貝葉斯公式對先驗概率進行修正,得到後驗概率,提高分類決策的準確性和置信度。 
3、分類決策存在錯誤率 
由於貝葉斯分類是在樣本取得某特徵值時對它屬於各類的概率進行推測,並無法獲得樣本真實的類別歸屬情況,所以分類決策一定存在錯誤率,即使錯誤率很低,分類錯誤的情況也可能發生。 

十、CART  

分類迴歸樹(CART,Classification And Regression Tree)也屬於一種決策樹, 分類迴歸樹是一棵二叉樹,且每個非葉子節點都有兩個孩子,所以對於第一棵子樹其葉子節點數比非葉子節點數多1。 

決策樹生長的核心是確定決策樹的分枝準則。 
1、 如何從衆多的屬性變量中選擇一個當前的最佳分支變量; 
也就是選擇能使異質性下降最快的變量。 
異質性的度量:GINI、TWOING、least squared deviation。 
前兩種主要針對分類型變量,LSD針對連續性變量。 
代理劃分、加權劃分、先驗概率 
2、 如何從分支變量的衆多取值中找到一個當前的最佳分割點(分割閾值)。 
(1) 分割閾值: 
 A、數值型變量——對記錄的值從小到大排序,計算每個值作爲臨界點產生的子節點的異質性統計量。能夠使異質性減小程度最大的臨界值便是最佳的劃分點。 
 B、分類型變量——列出劃分爲兩個子集的所有可能組合,計算每種組合下生成子節點的異質性。同樣,找到使異質性減小程度最大的組合作爲最佳劃分點。 
   

在決策樹的每一個節點上我們可以按任一個屬性的任一個值進行劃分。 按哪種劃分最好呢?有3個標準可以用來衡量劃分的好壞:GINI指數、雙化指數、有序雙化指數。

終止條件:

一個節點產生左右孩子後,遞歸地對左右孩子進行劃分即可產生分類迴歸樹。這裏的終止條件是什麼?什麼時候節點就可以停止分裂了? 

滿足以下一個即停止生長。 
(1) 節點達到完全純性; 
(2) 數樹的深度達到用戶指定的深度; 
(3) 節點中樣本的個數少於用戶指定的個數; 
(4) 異質性指標下降的最大幅度小於用戶指定的幅度。 

剪枝

當分類迴歸樹劃分得太細時,會對噪聲數據產生過擬合作用。因此我們要通過剪枝來解決。剪枝又分爲前剪枝和後剪枝:前剪枝是指在構造樹的過程中就知道哪些節點可以剪掉,於是乾脆不對這些節點進行分裂,在N皇后問題和揹包問題中用的都是前剪枝,上面的χ2方法也可以認爲是一種前剪枝;後剪枝是指構造出完整的決策樹之後再來考查哪些子樹可以剪掉。 
在分類迴歸樹中可以使用的後剪枝方法有多種,比如:代價複雜性剪枝、最小誤差剪枝、悲觀誤差剪枝等等。這裏我們只介紹代價複雜性剪枝法。 

預測 
迴歸樹——預測值爲葉節點目標變量的加權均值 
分類樹——某葉節點預測的分類值應是造成錯判損失最小的分類值。

發佈了128 篇原創文章 · 獲贊 36 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章