1. 程式人生 > >機器學習 —— 各類演算法優缺點總結

機器學習 —— 各類演算法優缺點總結

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




目錄


  • 正則化演算法(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)



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


例子:


  • 嶺迴歸(Ridge Regression)

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

  • GLASSO

  • 彈性網路(Elastic Net)

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


優點:


  • 其懲罰會減少過擬合

  • 總會有解決方法


缺點:


  • 懲罰會造成欠擬合

  • 很難校準


整合演算法(Ensemble algorithms)



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


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


  • Boosting

  • Bootstrapped Aggregation(Bagging)

  • AdaBoost

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

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

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

  • 隨機森林(Random Forest)


優點:


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


缺點:


  • 需要大量的維護工作


決策樹演算法(Decision Tree Algorithm)



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


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


例子:


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

  • Iterative Dichotomiser 3(ID3)

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


優點:


  • 容易解釋

  • 非引數型


缺點:


  • 趨向過擬合

  • 可能或陷於區域性最小值中

  • 沒有線上學習


迴歸(Regression)演算法



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


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


例子:


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

  • 線性迴歸(Linear Regression)

  • 邏輯迴歸(Logistic Regression)

  • 逐步迴歸(Stepwise Regression)

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

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


優點:


  • 直接、快速

  • 知名度高


缺點:


  • 要求嚴格的假設

  • 需要處理異常值


人工神經網路



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


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


例子:


  • 感知器

  • 反向傳播

  • Hopfield 網路

  • 徑向基函式網路(Radial Basis Function Network,RBFN)


優點:


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

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


缺點:


需要大量資料進行訓練

訓練要求很高的硬體配置

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

元引數(Metaparameter)與網路拓撲選擇困難。


深度學習(Deep Learning)



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


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


例子:


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

  • Deep Belief Networks(DBN)

  • 卷積神經網路(CNN)

  • Stacked Auto-Encoders


優點/缺點:見神經網路


支援向量機(Support Vector Machines)



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


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


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


優點:


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


缺點:


  • 非常難以訓練

  • 很難解釋


降維演算法(Dimensionality Reduction Algorithms)



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


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


例子:


  • 主成分分析(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)


>

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


例子:


  • K-均值(k-Means)

  • k-Medians 演算法

  • Expectation Maximi 封層 ation (EM)

  • 最大期望演算法(EM)

  • 分層叢集(Hierarchical Clstering)


優點:


  • 讓資料變得有意義


缺點:


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


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



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


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


例子:


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

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

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

  • 區域性加權學習(Locally Weighted Learning (LWL))


優點:


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


缺點:


  • 記憶體使用非常高

  • 計算成本高

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


貝葉斯演算法(Bayesian Algorithms)



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


例子:


  • 樸素貝葉斯(Naive Bayes)

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

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

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

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

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


優點:


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


缺點:


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


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



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


例子:


  • Apriori 演算法(Apriori algorithm)

  • Eclat 演算法(Eclat algorithm)

  • FP-growth


圖模型(Graphical Models)



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


例子:


  • 貝葉斯網路(Bayesian network)

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

  • 鏈圖(Chain Graphs)

  • 祖先圖(Ancestral graph)


優點:


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


缺點:


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