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方法相對於大多數其他學習演算法而言。不會非常easy出現過擬合現象。

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個近期鄰點。

眼下經常使用的解決方法是事先對已知樣本點進行剪輯,事先去除對分類作用不大的樣本。該演算法比較適用於樣本容量比較大的類域的自己主動分類,而那些樣本容量較小的類域採用這樣的演算法比較easy產生誤分。
演算法分類步驟例如以下:
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、首先利用訓練資料集來構造一棵決策樹,一旦樹建立起來,它就可為未知樣本產生一個分類。在分類問題中使用決策樹模型有非常多的長處。決策樹便於使用。並且高效。依據決策樹能夠
非常easy地構造出規則,而規則通常易於解釋和理解;決策樹可非常好地擴充套件到大型資料庫中,同一時候它的大小獨立於資料庫的大小;決策樹模型的另外一大長處就是能夠對有很多屬性的資料集構造決策樹。

決策樹模型也有一些缺點,比方處理缺失資料時的困難,過度擬合問題的出現。以及忽略資料集中屬性之間的相關性等。

 
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方法也能夠覺得是一種前剪枝;後剪枝是指構造出完整的決策樹之後再來考查哪些子樹能夠剪掉。

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

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