在理解了我們需要解決的機器學習問題之後,我們可以思考一下我們需要收集什麼數據以及我們可以用什麼算法。本文我們會過一遍最流行的機器學習算法,大致瞭解哪些方法可用,很有幫助。
機器學習領域有很多算法,然後每種算法又有很多延伸,所以對於一個特定問題,如何確定一個正確的算法是很困難的。本文中我想給你們兩種方法來歸納在現實中會遇到的算法。
學習方式
根據如何處理經驗、環境或者任何我們稱之爲輸入的數據,算法分爲不同種類。機器學習和人工智能課本通常先考慮算法可以適應的學習方式。
這裏只討論幾個主要的學習風格或學習模型,並且有幾個基本的例子。這種分類或者組織的方法很好,因爲它迫使你去思考輸入數據的角色和模型準備的過程,然後選擇一個最適合你的問題的算法,從而得到最佳的結果。
- 監督學習:輸入數據被稱爲訓練數據,並且有已知的結果或被標記。比如說一封郵件是否是垃圾郵件,或者說一段時間內的股價。模型做出預測,如果錯了就會被修正,這個過程一直持續到對於訓練數據它能夠達到一定的正確標準。問題例子包括分類和迴歸問題,算法例子包括邏輯迴歸和反向神經網絡。
- 無監督學習:輸入數據沒有被標記,也沒有確定的結果。模型對數據的結構和數值進行歸納。問題例子包括Association rule learning和聚類問題,算法例子包括 Apriori 算法和K-均值算法。
- 半監督學習:輸入數據是被標記的和不被標記的數據的混合,有一些預測問題但是模型也必須學習數據的結構和組成。問題例子包括分類和迴歸問題,算法例子基本上是無監督學習算法的延伸。
- 增強學習:輸入數據可以刺激模型並且使模型做出反應。反饋不僅從監督學習的學習過程中得到,還從環境中的獎勵或懲罰中得到。問題例子是機器人控制,算法例子包括Q-learning以及Temporal difference learning。
當整合數據模擬商業決策時,大多數會用到監督學習和無監督學習的方法。當下一個熱門話題是半監督學習,比如圖像分類問題,這中問題中有一個大的數據庫,但是隻有一小部分圖片做了標記。增強學習多半還是用在機器人控制和其他控制系統的開發上。
算法相似性
算法基本上從功能或者形式上來分類。比如,基於樹的算法,神經網絡算法。這是一個很有用的分類方式,但並不完美。因爲有許多算法可以輕易地被分到兩類中去,比如說Learning Vector Quantization就同時是神經網絡類的算法和基於實例的方法。正如機器學習算法本身沒有完美的模型一樣,算法的分類方法也沒有完美的。
在這一部分我列出了我認爲最直觀的方法歸類的算法。我並沒有窮盡算法或者分類方法,但是我想對於讓讀者有一個大致瞭解很有幫助。如果有你瞭解的我沒有列出來,歡迎留言分享。現在我們開始!
Regression
Regression(迴歸分析)關心的是變量之間的關係。它應用的是統計方法,幾個算法的例子包括:
- Ordinary Least Squares
- Logistic Regression
- Stepwise Regression
- Multivariate Adaptive Regression Splines (MARS)
- Locally Estimated Scatterplot Smoothing (LOESS)
Instance-based Methods
Instance based learning(基於實例的學習)模擬了一個決策問題,所使用的實例或者例子是對模型非常重要的。這種方法對現有數據建立一個數據庫然後把新數據加進去,再用一個相似性測量方法從而在數據庫裏找出一個最優匹配,進行一個預測。由於這個原因,這種方法也被稱爲勝者爲王方法和基於內存的方法。現在關注的焦點在存儲數據的表現形式和相似性測量方法。
- k-Nearest Neighbour (kNN)
- Learning Vector Quantization (LVQ)
- Self-Organizing Map (SOM)
Regularization Methods
這是一個對其他方法的延伸(通常是迴歸方法),這個延伸對越簡單的模型越有利,並且更擅長歸納。我在這裏列出它是因爲它的流行和強大。
- Ridge Regression
- Least Absolute Shrinkage and Selection Operator (LASSO)
- Elastic Net
Decision Tree Learning
Decision tree methods(決策樹方法)建立了一個根據數據中實際值決策的模型。決策樹用來解決歸納和迴歸問題。
- Classification and Regression Tree (CART)
- Iterative Dichotomiser 3 (ID3)
- C4.5
- Chi-squared Automatic Interaction Detection (CHAID)
- Decision Stump
- Random Forest
- Multivariate Adaptive Regression Splines (MARS)
- Gradient Boosting Machines (GBM)
Bayesian
Bayesian method(貝葉斯方法)是在解決歸類和迴歸問題中應用了貝葉斯定理的方法。
- Naive Bayes
- Averaged One-Dependence Estimators (AODE)
- Bayesian Belief Network (BBN)
Kernel Methods
Kernel Method(核方法)中最有名的是Support Vector Machines(支持向量機)。這種方法把輸入數據映射到更高維度上,是的一些歸類和迴歸問題更容易建模。
- Support Vector Machines (SVM)
- Radial Basis Function (RBF)
- Linear Discriminate Analysis (LDA)
Clustering Methods
Clustering(聚類),本身就形容了問題和方法。聚類方法通常是由建模方式分類的。所有的聚類方法都是用統一的數據結構來組織數據,使得每組內有最多的共同點。
- K-Means
- Expectation Maximisation (EM)
Association Rule Learning
Association rule learning(聯合規則學習)是用來對數據間提取規律的方法,通過這些規律可以發現巨量多維空間數據之間的聯繫,而這些重要的聯繫可以被組織拿來使用。
- Apriori algorithm
- Eclat algorithm
Artificial Neural Networks
Artificial Neural Networks(人工神經網絡)是從生物神經網絡的結構和功能得到啓發的。它屬於模式匹配一類,經常被用於迴歸和分類問題,但是它存在上百個算法和變種組成。其中有一些是經典流行的算法(我把深度學習拿出來單獨講):
- Perceptron
- Back-Propagation
- Hopfield Network
- Self-Organizing Map (SOM)
- Learning Vector Quantization (LVQ)
Deep Learning
Deep Learning(深度學習)方法是人工神經網絡的一種現代的更新。相比傳統的神經網絡,它有更多更復雜的網絡構成,許多方法都是關心半監督學習,這種學習的問題中有很大的數據,但是其中很少是被標記的數據。
- Restricted Boltzmann Machine (RBM)
- Deep Belief Networks (DBN)
- Convolutional Network
- Stacked Auto-encoders
Dimensionality Reduction
Dimensionality Reduction(維度縮減),像聚類方法一樣,追求和利用數據中的統一的結構,但是它用更少的信息來對數據做歸納和形容。這對於對數據進行可視化或者簡化數據很有用。
- Principal Component Analysis (PCA)
- Partial Least Squares Regression (PLS)
- Sammon Mapping
- Multidimensional Scaling (MDS)
- Projection Pursuit
Ensemble Methods
Ensemble methods(組合方法)由許多小的模型組成,這些模型經過獨立訓練,做出獨立的結論,最後組成一個總的預測。很多研究集中在使用什麼模型以及這些模型怎麼被組合起來。這是一個非常強大且流行的技術。
- Boosting
- BootStrapped Aggregation (Bagging)
- AdaBoost
- Stacked Generalization (blending)
- Gradient Boosting Machines (GBM)
- Random Forest
這是一個用組合方法進行擬合的例子(來自維基),每個消防法用灰色表示,最後合成的最終預測是紅色的。