1. 程式人生 > >機器學習常用演算法總結

機器學習常用演算法總結

機器學習無疑是當前資料分析領域的一個熱點內容。很多人在平時的工作中都或多或少會用到機器學習的演算法。本文總結一下常見的機器學習演算法,以供參考。機器學習的演算法很多,很多演算法是一類演算法,而有些演算法又是從其他演算法中延伸出來的。這裡從兩個方面進行總結,第一個方面是學習的方式,第二個方面是演算法的類似性。

一、學習方式

根據資料型別的不同,對一個問題的建模有不同的方式。在機器學習或者人工智慧領域,人們首先會考慮演算法的學習方式。將演算法按照學習方式分類是一個不錯的想法,這樣可以讓人們在建模和演算法選擇的時候考慮能根據輸入資料來選擇最合適的演算法來獲得最好的結果。在機器學習領域,有幾種主要的學習方式:監督學習

非監督學習半監督學習強化學習

1、監督式學習:

       在監督式學習下,輸入資料被稱為“訓練資料”,每組訓練資料有一個明確的標識或結果,如對防垃圾郵件系統中“垃圾郵件”“非垃圾郵件”,對手寫數字識別中的“1“,”2“,”3“,”4“等。在建立預測模型的時候,監督式學習建立一個學習過程,將預測結果與“訓練資料”的實際結果進行比較,不斷的調整預測模型,直到模型的預測結果達到一個預期的準確率。監督式學習的常見應用場景如分類問題和迴歸問題。常見監督式學習演算法有決策樹學習(ID3,C4.5等),樸素貝葉斯分類,最小二乘迴歸,邏輯迴歸(Logistic Regression),支撐向量機,整合方法以及反向傳遞神經網路(Back Propagation Neural Network)等等。

2、非監督式學習:

       在非監督式學習中,資料並不被特別標識,學習模型是為了推斷出資料的一些內在結構。常見的應用場景包括關聯規則的學習以及聚類等。常見非監督學習演算法包括奇異值分解、主成分分析,獨立成分分析,Apriori演算法以及k-Means演算法等等。

3、半監督式學習:

       在此學習方式下,輸入資料部分被標識,部分沒有被標識,這種學習模型可以用來進行預測,但是模型首先需要學習資料的內在結構以便合理的組織資料來進行預測。應用場景包括分類和迴歸,演算法包括一些對常用監督式學習演算法的延伸,這些演算法首先試圖對未標識資料進行建模,在此基礎上再對標識的資料進行預測。如圖論推理演算法(Graph Inference)或者拉普拉斯支援向量機(Laplacian SVM)等。

4、強化學習:

       在這種學習模式下,輸入資料作為對模型的反饋,不像監督模型那樣,輸入資料僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入資料直接反饋到模型,模型必須對此立刻作出調整。常見的應用場景包括動態系統以及機器人控制等。常見演算法包括Q-Learning以及時間差學習(Temporal difference learning)。在企業資料應用的場景下, 人們最常用的可能就是監督式學習和非監督式學習的模型。 在影象識別等領域,由於存在大量的非標識的資料和少量的可標識資料, 目前半監督式學習是一個很熱的話題。 而強化學習更多的應用在機器人控制及其他需要進行系統控制的領域。

二、演算法類似性

       根據演算法的功能和形式的類似性,我們可以把演算法分類,比如說基於樹的演算法,基於神經網路的演算法等等。當然,機器學習的範圍非常龐大,有些演算法很難明確歸類到某一類。而對於有些分類來說,同一分類的演算法可以針對不同型別的問題。這裡,我們儘量把常用的演算法按照最容易理解的方式進行分類。

1、迴歸演算法:

       迴歸演算法是試圖採用對誤差的衡量來探索變數之間的關係的一類演算法。迴歸演算法是統計機器學習的利器。在機器學習領域,人們說起迴歸,有時候是指一類問題,有時候是指一類演算法,這一點常常會使初學者有所困惑。常見的迴歸演算法包括:最小二乘法(Ordinary Least Square),邏輯迴歸(Logistic Regression),逐步式迴歸(Stepwise Regression),多元自適應迴歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)。

       通常,迴歸可以被用於在現實世界的應用,如:

  • 信用評分
  • 度量營銷活動的成功率
  • 預測某一產品的收入
  • 在一個特定的日子裡會發生地震嗎?

2、基於例項的演算法

 

       基於例項的演算法常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本資料,然後根據某些近似性把新資料與樣本資料進行比較。通過這種方式來尋找最佳的匹配。因此,基於例項的演算法常常也被稱為“贏家通吃”學習或者“基於記憶的學習”。常見的演算法包括 k-Nearest Neighbor(KNN), 學習向量量化(Learning Vector Quantization, LVQ),以及自組織對映演算法(Self-Organizing Map , SOM)。

3、正則化方法

       正則化方法是其他演算法(通常是迴歸演算法)的延伸,根據演算法的複雜度對演算法進行調整。正則化方法通常對簡單模型予以獎勵而對複雜演算法予以懲罰。常見的演算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及彈性網路(Elastic Net)。

4、決策樹學習

       決策樹演算法根據資料的屬性採用樹狀結構建立決策模型, 決策樹模型常常用來解決分類和迴歸問題。常見的演算法包括:分類及迴歸樹(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)。

5、貝葉斯方法

       貝葉斯方法演算法是基於貝葉斯定理的一類演算法,主要用來解決分類和迴歸問題。常見演算法包括:樸素貝葉斯演算法,平均單依賴估計(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。

       一些現實中的例子:

  • 標記一個電子郵件為垃圾郵件或非垃圾郵件
  • 將新聞文章分為技術類、政治類或體育類
  • 檢查一段文字表達積極的情緒,或消極的情緒?
  • 用於人臉識別軟體

6、基於核的演算法

 

       基於核的演算法中最著名的莫過於支援向量機(SVM)了。 基於核的演算法把輸入資料對映到一個高階的向量空間, 在這些高階向量空間裡, 有些分類或者回歸問題能夠更容易的解決。 常見的基於核的演算法包括:支援向量機(Support Vector Machine, SVM), 徑向基函式(Radial Basis Function ,RBF), 以及線性判別分析(Linear Discriminate Analysis ,LDA)等。

       就規模而言,其中一些最主要的問題已經使用支援向量機解決了(通過適當的修改),如,入廣告顯示,人類的剪接位點識別,基於影象的性別檢測,大規模影象分類等等。

7、聚類演算法

 

       聚類,就像迴歸一樣,有時候人們描述的是一類問題,有時候描述的是一類演算法。聚類演算法通常按照中心點或者分層的方式對輸入資料進行歸併。所以的聚類演算法都試圖找到資料的內在結構,以便按照最大的共同點將資料進行歸類。常見的聚類演算法包括 k-Means演算法以及期望最大化演算法(Expectation Maximization, EM)。


每一種聚類演算法都不太一樣,這裡有一些:

  • 基於質心的演算法
  • 基於連通性的演算法
  • 基於密度的演算法
  • 概率聚類
  • 降維
  • 神經網路/深度學習

8、關聯規則學習

 

       關聯規則學習通過尋找最能夠解釋資料變數之間關係的規則,來找出大量多元資料集中有用的關聯規則。常見演算法包括 Apriori演算法和Eclat演算法等。

9、人工神經網路

 

       人工神經網路演算法模擬生物神經網路,是一類模式匹配演算法。通常用於解決分類和迴歸問題。人工神經網路是機器學習的一個龐大的分支,有幾百種不同的演算法。(其中深度學習就是其中的一類演算法,我們會單獨討論),重要的人工神經網路演算法包括:感知器神經網路(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網路,自組織對映(Self-Organizing Map, SOM)。學習向量量化(Learning Vector Quantization, LVQ)。

10、深度學習

 

       深度學習演算法是對人工神經網路的發展。 在近期贏得了很多關注, 特別是百度也開始發力深度學習後, 更是在國內引起了很多關注。   在計算能力變得日益廉價的今天,深度學習試圖建立大得多也複雜得多的神經網路。很多深度學習的演算法是半監督式學習演算法,用來處理存在少量未標識資料的大資料集。常見的深度學習演算法包括:受限波爾茲曼機(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷積網路(Convolutional Network), 堆疊式自動編碼器(Stacked Auto-encoders)。

11、降低維度演算法

 

       像聚類演算法一樣,降低維度演算法試圖分析資料的內在結構,不過降低維度演算法是以非監督學習的方式試圖利用較少的資訊來歸納或者解釋資料。這類演算法可以用於高維資料的視覺化或者用來簡化資料以便監督式學習使用。常見的演算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘迴歸(Partial Least Square Regression,PLS), Sammon對映,多維尺度(Multi-Dimensional Scaling, MDS),  投影追蹤(Projection Pursuit)等。


奇異值分解示意圖


PCA降維示意圖


獨立成分分析示意圖

       其中,ICA 和 PCA 是相關的,但是它是一種更強大的技術,當那些經典的方法完全失效的時候,它能夠從資料來源中發現潛在的因素。它的應用包括數字影象,文件資料庫,經濟指標和心理測量。

12、整合演算法:


       整合演算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然後把結果整合起來進行整體預測。整合演算法的主要難點在於究竟整合哪些獨立的較弱的學習模型以及如何把學習結果整合起來。這是一類非常強大的演算法,同時也非常流行。常見的演算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆疊泛化(Stacked Generalization, Blending),梯度推進機(Gradient Boosting Machine, GBM),隨機森林(Random Forest)。

那麼整合方法是怎樣工作的,為什麼他們會優於單個的模型?

  • 他們拉平了輸出偏差:如果你將具有民主黨傾向的民意調查和具有共和黨傾向的民意調查取平均,你將得到一箇中和的沒有傾向一方的結果。
  • 它們減小了方差:一堆模型的聚合結果和單一模型的結果相比具有更少的噪聲。在金融領域,這被稱為多元化——多隻股票的混合投資要比一隻股票變化更小。這就是為什麼資料點越多你的模型會越好,而不是資料點越少越好。
  • 它們不太可能產生過擬合:如果你有一個單獨的沒有過擬合的模型,你是用一種簡單的方式(平均,加權平均,邏輯迴歸)將這些預測結果結合起來,然後就沒有產生過擬合的空間了。

參考資料:

相關推薦

機器學習常用演算法總結

機器學習無疑是當前資料分析領域的一個熱點內容。很多人在平時的工作中都或多或少會用到機器學習的演算法。本文總結一下常見的機器學習演算法,以供參考。機器學習的演算法很多,很多演算法是一類演算法,而有些演算法又是從其他演算法中延伸出來的。這裡從兩個方面進行總結,第一個方面是學習的

機器學習常用演算法的優缺點總結

決策樹 一、  決策樹優點 1、決策樹易於理解和解釋,可以視覺化分析,容易提取出規則。 2、可以同時處理標稱型和數值型資料。 3、測試資料集時,執行速度比較快。 4、決策樹可以很好的擴充套件到大型資料庫中,同時它的大小獨立於資料庫大小。 二、決策樹缺點 1、對缺

機器學習常用演算法優點及缺點總結

決策樹 一、  決策樹優點 1、決策樹易於理解和解釋,可以視覺化分析,容易提取出規則。 2、可以同時處理標稱型和數值型資料。 3、測試資料集時,執行速度比較快。 4、決策樹可以很好的擴充套件到大型資料庫中,同時它的大小獨立於資料庫大小。 二、決策樹缺點 1、

機器學習經典演算法總結 一.線性迴歸

一.基本形式 hθ(x)=θ0+θ1x1+θ2x2+....+θnxn=θTxh_θ(x)=θ_0+θ_1x_1+θ_2x_2+....+θ_nx_n=θ^Txhθ​(x)=θ0​+θ1​x1​+θ2​x2​+....+θn​xn​=θTx 二.損失函式 最常用

機器學習整合演算法總結

一.Voting 思想:選取多個分類器,少數服從多數 二.Bagging 特點: 放回抽樣 方法: 1.放回抽樣訓練集 2.Outofbagging:放回抽樣中總有一部分資料沒被抽到,可將這部分作為驗證集 3.隨機取樣特徵 4.隨機取樣特徵+隨機取樣訓練集,如隨機森林 隨機森林 優點 可

機器學習基本演算法總結4

機器學習基本演算法總結 ☞其他工具 程式碼在這,基於python3(原書程式碼是python2) 這裡只是一個總結,原書已經講解很清楚了,不清楚的直接看程式碼 目錄 ========================== 一、預測數

資料探勘與機器學習基本演算法總結

在這種學習模式下,輸入資料作為對模型的反饋,不像監督模型那樣,輸入資料僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入資料直接反饋到模型,模型必須對此立刻作出調整。常見的應用場景包括動態系統以及機器人控制等。常見演算法包括Q-Learning以及時間差學習(Temporal difference le

機器學習常用演算法(LDA,CNN,LR)原理簡述

1.LDA LDA是一種三層貝葉斯模型,三層分別為:文件層、主題層和詞層。該模型基於如下假設:1)整個文件集合中存在k個互相獨立的主題;2)每一個主題是詞上的多項分佈;3)每一個文件由k個主題隨機混合組成;4)每一個文件是k個主題上的多項分佈;5)每一個文件的主題概率分佈的

機器學習 最優化演算法 總結

1. 牛頓法 假設任務是優化一個目標函式f,求函 數f的極大極小問題,可以轉化為求解函式f的導數f'=0的問題,這樣求可以把優化問題看成方程求解問題(f'=0)。為了求解f'=0的根,把f(x)的泰

機器學習常見演算法總結(二)

5. Adaboost adaboost演算法通俗地講,就是在一個數據集上的隨機資料使用一個分類訓練多次,每次對分類正確的資料賦權值較小,同時增大分類錯誤的資料的權重,如此反覆迭代,直到達到所需的要求。Adaboost演算法步驟如下: 步驟1. 首先初

機器學習經典演算法總結(3)——特徵選擇

一、特徵的分類1. 相關特徵:對當前學習任務有用的屬性。2. 無關特徵:對當前學習任務沒有用的屬性。3. 冗餘特徵:包含的資訊能從其他特徵中推演出來,冗餘特徵有時候不起作用,有時候則是有益的,對應了學習任務所需的“中間變數”。二、特徵選擇1. 概念:從給定的特徵集合中選擇出相

機器學習-組合演算法總結

組合模型下面簡單的介紹下Bootstraping, Bagging, Boosting, AdaBoost, RandomForest 和Gradient boosting這些組合型演算法. 1.BootstrapingBootstraping: 名字來自成語“pull up by

機器學習常見演算法總結+ 面試題

1.http://kubicode.me/2015/08/16/Machine%20Learning/Algorithm-Summary-for-Interview/ 2.http://kubicode.me/2015/08/16/Machine%20Learning/Co

機器學習常見演算法總結(面試用)

樸素貝葉斯 參考[1] 事件A和B同時發生的概率為在A發生的情況下發生B或者在B發生的情況下發生A P(A∩B)=P(A)∗P(B|A)=P(B)∗P(A|B) 所以有: P(A|B)=P(B|A)∗P(A)P(B) 對於給出的待分

機器學習——常用排序演算法總結

我們通常所說的排序演算法往往指的是內部排序演算法,即資料記錄在記憶體中進行排序。排序演算法大體可分為兩種: 一種是比較排序,時間複雜度O(nlogn) ~ O(n^2),主要有:氣泡排序,選擇排序,插入排序,歸併排序,堆排序,快速排序等。 另一種是非比較排序,時間複雜度可以達到O(

機器學習常用演算法總結

參考:http://www.shuju.net/article/MDAwMDAyM4DM0.html 在垃圾郵件分類器專案中,隨機森林被用作最終的分類器模型。面試官可能會就此提出以下問題:為什麼選擇隨機森林而非其他模型,比如樸素貝葉斯或者支援向量機。一般來說,面試者可以從數

機器學習分類演算法常用評價指標

# -*- coding: utf-8 -*- import pandas as pd from sklearn.ensemble import RandomForestClassifier from sklearn import metrics import matplotlib.pyplot as p

機器學習 —— 各類演算法優缺點總結

在我們日常生活中所用到的推薦系統、智慧圖片美化應用和聊天機器人等應用中,各種各樣的機器學習和資料處理演算法正盡職盡責地發揮著自己的功效。本文篩選並簡單介紹了一些最常見演算法類別,還為每一個類別列出了一些實際的演算法並簡單介紹了它們的優缺點。目錄正則化演算法(Regularization Algorithms)

KNN演算法優缺點總結,以及機器學習流程的總結

KNN演算法作為一個最簡單,也是一個很實用的機器學習的演算法,日常的使用中也能處理很多問題,這裡做一下總結記錄 優點 1、KNN可以處理分類問題,同時天然可以處理多分類問題,比如鳶尾花的分類 2、簡單,易懂,同時也很強大,對於手寫數字的識別,鳶尾花這一類問題來說,準確率

【乾貨】機器學習常用 35 大演算法盤點(附思維導圖)

本文將帶你遍歷機器學習領域最受歡迎的演算法。系統地瞭解這些演算法有助於進一步掌握機器學習。當然,本文收錄的演算法並不完全,分類的方式也不唯一。不過,看完這篇文章後,下次再有演算法提起,你想不起它長處和用處的可能性就很低了。本文還附有兩張演算法思維導圖供學習使用。 在本文中,