天天看點

機器學習的13種算法和4種學習方法

一、4大主要學習方式

1.監督式學習

在監督式學習下,輸入資料被稱為“訓練資料”,每組訓練資料有一個明确的辨別或結果,如對防垃圾郵件系統中“垃圾郵件”“非垃圾郵件”,對手寫數字識别中的“1“,”2“,”3“,”4“等。

在建立預測模型的時候,監督式學習建立一個學習過程,将預測結果與“訓練資料”的實際結果進行比較,不斷的調整預測模型,直到模型的預測結果達到一個預期的準确率。

監督式學習的常見應用場景如分類問題和回歸問題。常見算法有邏輯回歸(Logistic Regression)和反向傳遞神經網絡(Back Propagation Neural Network)。

2.強化學習

在這種學習模式下,輸入資料作為對模型的回報,不像監督模型那樣,輸入資料僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入資料直接回報到模型,模型必須對此立刻作出調整。

常見的應用場景包括動态系統以及機器人控制等。常見算法包括Q-Learning以及時間差學習(Temporal difference learning)。

3. 非監督式學習

在非監督式學習中,資料并不被特别辨別,學習模型是為了推斷出資料的一些内在結構。常見的應用場景包括關聯規則的學習以及聚類等。常見算法包括Apriori算法以及k-Means算法。

4.半監督式學習

在此學習方式下,輸入資料部分被辨別,部分沒有被辨別,這種學習模型可以用來進行預測,但是模型首先需要學習資料的内在結構以便合理的組織資料來進行預測。

應用場景包括分類和回歸,算法包括一些對常用監督式學習算法的延伸,這些算法首先試圖對未辨別資料進行模組化,在此基礎上再對辨別的資料進行預測。如圖論推理算法(Graph Inference)或者拉普拉斯支援向量機(Laplacian SVM.)等。

二、13種常用算法

根據算法的功能和形式的類似性,我們可以把算法分類,比如說基于樹的算法,基于神經網絡的算法等等。當然,機器學習的範圍非常龐大,有些算法很難明确歸類到某一類。

1.回歸算法

回歸算法是試圖采用對誤差的衡量來探索變量之間的關系的一類算法。回歸算法是統計機器學習的利器。在機器學習領域,人們說起回歸,有時候是指一類問題,有時候是指一類算法,這一點常常會使初學者有所困惑。

常見的回歸算法包括:最小二乘法(Ordinary Least Square),邏輯回歸(Logistic Regression),逐漸式回歸(Stepwise Regression),多元自适應回歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)。

2. 正則化方法

正則化方法是其他算法(通常是回歸算法)的延伸,根據算法的複雜度對算法進行調整。正則化方法通常對簡單模型予以獎勵而對複雜算法予以懲罰。

常見的算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及彈性網絡(Elastic Net)。

3.決策樹學習

決策樹算法根據資料的屬性采用樹狀結建構立決策模型, 決策樹模型常常用來解決分類和回歸問題。

決策樹算法:顧名思義,以二分類問題為例,即利用自變量構造一顆二叉樹,将目标變量區分出來,所有決策樹算法的關鍵點如下:

    1.分裂屬性的選擇。即選擇哪個自變量作為樹叉,也就是在n個自變量中,優先選擇哪個自變量進行分叉。而采用何種計算方式選擇樹叉,決定了決策樹算法的類型,即ID3、c4.5、CART三種決策樹算法選擇樹叉的方式是不一樣的,後文較長的描述。

    2.樹剪枝。即在建構樹叉時,由于資料中的噪聲和離群點,許多分支反映的是訓練資料中的異常,而樹剪枝則是處理這種過分拟合的資料問題,常用的剪枝方法為先剪枝和後剪枝。

樹的剪枝:

樹剪枝可以分為先剪枝和後剪枝。

先剪枝:通過提前停止樹的構造,如通過決定在給定的節點不再分裂或劃分訓練元組的子集,而對樹剪枝,一旦停止,該節點即成為樹葉。在構造樹時,可以使用諸如統計顯著性、資訊增益等度量評估分裂的優劣,如果劃分一個節點的元組低于預先定義門檻值的分裂,則給定子集的進一步劃分将停止。但選取一個适當的門檻值是困難的,較高的門檻值可能導緻過分簡化的樹,而較低的門檻值可能使得樹的簡化太少。

後剪枝:它由完全生長的樹剪去子樹,通過删除節點的分支,并用樹葉替換它而剪掉給定節點的子樹,樹葉用被替換的子樹中最頻繁的類标記。

其中c4.5使用悲觀剪枝方法,CART則為代價複雜度剪枝算法(後剪枝)。

ID3算法是采用資訊增益來選擇樹叉,c4.5算法采用增益率,CART算法采用Gini名額。此外離散型變量和連續型變量在計算資訊增益、增益率、Gini名額時會有些差別。

常見的算法包括:分類及回歸樹(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 随機森林(Random Forest), 多元自适應回歸樣條(MARS)以及梯度推進機(Gradient Boosting Machine, GBM)

4.基于執行個體的算法

基于執行個體的算法常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本資料,然後根據某些近似性把新資料與樣本資料進行比較。通過這種方式來尋找最佳的比對。是以,基于執行個體的算法常常也被稱為“赢家通吃”學習或者“基于記憶的學習”。

常見的算法包括 k-Nearest Neighbor(KNN), 學習矢量量化(Learning Vector Quantization, LVQ),以及自組織映射算法(Self-Organizing Map , SOM)。

5.貝葉斯方法

貝葉斯方法算法是基于貝葉斯定理的一類算法,主要用來解決分類和回歸問題。

常見算法包括:樸素貝葉斯算法,平均單依賴估計(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。

6.聚類算法

聚類,就像回歸一樣,有時候人們描述的是一類問題,有時候描述的是一類算法。聚類算法通常按照中心點或者分層的方式對輸入資料進行歸并。是以的聚類算法都試圖找到資料的内在結構,以便按照最大的共同點将資料進行歸類。

常見的聚類算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)。

7.降低次元算法

像聚類算法一樣,降低次元算法試圖分析資料的内在結構,不過降低次元算法是以非監督學習的方式試圖利用較少的資訊來歸納或者解釋資料。這類算法可以用于高維資料的可視化或者用來簡化資料以便監督式學習使用。

常見的算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘回歸(Partial Least Square Regression,PLS), Sammon映射,多元尺度(Multi-Dimensional Scaling, MDS),  投影追蹤(Projection Pursuit)等。

8.關聯規則學習

關聯規則學習通過尋找最能夠解釋資料變量之間關系的規則,來找出大量多中繼資料集中有用的關聯規則。

常見算法包括 Apriori算法和Eclat算法等。

9.遺傳算法(genetic algorithm)

遺傳算法模拟生物繁殖的突變、交換和達爾文的自然選擇(在每一生态環境中适者生存)。

它把問題可能的解編碼為一個向量,稱為個體,向量的每一個元素稱為基因,并利用目标函數(相應于自然選擇标準)對群體(個體的集合)中的每一個個體進行評價,根據評價值(适應度)對個體進行選擇、交換、變異等遺傳操作,進而得到新的群體。

遺傳算法适用于非常複雜和困難的環境,比如,帶有大量噪聲和無關資料、事物不斷更新、問題目标不能明顯和精确地定義,以及通過很長的執行過程才能确定目前行為的價值等。

10.人工神經網絡

人工神經網絡算法模拟生物神經網絡,是一類模式比對算法。通常用于解決分類和回歸問題。人工神經網絡是機器學習的一個龐大的分支,有幾百種不同的算法。

(其中深度學習就是其中的一類算法,我們會單獨讨論),重要的人工神經網絡算法包括:感覺器神經網絡(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網絡,自組織映射(Self-Organizing Map, SOM)。

11.深度學習

深度學習算法是對人工神經網絡的發展。 在近期赢得了很多關注, 特别是百度也開始發力深度學習後, 更是在國内引起了很多關注。   在計算能力變得日益廉價的今天,深度學習試圖建立大得多也複雜得多的神經網絡。很多深度學習的算法是半監督式學習算法,用來處理存在少量未辨別資料的大資料集。

常見的深度學習算法包括:受限波爾茲曼機(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷積網絡(Convolutional Network), 堆棧式自動編碼器(Stacked Auto-encoders)。

12.基于核的算法

基于核的算法中最著名的莫過于支援向量機(SVM)了。 基于核的算法把輸入資料映射到一個高階的向量空間, 在這些高階向量空間裡, 有些分類或者回歸問題能夠更容易的解決。

常見的基于核的算法包括:支援向量機(Support Vector Machine, SVM), 徑向基函數(Radial Basis Function ,RBF), 以及線性判别分析(Linear Discriminate Analysis ,LDA)等。

13.內建算法

內建算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然後把結果整合起來進行整體預測。內建算法的主要難點在于究竟內建哪些獨立的較弱的學習模型以及如何把學習結果整合起來。這是一類非常強大的算法,同時也非常流行。

常見的算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆疊泛化(Stacked Generalization, Blending),梯度推進機(Gradient Boosting Machine, GBM),随機森林(Random Forest),GBDT(Gradient Boosting Decision Tree)。

人工智能、大資料、雲計算和物聯網的未來發展值得重視,均為前沿産業,有興趣的朋友,可以查閱多智時代,在此為你推薦幾篇優質好文:

5分鐘内看懂機器學習和深度學習的差別

關于機器學習你必須了解的十個真相

人工智能、機器學習和深度學習的差別與聯系?

機器學習基本概念

2018年值得關注的10種機器學習工具

繼續閱讀