機器學習與數據挖掘中的十大經典算法
背景:
top10算法的前期背景是吳教授在香港做了一個關於數據挖掘top10挑戰的一個報告,會后有一名內地的教授提出了一個類似的想法。吳教授覺得非常好,開始着手解決這個事情。找了一系列的大牛(都是數據挖掘的大牛),都覺得想法很好,但是都不願自己干。原因估計有一下幾種:1.確實很忙2.得罪人3.一系列工作很繁瑣等等。最后和明尼蘇達大學的Vipin Kumar教授一起把這件事情承擔下來。先是請數據挖掘領域獲過kdd和icdm大獎的十四個牛人提名候選,其中一人因為確實很忙,正從ibm轉行到微軟,吳教授雖然沒提其名字,但從經歷來看,應該就是我眼中的數據挖掘之父印度人--Rakesh Agrawal,就是他沒有給出提名,其他13位都給出了自己心中的候選。經過匯總和篩選,共有18個算法,涵蓋分類,聚類,圖挖掘,關聯分析,rough set等領域。由於是算法,一些比較有影響的領域,如神經網絡,進化算法等都沒有一個特別具體的算法,只能是一個比較大的框架或者思想等,就沒有入選。匯總后,吳和Vipin Kumar就開始吵架,吳想刪掉一些算法,比如naive bayes,他覺得過於簡單,而Vipin Kumar則想添加一些,比如基於規則的挖掘算法(忘記吳是怎樣說的了,大概就是這個意思)。最后作為一個折中,誰都沒有增刪其中的算法。第二步請更多的大牛,包括其中提名的那些最大牛進行投票,每人僅有一票,最終得出了其中的10個作為最后的算法。有些人的幾個算法(韓家煒教授有三個算法成為候選,但一個也沒有進入top10)都很優秀,卻因為開創性,影響力等問題一個也沒有入選最終名單。
在大會上宣布的時候,要請一些人來講這些算法,大家都開開心心的來了,卻因為算法的前后排名不高興。(邀請的時候沒說排名,只說進入top10),cart的宣講人是該系統的擁有公司的一個技術顧問來講的(發明此算法的四位統計學家,如breiman等,由於年齡問題,其中兩位都已經過世了,有一個已經退休,都無法前來,而且他們已經將cart的所有權全部轉讓給一家公司了),一看自己是第一個講得,不開心,盡管是鳳尾,呵呵。等到最后一個講完,他更是不開心,原因是第一個竟敢是C4.5,這個和cart都是決策樹的經典算法,而且cart還比c4.5提出來的早,c4.5的一些思想直接或間接來源於此。吳見狀,上前道:您覺得這十個算法哪幾個容易被人凝記,這人帶氣曰:“我哪知道”,吳答道:最后一個和最前一個,這人呵呵一笑,笑得是老有深意啦。見:http://blog.csdn.net/playoffs/article/details/5115336
以下就是從參加評選的18種候選算法中,最終決選出來的十大經典算法:
更詳細的介紹見pdf文件:http://pan.baidu.com/share/link?shareid=474935&uk=2466280636
一、C4.5
C4.5,是機器學習算法中的一個分類決策樹算法,它是決策樹(決策樹也就是做決策的節點間的組織方式像一棵樹,其實是一個倒樹)核心算法ID3的改進算法,所以基本上了解了一半決策樹構造方法就能構造它。決策樹構造方法其實就是每次選擇一個好的特征以及分裂點作為當前節點的分類條件。
C4.5相比於ID3改進的地方有:
1、用信息增益率來選擇屬性。
ID3選擇屬性用的是子樹的信息增益,這里可以用很多方法來定義信息,ID3使用的是熵(entropy,熵是一種不純度度量准則),也就是熵的變化值。而C4.5用的是信息增益率。對,區別就在於一個是信息增益,一個是信息增益率。一般來說率就是用來取平衡用的,就像方差起的作用差不多,比如有兩個跑步的人,一個起點是10m/s的人、其10s后為20m/s;另一個人起速是1m/s、其1s后為2m/s。
如果緊緊算差值那么兩個差距就很大了,如果使用速度增加率(加速度,即都是為1m/s^2)來衡量,2個人就是一樣的加速度。因此,C4.5克服了ID3用信息增益選擇屬性時偏向選擇取值多的屬性的不足。
2、在樹構造過程中進行剪枝,在構造決策樹的時候,那些掛着幾個元素的節點,不考慮最好,不然容易導致overfitting。
3、對非離散數據也能處理。
4、能夠對不完整數據進行處理。
二、The k-means algorithm 即K-Means算法
k-means algorithm算法是一個聚類算法,把n的對象根據他們的屬性分為k個分割(k < n)。它與處理混合正態分布的最大期望算法(本十大算法第五條)很相似,因為他們都試圖找到數據中自然聚類的中心。它假設對象屬性來自於空間向量,並且目標是使各個群組內部的均方誤差總和最小。
三、 Support vector machines
支持向量機,英文為Support Vector Machine,簡稱SV機(論文中一般簡稱SVM)。它是一種監督式學習的方法,它廣泛的應用於統計分類以及回歸分析中。支持向量機將向量映射到一個更高維的空間里,在這個空間里建立有一個最大間隔超平面。在分開數據的超平面的兩邊建有兩個互相平行的超平面,分隔超平面使兩個平行超平面的距離最大化。假定平行超平面間的距離或差距越大,分類器的總誤差越小。一個極好的指南是C.J.C Burges的《模式識別支持向量機指南》。van der Walt 和 Barnard 將支持向量機和其他分類器進行了比較。
四、The Apriori algorithm
Apriori算法是一種最有影響的挖掘布爾關聯規則頻繁項集的算法。其核心是基於兩階段頻集思想的遞推算法。該關聯規則在分類上屬於單維、單層、布爾關聯規則。在這里,所有支持度大於最小支持度的項集稱為頻繁項集,簡稱頻集。
五、最大期望(EM)算法
在統計計算中,最大期望 (EM,Expectation–Maximization)算法是在概率(probabilistic)模型中尋找參數最大似然估計的算法,其中概率模型依賴於無法觀測的隱藏變量(Latent Variabl)。最大期望經常用在機器學習和計算機視覺的數據集聚(Data Clustering)領域。
六、PageRank
PageRank是Google算法的重要內容。2001年9月被授予美國專利,專利人是Google創始人之一拉里•佩奇(Larry Page)。因此,PageRank里的page不是指網頁,而是指佩奇,即這個等級方法是以佩奇來命名的。PageRank根據網站的外部鏈接和內部鏈接的數量和質量,衡量網站的價值。PageRank背后的概念是,每個到頁面的鏈接都是對該頁面的一次投票, 被鏈接的越多,就意味着被其他網站投票越多。
這個就是所謂的“鏈接流行度”——衡量多少人願意將他們的網站和你的網站掛鈎。PageRank這個概念引自學術中一篇論文的被引述的頻度——即被別人引述的次數越多,一般判斷這篇論文的權威性就越高。
七、AdaBoost
Adaboost是一種迭代算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構成一個更強的最終分類器 (強分類器)。其算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的准確率,來確定每個樣本的權值。
將修改過權值的新數據集送給下層分類器進行訓練,最后將每次訓練得到的分類器融合起來,作為最后的決策分類器。
八、kNN: k-nearest neighbor classification
K最近鄰(k-Nearest Neighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。該方法的思路是:如果一個樣本在特征空間中的k個最相似(即特征空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。
九、Naive Bayes
在眾多的分類模型中,應用最為廣泛的兩種分類模型是決策樹模型(Decision Tree Model)和朴素貝葉斯模型(Naive Bayesian Model,NBC)。朴素貝葉斯模型發源於古典數學理論,有着堅實的數學基礎,以及穩定的分類效率。同時,NBC模型所需估計的參數很少,對缺失數據不太敏感,算法也比較簡單。理論上,NBC模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為NBC模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,這給NBC模型的正確分類帶來了一定影響。在屬性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。而在屬性相關性較小時,NBC模型的性能最為良好。注:本質上是線性分類器,見http://www.rustle.us/?p=21
十、CART: 分類與回歸樹
CART, Classification and Regression Trees。 在分類樹下面有兩個關鍵的思想:第一個是關於遞歸地划分自變量空間的想法;第二個想法是用驗證數據進行剪枝。ok,日后擇其一二詳細研究、闡述,完。
轉載於:http://aimit.blog.edu.cn/home.php?mod=space&uid=1555054&do=blog&id=593069
