在理解了咱們須要解決的機器學習問題以後,咱們能夠思考一下咱們須要收集什麼數據以及咱們能夠用什麼算法。本文咱們會過一遍最流行的機器學習算法,大體瞭解哪些方法可用,頗有幫助。算法
機器學習領域有不少算法,而後每種算法又有不少延伸,因此對於一個特定問題,如何肯定一個正確的算法是很困難的。本文中我想給大家兩種方法來概括在現實中會遇到的算法。數據庫
學習方式
根據如何處理經驗、環境或者任何咱們稱之爲輸入的數據,算法分爲不一樣種類。機器學習和人工智能課本一般先考慮算法能夠適應的學習方式。網絡
這裏只討論幾個主要的學習風格或學習模型,而且有幾個基本的例子。這種分類或者組織的方法很好,由於它迫使你去思考輸入數據的角色和模型準備的過程,而後選擇一個最適合你的問題的算法,從而獲得最佳的結果。數據結構
- 監督學習:輸入數據被稱爲訓練數據,而且有已知的結果或被標記。好比說一封郵件是不是垃圾郵件,或者說一段時間內的股價。模型作出預測,若是錯了就會被修正,這個過程一直持續到對於訓練數據它可以達到必定的正確標準。問題例子包括分類和迴歸問題,算法例子包括邏輯迴歸和反向神經網絡。
- 無監督學習:輸入數據沒有被標記,也沒有肯定的結果。模型對數據的結構和數值進行概括。問題例子包括Association rule learning和聚類問題,算法例子包括 Apriori 算法和K-均值算法。
- 半監督學習:輸入數據是被標記的和不被標記的數據的混合,有一些預測問題可是模型也必須學習數據的結構和組成。問題例子包括分類和迴歸問題,算法例子基本上是無監督學習算法的延伸。
- 加強學習:輸入數據能夠刺激模型而且使模型作出反應。反饋不只從監督學習的學習過程當中獲得,還從環境中的獎勵或懲罰中獲得。問題例子是機器人控制,算法例子包括Q-learning以及Temporal difference learning。
當整合數據模擬商業決策時,大多數會用到監督學習和無監督學習的方法。當下一個熱門話題是半監督學習,好比圖像分類問題,這中問題中有一個大的數據庫,可是隻有一小部分圖片作了標記。加強學習多半仍是用在機器人控制和其餘控制系統的開發上。app
算法類似性
算法基本上從功能或者形式上來分類。好比,基於樹的算法,神經網絡算法。這是一個頗有用的分類方式,但並不完美。由於有許多算法能夠輕易地被分到兩類中去,好比說Learning Vector Quantization就同時是神經網絡類的算法和基於實例的方法。正如機器學習算法自己沒有完美的模型同樣,算法的分類方法也沒有完美的。dom
在這一部分我列出了我認爲最直觀的方法歸類的算法。我並無窮盡算法或者分類方法,可是我想對於讓讀者有一個大體瞭解頗有幫助。若是有你瞭解的我沒有列出來,歡迎留言分享。如今咱們開始!機器學習
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
這是一個對其餘方法的延伸(一般是迴歸方法),這個延伸對越簡單的模型越有利,而且更擅長概括。我在這裏列出它是由於它的流行和強大。ui
- 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
這是一個用組合方法進行擬合的例子(來自維基),每一個消防法用灰色表示,最後合成的最終預測是紅色的。
其餘資源
這趟機器學習算法之旅意在讓你對有什麼算法和關聯算法的一些工具給你一個整體瞭解。
下面是一些其餘資源, 請不要以爲太多,瞭解越多算法對你越有好處,可是對某些算法有深層次的瞭解也會頗有用。