1. 程式人生 > >Stella Lee's Blog

Stella Lee's Blog

機器學習常見演算法

機器學習無疑是當前資料分析領域的一個熱點內容。很多人在平時的工作中都或多或少會用到機器學習的演算法。這裡IT經理網為您總結一下常見的機器學習演算法,以供您在工作和學習中參考。 
這裡寫圖片描述 
機器學習的演算法很多。很多時候困惑人們都是,很多演算法是一類演算法,而有些演算法又是從其他演算法中延伸出來的。這裡,我們從兩個方面來給大家介紹,第一個方面是學習的方式,第二個方面是演算法的類似性。 
這裡寫圖片描述

學習方式

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

監督式學習:

這裡寫圖片描述

在監督式學習下,輸入資料被稱為“訓練資料”,每組訓練資料有一個明確的標識或結果,如對防垃圾郵件系統中“垃圾郵件”“非垃圾郵件”,對手寫數字識別中的“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 Interaction 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)。

相關推薦

Stella Lee's Blog

機器學習常見演算法機器學習無疑是當前資料分析領域的一個熱點內容。很多人在平時的工作中都或多或少會用到機器學習的演算法。這裡IT經理網為您總結一下常見的機器學習演算法,以供您在工作和學習中參考。  機器學習的演算法很多。很多時候困惑人們都是,很多演算法是一類演算法,而有些演算法

Louis Lee's Blog

1 摘要 工欲善其事必先利其器,要想用好jQuery,就要做好自己的基本功。本篇部落格對於jQuery中的選擇器進行了一個小結,對於基本選擇器、層次選擇器、過濾選擇器和表單選擇器進行了分別列表和解釋。 2 什麼是jQuery選擇器 顧名思義,選擇器即選

Angelo Lee's Blog

1、去官網下載對應jira版本的plugin:http://confluence.atlassian.com/display/JIRAEXT/JIRA+Subversion+plugin我試用的是jira 3.11企業版,因此下載的是0.9.12版本的外掛。 2、將外掛lib

僵屍進程和孤兒進程-(轉自Anker's Blog)

進程表 信號 wait 例如 rmi 答案 class 正常 dia 2、基本概念   我們知道在unix/linux中,正常情況下,子進程是通過父進程創建的,子進程在創建新的進程。子進程的結束和父進程的運行是一個異步過程,即父進程永遠無法預測子進程 到底什麽時候結束。 當

Rainmaple‘s Blog

無憾勇敢星 ——記一次非常有趣有收穫的實習經歷 華為實習生招聘開始是在三四月份,報了名想去嘗試下,內心其實是非常忐忑的,因為作者當時大三計劃保研,公司實習意味著佔用暑假的時間,會因為各種原因放棄一些夏令營的機會,現在看來的確有對夏令營的參加有影響,但是公司實

想說就說 | Phpvar's Blog

使用imageCache()在IOS下圖片模糊不清晰?api imageCache 有個引數thumbnail,該引數預設值是true即呼叫imageCache該引數就是開啟生效狀態,該引數的使用描述:使用縮圖,底層將根據當前系統及裝置效能,返回最優的縮圖,有利於提高應用執行及渲染效率。原意是好的,但

ARong's Blog

HELLO September 一轉眼,九月份就快結束了,從明天開始的七天裡,全國人民都將迎來本年度最長的假期國慶節;從小學生到大學生,從苦逼的程式設計師到安逸的體制內人員都放假了,不禁回想起去年十月自己,現在的我和那時的我已經截然不同了,無論是在程式設計知識

shadow wolf’s blog

高精度加法 原理: 將數字分成陣列存入,逐位相加 原來int的要開很大的,如10000000000000000,或者有些long long都不夠,在char裡面只要17位 Q:為什麼? A:因

დ♂Hany01's Blog Space♂ღ

Description 輸入一個n*m的矩陣,矩陣的每一個元素都是一個整數,然後有q個詢問,每次詢問一個子矩陣的權值。矩陣的權值是這樣定義的,對於一個整數x,如果它在該矩陣中出現了p次,那麼它給該矩陣的

isea_you's blog

注:標準的SQL,對於非自定義的關鍵字都是大寫字母,本文為了行文方便和閱讀體驗,統一採用小寫字母。 What is InnoDB ?  InnoDB is a storage engine for the database management system MySQ

happy19870612's blog

首先檢查本地windows 是否有新的HOST-ONLY網絡卡 vim /etc/sysconfig/network-scripts/ifcfg-enp0s3 DEVICE=enp0s3 TYPE=E

Jack's blog

                                                                                       隱私政策 一、本公司需要收集哪些資訊以及原因        1. 非個人資訊        在本政策

Solar's Blog

克隆虛擬機器 我克隆過來是直接可用的,可以 ping 通外網;若克隆出來的虛擬機器有問題,可以查閱相關資料進行修改。 VMware虛擬機器克隆CentOS後網絡卡修改方法 配置ssh 免登入 啟動三臺機器,分別修改機器名為 master、slave1、slav

asing1elife's blog

通過使用代理可以隱藏委託類的實現,並且實現客戶與委託類之間的解耦,在不修改委託類的前提下為客戶做一些額外處理 更多精彩 型別 靜態代理 - Java 代理之靜態代理 雖然具備代理的兩個優點 但

JasonZhang‘s Blog

package class_04; import java.util.LinkedList; import java.util.Queue; /** * * 二叉樹的序列化和反序列化 * */ public class Code_04_SerializeAndRe

JEFFERY's BLOG

本文編譯環境為: VS2013 + Qt5.5.1 一、準備 安裝VS2013及下載Qt5.5.1原始碼。 安裝ActivePerl,並且將安裝目錄新增到PATH環境變數。 安裝Python,並且將安

Beson's Blog

定義 高階函式:能夠接收函式作為引數的函式。 函式可以賦值給變數,函式的引數可以接收變數,因此一個函式可以接收另一個函式作為引數,這種函式就稱為高階函式。 DEMO def add(x,y,f):

Quinn's blog ! I'm glad to be here!

數學推導 比例縮法填充,滿足最大邊填充,故此,首先找出相對於填充的最大邊 let fromW = from.width let fromH = from.height let toH = to

Li Qing Xin's blog

時間限制: 1000 ms  空間限制: 262144 KB題目描述:    神龍數碼公司設計了一個加密演算法:用a代替z,用b代替y,用c代替x,......,用z代替a。現要求輸入一個小寫字母,

JackyQiu's blog

引言 收錄一些在做線上題的過程中遇到的經典的問題和解決方法,便於之後的複習和回顧。 1 合唱隊 題目連結 思路:將該序列分成兩部分,找出左邊部分遞增的最大連續序列長度和右邊部分的最大連續遞減序列長度。將序列分成兩部分的位置可以從1開始到序列末尾,關鍵是如何找最長