學習方式
根據資料類型的不同,對一個問題的建模有不同的方式。 在機器學習或者人工智慧領域,人們首先會考慮演算法的學習方式。 在機器學習領域,有幾種主要的學習方式。 將演算法按照學習方式分類是一個不錯的想法,這樣可以讓人們在建模和演算法選擇的時候考慮能根據輸入資料來選擇最合適的演算法來獲得最好的結果。
監督式學習:
在監督式學習下,輸入資料被稱為「訓練資料」,每組訓練資料有一個明確的標識或結果,如對防垃圾郵件系統中「垃圾郵件」「非垃圾郵件」,對手寫數位識別中的「1「,」2「,」3「,」4「等。 在建立預測模型的時候,監督式學習建立一個學習過程,將預測結果與「訓練資料」的實際結果進行比較,不斷的調整預測模型,直到模型的預測結果達到一個預期的準確率。 監督式學習的常見應用場景如分類問題和回歸問題。 常見演算法有邏輯回歸(Logistic Regression)和反向傳遞神經網路(Back Propagation Neural Network)
非監督式學習:
在非監督式學習中,資料並不被特別標識,學習模型是為了推斷出資料的一些內在結構。 常見的應用場景包括關聯規則的學習以及聚類等。 常見演算法包括Apriori演算法以及k-Means演算法。
半監督式學習:
在此學習方式下,輸入資料部分被標識,部分沒有被標識,這種學習模型可以用來進行預測,但是模型首先需要學習資料的內在結構以便合理的組織資料來進行預測。 應用場景包括分類和回歸,演算法包括一些對常用監督式學習演算法的延伸,這些演算法首先試圖對未標識資料進行建模,在此基礎上再對標識的資料進行預測。 如圖論推理演算法(Graph Inference)或者拉普拉斯支援向量機(Laplacian SVM.) 等。
強化學習:
在這種學習模式下,輸入資料作為對模型的回饋,不像監督模型那樣,輸入資料僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入資料直接回饋到模型,模型必須對此立刻作出調整。 常見的應用場景包括動態系統以及機器人控制等。 常見演算法包括Q-Learning以及時間差學習(Temporal difference learning)
在企業資料應用的場景下, 人們最常用的可能就是監督式學習和非監督式學習的模型。 在圖像識別等領域,由於存在大量的非標識的資料和少量的可標識資料, 目前半監督式學習是一個很熱的話題。 而強化學習更多的應用在機器人控制及其他需要進行系統控制的領域。
演算法類似性
根據演算法的功能和形式的類似性,我們可以把演算法分類,比如說基於樹的演算法,基於神經網路的演算法等等。 當然,機器學習的範圍非常龐大,有些演算法很難明確歸類到某一類。 而對於有些分類來說,同一分類的演算法可以針對不同類型的問題。 這裡,我們儘量把常用的演算法按照最容易理解的方式進行分類。
回歸演算法
回歸演算法是試圖採用對誤差的衡量來探索變數之間的關係的一類演算法。 回歸演算法是統計機器學習的利器。 在機器學習領域,人們說起回歸,有時候是指一類問題,有時候是指一類演算法,這一點常常會使初學者有所困惑。 常見的回歸演算法包括:最小平方法(Ordinary Least Square),邏輯回歸(Logistic Regression),逐步式回歸(Stepwise Regression),多元自我調整回歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)
基於實例的演算法
基於實例的演算法常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本資料,然後根據某些近似性把新資料與樣本資料進行比較。 通過這種方式來尋找最佳的匹配。 因此,基於實例的演算法常常也被稱為「贏家通吃」學習或者「基於記憶的學習」。 常見的演算法包括 k-Nearest Neighbor(KNN), 學習向量量化(Learning Vector Quantization, LVQ),以及自組織映射演算法(Self-Organizing Map , SOM)
正規化方法
正規化方法是其他演算法(通常是回歸演算法)的延伸,根據演算法的複雜度對演算法進行調整。 正規化方法通常對簡單模型予以獎勵而對複雜演算法予以懲罰。 常見的演算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及彈性網路(Elastic Net)。
決策樹學習
決策樹演算法根據資料的屬性採用樹狀結構建立決策模型, 決策樹模型常常用來解決分類和回歸問題。 常見的演算法包括:分類及迴歸樹(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Inte raction Detection(CHAID), Decision Stump, 隨機森林(Random Forest), 多元自我調整回歸樣條(MARS)以及梯度推進機(Gradient Boosting Machine, GBM)
貝葉斯方法
貝葉斯方法演算法是基於貝葉斯定理的一類演算法,主要用來解決分類和回歸問題。 常見演算法包括:樸素貝葉斯演算法,平均單依賴估計(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。
基於核的演算法
基於核的演算法中最著名的莫過於支援向量機(SVM)了。 基於核的演算法把輸入資料對應到一個高階的向量空間, 在這些高階向量空間裡, 有些分類或者回歸問題能夠更容易的解決。 常見的基於核的演算法包括:支援向量機(Support Vector Machine, SVM), 徑向基函數(Radial Basis Function ,RBF), 以及線性判別分析(Linear Discriminate Analysis ,LDA)等。
聚類演算法
聚類,就像回歸一樣,有時候人們描述的是一類問題,有時候描述的是一類演算法。 聚類演算法通常按照中心點或者階層式方式對輸入資料進行歸併。 所以的聚類演算法都試圖找到資料的內在結構,以便按照最大的共同點將資料進行歸類。 常見的聚類演算法包括 k-Means演算法以及期望最大化演算法(Expectation Maximization, EM)。
關聯規則學習
關聯規則學習通過尋找最能夠解釋資料變數之間關係的規則,來找出大量多元資料集中有用的關聯規則。 常見演算法包括 Apriori演算法和Eclat演算法等。
人工神經網路
人工神經網路演算法類比生物神經網路,是一類模式匹配演算法。 通常用於解決分類和回歸問題。 人工神經網路是機器學習的一個龐大的分支,有幾百種不同的演算法。 (其中深度學習就是其中的一類演算法,我們會單獨討論),重要的人工神經網路演算法包括:感知器神經網路(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網路, 自組織映射(Self-Organizing Map, SOM)。 學習向量量化(Learning Vector Quantization, LVQ)
深度學習
深度學習演算法是對人工神經網路的發展。 在近期贏得了很多關注, 特別是 百度也開始發力深度學習後, 更是在國內引起了很多關注。 在計算能力變得日益廉價的今天,深度學習試圖建立大得多也複雜得多的神經網路。 很多深度學習的演算法是半監督式學習演算法,用來處理存在少量未標識資料的大資料集。 常見的深度學習演算法包括:受限波爾茲曼機(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷積網路(Convolutional Network), 堆疊式自動編碼器(Stacked Auto-encoders)。
降低維度演算法
像聚類演算法一樣,降低維度演算法試圖分析資料的內在結構,不過降低維度演算法是以非監督學習的方式試圖利用較少的資訊來歸納或者解釋資料。 這類演算法可以用於高維資料的視覺化或者用來簡化資料以便監督式學習使用。 常見的演算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘回歸(Partial Least Square Regression,PLS), Sammon映射,多維尺度( Multi-Dimensional Scaling, MDS), 投影追蹤(Projection Pursuit)等。
集成演算法
集成演算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然後把結果整合起來進行整體預測。 集成演算法的主要難點在於究竟集成哪些獨立的較弱的學習模型以及如何把學習結果整合起來。 這是一類非常強大的演算法,同時也非常流行。 常見的演算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆疊泛化(Stacked Generalization, Blending),梯度推進機(Gradient Boosting Machine, GBM),隨機森林(Random Forest)。