[Machine Learning] 機器學習常見算法分類彙總

  聲明:本篇博文根據http://www.ctocio.com/hotnews/15919.html整理,原做者張萌,尊重原創。html

  機器學習無疑是當前數據分析領域的一個熱點內容。不少人在平時的工做中都或多或少會用到機器學習的算法。本文爲您總結一下常見的機器學習算法,以供您在工做和學習中參考。算法

  機器學習的算法不少。不少時候困惑人們都是,不少算法是一類算法,而有些算法又是從其餘算法中延伸出來的。這裏,咱們從兩個方面來給你們介紹,第一個方面是學習的方式,第二個方面是算法的分類。網絡

  博主在原創基礎上加入了遺傳算法(2.9)的介紹,這樣一來,本篇博文所包含的機器學習算法更加全面豐富。該博文屬於總結型文章,如想具體理解每個算法的具體實現方法,還得針對逐個算法進行學習和推敲。app

1. 學習方式

  根據數據類型的不一樣,對一個問題的建模有不一樣的方式。在機器學習或者人工智能領域,人們首先會考慮算法的學習方式。在機器學習領域,有幾種主要的學習方式。將算法按照學習方式分類是一個不錯的想法,這樣可讓人們在建模和算法選擇的時候考慮能根據輸入數據來選擇最合適的算法來得到最好的結果。dom

  1.1 監督式學習

 

  在監督式學習下,輸入數據被稱爲「訓練數據」,每組訓練數據有一個明確的標識或結果,如對防垃圾郵件系統中「垃圾郵件」「非垃圾郵件」,對手寫數字識別中的「1「,」2「,」3「,」4「等。在創建預測模型的時候,監督式學習創建一個學習過程,將預測結果與「訓練數據」的實際結果進行比較,不斷的調整預測模型,直到模型的預測結果達到一個預期的準確率。監督式學習的常見應用場景如分類問題和迴歸問題。常見算法有邏輯迴歸(Logistic Regression)和反向傳遞神經網絡(Back Propagation Neural Network)。機器學習

  1.2 非監督式學習

  在非監督式學習中,數據並不被特別標識,學習模型是爲了推斷出數據的一些內在結構。常見的應用場景包括關聯規則的學習以及聚類等。常見算法包括Apriori算法以及k-Means算法。函數

  1.3 半監督式學習

  在此學習方式下,輸入數據部分被標識,部分沒有被標識,這種學習模型能夠用來進行預測,可是模型首先須要學習數據的內在結構以便合理的組織數據來進行預測。應用場景包括分類和迴歸,算法包括一些對經常使用監督式學習算法的延伸,這些算法首先試圖對未標識數據進行建模,在此基礎上再對標識的數據進行預測。如圖論推理算法(Graph Inference)或者拉普拉斯支持向量機(Laplacian SVM.)等。學習

  1.4 強化學習

  在這種學習模式下,輸入數據做爲對模型的反饋,不像監督模型那樣,輸入數據僅僅是做爲一個檢查模型對錯的方式,在強化學習下,輸入數據直接反饋到模型,模型必須對此馬上做出調整。常見的應用場景包括動態系統以及機器人控制等。常見算法包括Q-Learning以及時間差學習(Temporal difference learning)。 大數據

  在企業數據應用的場景下, 人們最經常使用的可能就是監督式學習和非監督式學習的模型。 在圖像識別等領域,因爲存在大量的非標識的數據和少許的可標識數據, 目前半監督式學習是一個很熱的話題。 而強化學習更多的應用在機器人控制及其餘須要進行系統控制的領域。ui

2. 算法分類

  根據算法的功能和形式的相似性,咱們能夠把算法分類,好比說基於樹的算法,基於神經網絡的算法等等。固然,機器學習的範圍很是龐大,有些算法很難明確歸類到某一類。而對於有些分類來講,同一分類的算法能夠針對不一樣類型的問題。這裏,咱們儘可能把經常使用的算法按照最容易理解的方式進行分類。

  2.1 迴歸算法

  迴歸算法是試圖採用對偏差的衡量來探索變量之間的關係的一類算法。迴歸算法是統計機器學習的利器。在機器學習領域,人們提及迴歸,有時候是指一類問題,有時候是指一類算法,這一點經常會使初學者有所困惑。常見的迴歸算法包括:最小二乘法(Ordinary Least Square),邏輯迴歸(Logistic Regression),逐步式迴歸(Stepwise Regression),多元自適應迴歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)。

  2.2 基於實例的算法

 

  基於實例的算法經常用來對決策問題創建模型,這樣的模型經常先選取一批樣本數據,而後根據某些近似性把新數據與樣本數據進行比較。經過這種方式來尋找最佳的匹配。所以,基於實例的算法經常也被稱爲「贏家通吃」學習或者「基於記憶的學習」。常見的算法包括 k-Nearest Neighbor(KNN), 學習矢量量化(Learning Vector Quantization, LVQ),以及自組織映射算法(Self-Organizing Map , SOM)。

  2.3 正則化方法

 

  正則化方法是其餘算法(一般是迴歸算法)的延伸,根據算法的複雜度對算法進行調整。正則化方法一般對簡單模型予以獎勵而對複雜算法予以懲罰。常見的算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及彈性網絡(Elastic Net)。

  2.4 決策樹學習

  決策樹算法根據數據的屬性採用樹狀結構創建決策模型, 決策樹模型經常用來解決分類和迴歸問題。常見的算法包括:分類及迴歸樹(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 隨機森林(Random Forest), 多元自適應迴歸樣條(MARS)以及梯度推動機(Gradient Boosting Machine, GBM)

  2.5 貝葉斯方法

  貝葉斯方法算法是基於貝葉斯定理的一類算法,主要用來解決分類和迴歸問題。常見算法包括:樸素貝葉斯算法,平均單依賴估計(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。

  2.6 基於核的算法

 

  基於核的算法中最著名的莫過於支持向量機(SVM)了。 基於核的算法把輸入數據映射到一個高階的向量空間, 在這些高階向量空間裏, 有些分類或者回歸問題可以更容易的解決。 常見的基於核的算法包括:支持向量機(Support Vector Machine, SVM), 徑向基函數(Radial Basis Function ,RBF), 以及線性判別分析(Linear Discriminate Analysis ,LDA)等。

  2.7 聚類算法

 

  聚類,就像迴歸同樣,有時候人們描述的是一類問題,有時候描述的是一類算法。聚類算法一般按照中心點或者分層的方式對輸入數據進行歸併。因此的聚類算法都試圖找到數據的內在結構,以便按照最大的共同點將數據進行歸類。常見的聚類算法包括 k-Means算法以及指望最大化算法(Expectation Maximization, EM)。

  2.8 關聯規則學習

 

  關聯規則學習經過尋找最可以解釋數據變量之間關係的規則,來找出大量多元數據集中有用的關聯規則。常見算法包括 Apriori算法和Eclat算法等。

 

  2.9 遺傳算法(genetic algorithm)

  遺傳算法模擬生物繁殖的突變、交換和達爾文的天然選擇(在每一輩子態環境中適者生存)。它把問題可能的解編碼爲一個向量,稱爲個體,向量的每個元素稱爲基因,並利用目標函數(相應於天然選擇標準)對羣體(個體的集合)中的每個個體進行評價,根據評價值(適應度)對個體進行選擇、交換、變異等遺傳操做,從而獲得新的羣體。遺傳算法適用於很是複雜和困難的環境,好比,帶有大量噪聲和無關數據、事物不斷更新、問題目標不能明顯和精確地定義,以及經過很長的執行過程才能肯定當前行爲的價值等。同神經網絡同樣,遺傳算法的研究已經發展爲人工智能的一個獨立分支,其表明人物爲霍勒德(J.H.Holland)。

 

  2.10 人工神經網絡

  人工神經網絡算法模擬生物神經網絡,是一類模式匹配算法。一般用於解決分類和迴歸問題。人工神經網絡是機器學習的一個龐大的分支,有幾百種不一樣的算法。(其中深度學習就是其中的一類算法,咱們會單獨討論),重要的人工神經網絡算法包括:感知器神經網絡(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網絡,自組織映射(Self-Organizing Map, SOM)。

  2.11 深度學習

 

  深度學習算法是對人工神經網絡的發展。 在近期贏得了不少關注, 特別是百度也開始發力深度學習後, 更是在國內引發了不少關注。   在計算能力變得日益廉價的今天,深度學習試圖創建大得多也複雜得多的神經網絡。不少深度學習的算法是半監督式學習算法,用來處理存在少許未標識數據的大數據集。常見的深度學習算法包括:受限波爾茲曼機(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷積網絡(Convolutional Network), 堆棧式自動編碼器(Stacked Auto-encoders)。

  2.12 下降維度算法

 

  像聚類算法同樣,下降維度算法試圖分析數據的內在結構,不過下降維度算法是以非監督學習的方式試圖利用較少的信息來概括或者解釋數據。這類算法能夠用於高維數據的可視化或者用來簡化數據以便監督式學習使用。常見的算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘迴歸(Partial Least Square Regression,PLS), Sammon映射,多維尺度(Multi-Dimensional Scaling, MDS),  投影追蹤(Projection Pursuit)等。

  2.13 集成算法

  集成算法用一些相對較弱的學習模型獨立地就一樣的樣本進行訓練,而後把結果整合起來進行總體預測。集成算法的主要難點在於究竟集成哪些獨立的較弱的學習模型以及如何把學習結果整合起來。這是一類很是強大的算法,同時也很是流行。常見的算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆疊泛化(Stacked Generalization, Blending),梯度推動機(Gradient Boosting Machine, GBM),隨機森林(Random Forest),GBDT(Gradient Boosting Decision Tree)。

相關文章
相關標籤/搜索