數據挖掘中經常使用的十個重要算法算法
1、 C4.5
C4.5算法是機器學習算法中的一種分類決策樹算法,其核心算法是ID3 算法. C4.5算法繼承了ID3算法的長處。並在下面幾方面對ID3算法進行了改進:
1) 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足。
2) 在樹構造過程當中進行剪枝;
3) 能夠完畢對連續屬性的離散化處理;
4) 能夠對不完整數據進行處理。
C4.5算法有例如如下長處:產生的分類規則易於理解,準確率較高。其缺點是:在構造樹的過程當中,需要對數據集進行屢次的順序掃描和排序,於是致使算法的低效。數據庫
一、機器學習中。決策樹是一個預測模型。他表明的是對象屬性與對象值之間的一種映射關係。樹中每個節點表示某個對象,而每個分叉路徑則表明的某個可能的屬性值,而每個葉結點則
相應從根節點到該葉節點所經歷的路徑所表示的對象的值。決策樹僅有單一輸出。若欲有複數輸出,可以創建獨立的決策樹以處理不一樣輸出。swift
二、 從數據產生決策樹的機器學習技術叫作決策樹學習, 通俗說就是決策樹。
三、決策樹學習也是數據挖掘中一個普通的方法。在這裏,每個決策樹都表述了一種樹型結構,他由他的分支來對該類型的對象依靠屬性進行分類。每個決策樹可以依靠對源數據庫的切割
進行數據測試。api
這個過程可以遞歸式的對樹進行修剪。網絡
當不能再進行切割或一個單獨的類可以被應用於某一分支時。遞歸過程就完畢了。機器學習
另外。隨機森林分類器將不少決策樹結合起來
以提高分類的正確率。函數
決策樹是怎樣工做的?
一、決策樹通常都是自上而下的來生成的。工具
二、選擇切割的方法有好幾種,但是目的都是一致的:對目標類嘗試進行最佳的切割。性能
三、從根到葉子節點都有一條路徑,這條路徑就是一條―規則
四、決策樹可以是二叉的,也可以是多叉的。
對每個節點的衡量:
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))最小的
的特徵來生成子樹.
三、 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、數據挖掘十大經典算法(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算法提出一些改進:
一是數據預處理,
二是初始聚類中心選擇。
三是迭代過程當中聚類種子的選擇。
一、首先對樣本數據進行正規化處理,這樣就能防止某些大值屬性的數據左右樣本間的距離。給定一組含有n個數據的數據集,每一個數據含有m個屬性。分別計算每一個屬性的均值、標準差對每條數據進行標準化。
三、其次,初始聚類中心的選擇對最後的聚類效果有很是大的影響,原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、數據挖掘十大經典算法(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、數據挖掘十大經典算法(4)Apriori
Apriori算法是種最有影響的挖掘布爾關聯規則頻繁項集的算法。它的核心是基於兩階段頻集思想的遞推算法。該關聯規則在分類上屬於單維、單層、布爾關聯規則。
在這裏,所有支持度大於最小支持度的項集稱爲頻繁項集(簡稱頻集),也常稱爲最大項目集。
在Apriori算法中,尋找最大項目集(頻繁項集)的基本思想是:算法需要對數據集進行多步處理。第一步,簡單統計所有含一個元素項目集出現的頻數,並找出那些不小於最小支持度的項目集,即一維最大項目集。從第二步開始循環處理直到再沒有最大項目集生成。循環過程是:第k步中,依據第k-1步生成的(k-1)維最大項目集產生k維侯選項目集。而後對數據庫進行搜索,獲得侯選項目集的項集支持度。與最小支持度進行比較,從而找到k維最大項目集。
從算法的執行過程。咱們可以看出該Apriori算法的長處:簡單、易理解、數據要求低。然而咱們也可以看到Apriori算法的缺點:
(1)在每一步產生侯選項目集時循環產生的組合過多,沒有排除不該該參與組合的元素;
(2)每次計算項集的支持度時,都對數據庫D中的全部記錄進行了一遍掃描比較。假設是一個大型的數據庫的話,這樣的掃描比較會大大添加計算機系統的I/O開銷。而這樣的代價是隨着數據庫的記錄的添加呈現出幾何級數的添加。
所以人們開始尋求更好性能的算法。如F-P算法。
5、數據挖掘十大經典算法(5) EM
最大指望算法(Expectation-maximization algorithm。又譯指望最大化算法)在統計中被用於尋找,依賴於不可觀察的隱性變量的機率模型中,參數的最大似然預計。
在統計計算中,最大指望(EM)算法是在機率模型中尋找參數最大似然預計或者最大後驗預計的算法。當中機率模型依賴於沒法觀測的隱藏變量(Latent Variable)。最大指望經常用在機器學習和計算機視覺的數據聚類(Data Clustering)領域。
最大指望算法通過兩個步驟交替進行計算,第一步是計算指望(E),利用對隱藏變量的現有預計值,計算其最大似然預計值;第二步是最大化(M)。最大化在 E 步上求得的最大似然值來計算參數的值。M 步上找到的參數預計值被用於下一個 E 步計算中,這個過程不斷交替進行。
M是一個在已知部分相關變量的狀況下,預計未知變量的迭代技術。EM的算法流程例如如下:
應用於缺失值
最大指望過程說明
咱們用 表示能夠觀察到的不完整的變量值,用 表示沒法觀察到的變量值,這樣 和 一塊兒組成了完整的數據。
多是實際測量丟失的數據,也多是能夠簡化問題的隱藏變量,假設它的值能夠知道的話。好比,在混合模型(Mixture Model)中,假設「產生」樣本的混合元素成分已知的話最大似然公式將變得更加便利(參見如下的樣例)。
預計沒法觀測的數據
讓 表明矢量 : 定義的參數的全部數據的機率分佈(連續狀況下)或者機率聚類函數(離散狀況下),那麼從這個函數就可以獲得全部數據的最大似然值,另外。在給定的觀察到的數據條件下未知數據的條件分佈可以表示爲:
6、數據挖掘十大經典算法(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、數據挖掘十大經典算法(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、數據挖掘十大經典算法(8) kNN
一、K近期鄰(k-Nearest Neighbor。KNN)分類算法。是一個理論上比較成熟的方法。也是最簡單的機器學習算法之中的一個。該方法的思路是:假設一個樣本在特徵空間中的k個最類似(即特徵空
間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。
二、KNN算法中,所選擇的鄰居都是已經正確分類的對象。
該方法在定類決策上僅僅根據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。
KNN方法儘管從原理上也依賴於極限定理。但在類別決策時,僅僅與極少許的相鄰樣本有關。由於KNN方法主要靠周圍有限的鄰近的樣本。
而不是靠判別類域的方法來肯定所屬類別的,所以對於類域的交叉或重疊較多的待分樣本集來講,KNN方法較其它方法更爲適合。
三、KNN算法不只可以用於分類,還可以用於迴歸。經過找出一個樣本的k個近期鄰居,將這些鄰居的屬性的平均值賦給該樣本,就可以獲得該樣本的屬性。
更實用的方法是將不一樣距離的
鄰居對該樣本產生的影響給予不一樣的權值(weight),如權值與距離成正比。
四、該算法在分類時有個基本的不足是,當樣本不平衡時,如一個類的樣本容量很是大,而其它類樣本容量很是小時,有可能致使當輸入一個新樣本時,該樣本的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近鄰點肯定測試點的值。該算法的功能有:
一、從目標區域抽樣計算歐式或馬氏距離;
二、在交叉驗證後的RMSE基礎上選擇啓示式最優的K鄰域;
三、計算多元k-近期鄰居的距離倒數加權平均。
9、數據挖掘十大經典算法(9) Naive Baye
簡單介紹
貝葉斯分類的基礎是機率推理。就是在各類條件的存在不肯定。僅知其出現機率的狀況下,怎樣完畢推理和決策任務。機率推理是與肯定性推理相相應的。
而樸素貝葉斯分類器是基於獨立若是的,即若是樣本每個特徵與其它特徵都不相關。舉個樣例,若是一種水果其具備紅。圓,直徑大概4英寸等特徵。該水果可以被斷定爲是蘋果。
雖然這些特徵相互依賴或者有些特徵由其它特徵決定。然而樸素貝葉斯分類器以爲這些屬性在斷定該水果是否爲蘋果的機率分佈上獨立的。樸素貝葉斯分類器依靠精確的天然機率模型,在有監督學習的樣本集中能獲取得很好的分類效果。在不少實際應用中。樸素貝葉斯模型參數預計使用最大似然預計方法。換而言之樸素貝葉斯模型能工做並沒實用到貝葉斯機率或者不論什麼貝葉斯模型。
雖然是帶着這些樸素思想和過於簡單化的若是,但樸素貝葉斯分類器在很是多複雜的現實情形中仍能夠取得至關好的效果。2004年。一篇分析貝葉斯分類器問題的文章揭示了樸素貝葉斯分類器取得看上去難以想象的分類效果的若干理論上的緣由。
雖然如此,2006年有一篇文章具體比較了各類分類方法,發現更新的方法(如boosted trees和隨機森林)的性能超過了貝葉斯分類器。
樸素貝葉斯分類器的一個優點在於僅僅需要依據少許的訓練數據預計出必要的參數(變量的均值和方差)。由於變量獨立若是,僅僅需要預計各個變量的方法。而不需要肯定整個協方差矩陣。
兩種分類模型:
分類是將一個未知樣本分到幾個預先已知類的過程。
數據分類問題的解決是一個兩步過程:
第一步,創建一個模型,描寫敘述預先的數據集或概念集。經過分析由屬性描寫敘述的樣本(或實例,對象等)來構造模型。
假定每一個樣本都有一個預先定義的類,由一個被稱爲類標籤的屬性
肯定。爲創建模型而被分析的數據元組造成訓練數據集。該步也稱做有指導的學習。 在衆多的分類模型中,應用最爲普遍的兩種分類模型是:
決策樹模型(Decision Tree Model)和樸素貝葉斯模型(Naive Bayesian Model,NBC)。
決策樹模型經過構造樹來解決分類問題。
一、首先利用訓練數據集來構造一棵決策樹,一旦樹創建起來,它就可爲未知樣本產生一個分類。在分類問題中使用決策樹模型有很是多的長處。決策樹便於使用。而且高效。依據決策樹可以
很是easy地構造出規則,而規則一般易於解釋和理解;決策樹可很是好地擴展到大型數據庫中,同一時候它的大小獨立於數據庫的大小;決策樹模型的另一大長處就是可以對有不少屬性的數據集構造決策樹。
決策樹模型也有一些缺點,比方處理缺失數據時的困難,過分擬合問題的出現。以及忽略數據集中屬性之間的相關性等。
二、和決策樹模型相比,樸素貝葉斯模型發源於古典數學理論,有着堅實的數學基礎,以及穩定的分類效率。同一時候。NBC模型所需預計的參數很是少。對缺失數據不太敏感,算法也比較簡單。
理論上,NBC模型與其它分類方法相比具備最小的偏差率。
但是實際上並非老是如此。這是因爲NBC模型若是屬性之間相互獨立,這個若是在實際應用中每每是不成立的。這給NBC
模型的正確分類帶來了必定影響。在屬性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。而在屬性相關性較小時,NBC模型的性能最爲良好。
貝葉斯分類器特色
一、 需要知道先驗機率
先驗機率是計算後驗機率的基礎。在傳統的機率理論中。先驗機率可以由大量的反覆實驗所得到的各種樣本出現的頻率來近似得到。其基礎是「大數定律」。這一思想稱爲「頻率主義」。而在稱爲「貝葉斯主義」的數理統計學派中,他們以爲時間是單向的,不少事件的發生不具備可反覆性,所以先驗機率僅僅能依據對置信度的主觀斷定來給出,也可以說由「信仰」來肯定。
二、依照得到的信息對先驗機率進行修正
在沒有得到不論什麼信息的時候,假設要進行分類判別,僅僅能根據各種存在的先驗機率。將樣本劃分到先驗機率大的一類中。而在得到了不少其它關於樣本特徵的信息後。可以按照貝葉斯公式對先驗機率進行修正,獲得後驗機率。提升分類決策的準確性和置信度。
三、分類決策存在錯誤率
由於貝葉斯分類是在樣本取得某特徵值時對它屬於各種的機率進行猜測,並沒有法得到樣本真實的類別歸屬狀況,因此分類決策必定存在錯誤率,即便錯誤率很是低。分類錯誤的狀況也可能發生。
10、數據挖掘十大經典算法(10) CART
分類迴歸樹(CART,Classification And Regression Tree)也屬於一種決策樹。分類迴歸樹是一棵二叉樹,且每個非葉子節點都有兩個孩子,因此對於第一棵子樹其葉子節點數比非葉子節點數多1。
決策樹生長的核心是肯定決策樹的分枝準則。
一、 怎樣從衆多的屬性變量中選擇一個當前的最佳分支變量。
也就是選擇能使異質性降低最快的變量。
異質性的度量:GINI、TWOING、least squared deviation。
前兩種主要針對分類型變量,LSD針對連續性變量。
代理劃分、加權劃分、先驗機率
二、 怎樣從分支變量的衆多取值中找到一個當前的最佳切割點(切割閾值)。
(1) 切割閾值:
A、數值型變量——對記錄的值從小到大排序,計算每個值做爲臨界點產生的子節點的異質性統計量。
能夠使異質性減少程度最大的臨界值即是最佳的劃分點。
B、分類型變量——列出劃分爲兩個子集的所有可能組合。計算每種組合下生成子節點的異質性。相同。找到使異質性減少程度最大的組合做爲最佳劃分點。
在決策樹的每一個節點上咱們可以按任一個屬性的任一個值進行劃分。按哪一種劃分最好呢?有3個標準可以用來衡量劃分的好壞:GINI指數、雙化指數、有序雙化指數。
終止條件:
一個節點產生左右孩子後,遞歸地對左右孩子進行劃分就能夠產生分類迴歸樹。這裏的終止條件是什麼?何時節點就可以中止分裂了?
知足下面一個即中止生長。
(1) 節點達到全然純性;
(2) 數樹的深度達到用戶指定的深度。
(3) 節點中樣本的個數少於用戶指定的個數;
(4) 異質性指標降低的最大幅度小於用戶指定的幅度。
剪枝
當分類迴歸樹劃分得太細時,會對噪聲數據產生過擬合做用。所以咱們要經過剪枝來解決。
剪枝又分爲前剪枝和後剪枝:前剪枝是指在構造樹的過程當中就知道哪些節點可以剪掉。因而乾脆不正確這些節點進行分裂。在N皇后問題和揹包問題中用的都是前剪枝。上面的χ2方法也可以以爲是一種前剪枝;後剪枝是指構造出完整的決策樹以後再來考查哪些子樹可以剪掉。
在分類迴歸樹中可以使用的後剪枝方法有多種,比方:代價複雜性剪枝、最小偏差剪枝、悲觀偏差剪枝等等。這裏咱們僅僅介紹代價複雜性剪枝法。
預測迴歸樹——預測值爲葉節點目標變量的加權均值分類樹——某葉節點預測的分類值應是形成錯判損失最小的分類值。