1. 程式人生 > >資料探勘十大經典演算法(詳解)

資料探勘十大經典演算法(詳解)

                                                       資料探勘十大經典演算法

 一、 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.      對已生成的決策樹進行裁剪,減小生成樹的規模.

二、資料探勘十大經典演算法(2) 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可能返回較差的結果。另外,演算法還假設均方誤差是計算群組分散度的最佳引數。

三、資料探勘十大經典演算法(3) 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維的超平面分開,通常這個被稱為線性分類器。有很多分類器都符合這個要求,但是我們還希望找到分類最佳的平面,即使得屬於兩個不同類的資料點間隔最大的那個面,該面亦稱為最大間隔超平面。如果我們能夠找到這個面,那麼這個分類器就稱為最大間隔分類器。 
四、資料探勘十大經典演算法(4)Apriori 
Apriori演算法是種最有影響的挖掘布林關聯規則頻繁項集的演算法。它的核心是基於兩階段頻集思想的遞推演算法。該關聯規則在分類上屬於單維、單層、布林關聯規則。在這裡,所有支援度大於最小支援度的項集稱為頻繁項集(簡稱頻集),也常稱為最大專案集。
在Apriori演算法中,尋找最大專案集(頻繁項集)的基本思想是:演算法需要對資料集進行多步處理。第一步,簡單統計所有含一個元素專案集出現的頻數,並找出那些不小於最小支援度的專案集,即一維最大專案集。從第二步開始迴圈處理直到再沒有最大專案集生成。迴圈過程是:第k步中,根據第k-1步生成的(k-1)維最大專案集產生k維侯選專案集,然後對資料庫進行搜尋,得到侯選專案集的項集支援度,與最小支援度進行比較,從而找到k維最大專案集。

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

(1)在每一步產生侯選專案集時迴圈產生的組合過多,沒有排除不應該參與組合的元素;

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

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

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

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

應用於缺失值

最大期望過程說明
我們用  表示能夠觀察到的不完整的變數值,用  表示無法觀察到的變數值,這樣  和  一起組成了完整的資料。 可能是實際測量丟失的資料,也可能是能夠簡化問題的隱藏變數,如果它的值能夠知道的話。例如,在混合模型(Mixture Model)中,如果“產生”樣本的混合元素成分已知的話最大似然公式將變得更加便利(參見下面的例子)。

估計無法觀測的資料
讓  代表向量 :  定義的引數的全部資料的概率分佈(連續情況下)或者概率聚類函式(離散情況下),那麼從這個函式就可以得到全部資料的最大似然值,另外,在給定的觀察到的資料條件下未知資料的條件分佈可以表示為:


六、資料探勘十大經典演算法(6) 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匯出連結數量

七、資料探勘十大經典演算法(7) AdaBoost 

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

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

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


AdaBoost方法是一種迭代演算法,在每一輪中加入一個新的弱分類器,直到達到某個預定的足夠小的錯誤率。每一個訓練樣本都被賦予一個權重,表明它被某個分類器選入訓練集的概率。

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

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

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

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

八、資料探勘十大經典演算法(8) 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-最近鄰居的距離倒數加權平均。

九、資料探勘十大經典演算法(9) 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、分類決策存在錯誤率
由於貝葉斯分類是在樣本取得某特徵值時對它屬於各類的概率進行推測,並無法獲得樣本真實的類別歸屬情況,所以分類決策一定存在錯誤率,即使錯誤率很低,分類錯誤的情況也可能發生。

十、資料探勘十大經典演算法(10) 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方法也可以認為是一種前剪枝;後剪枝是指構造出完整的決策樹之後再來考查哪些子樹可以剪掉。

在分類迴歸樹中可以使用的後剪枝方法有多種,比如:代價複雜性剪枝、最小誤差剪枝、悲觀誤差剪枝等等。這裡我們只介紹代價複雜性剪枝法。

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