閱讀276 返回首頁    go 技術社區[雲棲]


機器學習算法集錦:從貝葉斯到深度學習及各自優缺點

選自static.coggle.it

機器之心編譯 


在我們日常生活中所用到的推薦係統、智能圖片美化應用和聊天機器人等應用中,各種各樣的機器學習和數據處理算法正盡職盡責地發揮著自己的功效。本文篩選並簡單介紹了一些最常見算法類別,還為每一個類別列出了一些實際的算法並簡單介紹了它們的優缺點。


https://static.coggle.it/diagram/WHeBqDIrJRk-kDDY


509f7fc5491992252902f1f91355ec61d097e669



目錄


  • 正則化算法(Regularization Algorithms)

  • 集成算法(Ensemble Algorithms)

  • 決策樹算法(Decision Tree Algorithm)

  • 回歸(Regression)

  • 人工神經網絡(Artificial Neural Network)

  • 深度學習(Deep Learning)

  • 支持向量機(Support Vector Machine)

  • 降維算法(Dimensionality Reduction Algorithms)

  • 聚類算法(Clustering Algorithms)

  • 基於實例的算法(Instance-based Algorithms)

  • 貝葉斯算法(Bayesian Algorithms)

  • 關聯規則學習算法(Association Rule Learning Algorithms)

  • 圖模型(Graphical Models)


正則化算法(Regularization Algorithms)


1c5d0655572b4f0e3d325862f88a03fec9d94c27


它是另一種方法(通常是回歸方法)的拓展,這種方法會基於模型複雜性對其進行懲罰,它喜歡相對簡單能夠更好的泛化的模型。


例子:


  • 嶺回歸(Ridge Regression)

  • 最小絕對收縮與選擇算子(LASSO)

  • GLASSO

  • 彈性網絡(Elastic Net)

  • 最小角回歸(Least-Angle Regression)


優點:


  • 其懲罰會減少過擬合

  • 總會有解決方法


缺點:


  • 懲罰會造成欠擬合

  • 很難校準


集成算法(Ensemble algorithms)


63ab43f0036a83b0eedaaceeb044e2ab41d1ed2a


集成方法是由多個較弱的模型集成模型組,其中的模型可以單獨進行訓練,並且它們的預測能以某種方式結合起來去做出一個總體預測。


該算法主要的問題是要找出哪些較弱的模型可以結合起來,以及結合的方法。這是一個非常強大的技術集,因此廣受歡迎。


  • Boosting

  • Bootstrapped Aggregation(Bagging)

  • AdaBoost

  • 層疊泛化(Stacked Generalization)(blending)

  • 梯度推進機(Gradient Boosting Machines,GBM)

  • 梯度提升回歸樹(Gradient Boosted Regression Trees,GBRT)

  • 隨機森林(Random Forest)


優點:


  • 當先最先進的預測幾乎都使用了算法集成。它比使用單個模型預測出來的結果要精確的多


缺點:


  • 需要大量的維護工作


決策樹算法(Decision Tree Algorithm)


c4eddff43991a599d5ba3de9efe1b8bbd299f738


決策樹學習使用一個決策樹作為一個預測模型,它將對一個 item(表征在分支上)觀察所得映射成關於該 item 的目標值的結論(表征在葉子中)。


樹模型中的目標是可變的,可以采一組有限值,被稱為分類樹;在這些樹結構中,葉子表示類標簽,分支表示表征這些類標簽的連接的特征。


例子:


  • 分類和回歸樹(Classification and Regression Tree,CART)

  • Iterative Dichotomiser 3(ID3)

  • C4.5 和 C5.0(一種強大方法的兩個不同版本)


優點:


  • 容易解釋

  • 非參數型


缺點:


  • 趨向過擬合

  • 可能或陷於局部最小值中

  • 沒有在線學習


回歸(Regression)算法


3dfe4551d94f2900eb87b68674b4368716c3ce4b


回歸是用於估計兩種變量之間關係的統計過程。當用於分析因變量和一個 多個自變量之間的關係時,該算法能提供很多建模和分析多個變量的技巧。具體一點說,回歸分析可以幫助我們理解當任意一個自變量變化,另一個自變量不變時,因變量變化的典型值。最常見的是,回歸分析能在給定自變量的條件下估計出因變量的條件期望。


回歸算法是統計學中的主要算法,它已被納入統計機器學習。


例子:


  • 普通最小二乘回歸(Ordinary Least Squares Regression,OLSR)

  • 線性回歸(Linear Regression)

  • 邏輯回歸(Logistic Regression)

  • 逐步回歸(Stepwise Regression)

  • 多元自適應回歸樣條(Multivariate Adaptive Regression Splines,MARS)

  • 本地散點平滑估計(Locally Estimated Scatterplot Smoothing,LOESS)


優點:


  • 直接、快速

  • 知名度高


缺點:


  • 要求嚴格的假設

  • 需要處理異常值


人工神經網絡


53288bd023b407d426f45e0080abaa66af450109


人工神經網絡是受生物神經網絡啟發而構建的算法模型。


它是一種模式匹配,常被用於回歸和分類問題,但擁有龐大的子域,由數百種算法和各類問題的變體組成。


例子:


  • 感知器

  • 反向傳播

  • Hopfield 網絡

  • 徑向基函數網絡(Radial Basis Function Network,RBFN)


優點:


  • 在語音、語義、視覺、各類遊戲(如圍棋)的任務中表現極好。

  • 算法可以快速調整,適應新的問題。


缺點:


需要大量數據進行訓練

訓練要求很高的硬件配置

模型處於「黑箱狀態」,難以理解內部機製

元參數(Metaparameter)與網絡拓撲選擇困難。


深度學習(Deep Learning)


cd93e22cacf178500338e348f08803a2eb937d14


深度學習是人工神經網絡的最新分支,它受益於當代硬件的快速發展。


眾多研究者目前的方向主要集中於構建更大、更複雜的神經網絡,目前有許多方法正在聚焦半監督學習問題,其中用於訓練的大數據集隻包含很少的標記。


例子:


  • 深玻耳茲曼機(Deep Boltzmann Machine,DBM)

  • Deep Belief Networks(DBN)

  • 卷積神經網絡(CNN)

  • Stacked Auto-Encoders


優點/缺點:見神經網絡


支持向量機(Support Vector Machines)


5785f2b216227da22083e275f1c5191f866dd5e2


給定一組訓練事例,其中每個事例都屬於兩個類別中的一個,支持向量機(SVM)訓練算法可以在被輸入新的事例後將其分類到兩個類別中的一個,使自身成為非概率二進製線性分類器。


SVM 模型將訓練事例表示為空間中的點,它們被映射到一幅圖中,由一條明確的、盡可能寬的間隔分開以區分兩個類別。


隨後,新的示例會被映射到同一空間中,並基於它們落在間隔的哪一側來預測它屬於的類別。


優點:


在非線性可分問題上表現優秀


缺點:


  • 非常難以訓練

  • 很難解釋


降維算法(Dimensionality Reduction Algorithms)


3471f2d372444b390cbe8d5befdab3620d1a5387


和集簇方法類似,降維追求並利用數據的內在結構,目的在於使用較少的信息總結或描述數據。


這一算法可用於可視化高維數據或簡化接下來可用於監督學習中的數據。許多這樣的方法可針對分類和回歸的使用進行調整。


例子:


  • 主成分分析(Principal Component Analysis (PCA))

  • 主成分回歸(Principal Component Regression (PCR))

  • 偏最小二乘回歸(Partial Least Squares Regression (PLSR))

  • Sammon 映射(Sammon Mapping)

  • 多維尺度變換(Multidimensional Scaling (MDS))

  • 投影尋蹤(Projection Pursuit)

  • 線性判別分析(Linear Discriminant Analysis (LDA))

  • 混合判別分析(Mixture Discriminant Analysis (MDA))

  • 二次判別分析(Quadratic Discriminant Analysis (QDA))

  • 靈活判別分析(Flexible Discriminant Analysis (FDA))


優點:


  • 可處理大規模數據集

  • 無需在數據上進行假設


缺點:


  • 難以搞定非線性數據

  • 難以理解結果的意義


聚類算法(Clustering Algorithms)


2640da1c25ae0647bbd61010a5f45733fef3318c


聚類算法是指對一組目標進行分類,屬於同一組(亦即一個類,cluster)的目標被劃分在一組中,與其他組目標相比,同一組目標更加彼此相似(在某種意義上)。


例子:


  • K-均值(k-Means)

  • k-Medians 算法

  • Expectation Maximi 封層 ation (EM)

  • 最大期望算法(EM)

  • 分層集群(Hierarchical Clstering)


優點:


  • 讓數據變得有意義


缺點:


  • 結果難以解讀,針對不尋常的數據組,結果可能無用。


基於實例的算法(Instance-based Algorithms)


def3d78b09d25fec4fbb8cfac7a276b71263d88a


基於實例的算法(有時也稱為基於記憶的學習)是這樣學 習算法,不是明確歸納,而是將新的問題例子與訓練過程中見過的例子進行對比,這些見過的例子就在存儲器中。


之所以叫基於實例的算法是因為它直接從訓練實例中建構出假設。這意味這,假設的複雜度能隨著數據的增長而變化:最糟的情況是,假設是一個訓練項目列表,分類一個單獨新實例計算複雜度為 O(n)


例子:


  • K 最近鄰(k-Nearest Neighbor (kNN))

  • 學習向量量化(Learning Vector Quantization (LVQ))

  • 自組織映射(Self-Organizing Map (SOM))

  • 局部加權學習(Locally Weighted Learning (LWL))


優點:


  • 算法簡單、結果易於解讀


缺點:


  • 內存使用非常高

  • 計算成本高

  • 不可能用於高維特征空間


貝葉斯算法(Bayesian Algorithms)


ef6f9edce55996013d2515b324c7c006beb86785


貝葉斯方法是指明確應用了貝葉斯定理來解決如分類和回歸等問題的方法。


例子:


  • 樸素貝葉斯(Naive Bayes)

  • 高斯樸素貝葉斯(Gaussian Naive Bayes)

  • 多項式樸素貝葉斯(Multinomial Naive Bayes)

  • 平均一致依賴估計器(Averaged One-Dependence Estimators (AODE))

  • 貝葉斯信念網絡(Bayesian Belief Network (BBN))

  • 貝葉斯網絡(Bayesian Network (BN))


優點:


快速、易於訓練、給出了它們所需的資源能帶來良好的表現


缺點:


  • 如果輸入變量是相關的,則會出現問題


關聯規則學習算法(Association Rule Learning Algorithms)


42d15b9c8849a7a169bfe84d56a886519d0fa83e


關聯規則學習方法能夠提取出對數據中的變量之間的關係的最佳解釋。比如說一家超市的銷售數據中存在規則 {洋蔥,土豆}=> {漢堡},那說明當一位客戶同時購買了洋蔥和土豆的時候,他很有可能還會購買漢堡肉。


例子:


  • Apriori 算法(Apriori algorithm)

  • Eclat 算法(Eclat algorithm)

  • FP-growth


圖模型(Graphical Models)


960dfc587b7b52fa8da2a1a4875ed6ae4040a5e1


圖模型或概率圖模型(PGM/probabilistic graphical model)是一種概率模型,一個圖(graph)可以通過其表示隨機變量之間的條件依賴結構(conditional dependence structure)。


例子:


  • 貝葉斯網絡(Bayesian network)

  • 馬爾可夫隨機域(Markov random field)

  • 鏈圖(Chain Graphs)

  • 祖先圖(Ancestral graph)


優點:


  • 模型清晰,能被直觀地理解


缺點:


  • 確定其依賴的拓撲很困難,有時候也很模煳

本文來源於"中國人工智能學會",原文發表時間" 2017-02-21  "


最後更新:2017-05-23 15:02:24

  上一篇:go  jquery序列化表單 - serialize()/serializeArray()/param()區別
  下一篇:go  華棲雲攜阿裏雲首發雲上電視台服務:致力於把電視台搬上雲端