在理解了我們需要解決的機器學習問題之後,我們可以思考一下我們需要收集什麼資料以及我們可以用什麼演算法。本文我們會過一遍最流行的機器學習演算法,大致瞭解哪些方法可用,很有幫助。
機器學習領域有很多演算法,然後每種演算法又有很多延伸,所以對於一個特定問題,如何確定一個正確的演算法是很困難的。本文中我想給你們兩種方法來歸納在現實中會遇到的演算法。
學習方式
根據如何處理經驗、環境或者任何我們稱之為輸入的資料,演算法分為不同種類。機器學習和人工智慧課本通常先考慮演算法可以適應的學習方式。
這裡只討論幾個主要的學習風格或學習模型,並且有幾個基本的例子。這種分類或者組織的方法很好,因為它迫使你去思考輸入資料的角色和模型準備的過程,然後選擇一個最適合你的問題的演算法,從而得到最佳的結果。
- 監督學習:輸入資料被稱為訓練資料,並且有已知的結果或被標記。比如說一封郵件是否是垃圾郵件,或者說一段時間內的股價。模型做出預測,如果錯了就會被修正,這個過程一直持續到對於訓練資料它能夠達到一定的正確標準。問題例子包括分類和迴歸問題,演算法例子包括邏輯迴歸和反向神經網路。
- 無監督學習:輸入資料沒有被標記,也沒有確定的結果。模型對資料的結構和數值進行歸納。問題例子包括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
這是一個用組合方法進行擬合的例子(來自維基),每個消防法用灰色表示,最後合成的最終預測是紅色的。
其他資源
這趟機器學習演算法之旅意在讓你對有什麼演算法和關聯演算法的一些工具給你一個總體瞭解。
下面是一些其他資源, 請不要覺得太多,瞭解越多演算法對你越有好處,但是對某些演算法有深層次的瞭解也會很有用。
- List of Machine Learning Algorithms: 這是維基上的資源,雖然很全,但我認為分類不是很好。
- Machine Learning Algorithms Category: 這也是在維基上的資源,比上面的略好一點,用字母排序。
- CRAN Task View: Machine Learning & Statistical Learning: 機器學習演算法的R語言擴充包,看看對於你瞭解別人都在用什麼比較好。
- Top 10 Algorithms in Data Mining: 這是發表的文章(Published article),現在是一本書(book),包括了最流行的資料探勘演算法。另一個基礎的演算法列表,這裡列出的演算法少很多,有助於你深入學習。
我希望你覺得這趟旅行對你有意,如果有任何問題或建議,都歡迎留言。