數據挖掘與推薦系統算法工程師

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)對初值敏感。對于不同的初始值??赡軙е虏煌木垲惤Y果。


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

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

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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容