1. 程式人生 > >spark-機器學習及SparkMLlib簡介

spark-機器學習及SparkMLlib簡介

http://www.cnblogs.com/shishanyuan/p/4747761.html

1、機器學習概念

1.1 機器學習的定義
在維基百科上對機器學習提出以下幾種定義:
l“機器學習是一門人工智慧的科學,該領域的主要研究物件是人工智慧,特別是如何在經驗學習中改善具體演算法的效能”。
l“機器學習是對能通過經驗自動改進的計算機演算法的研究”。
l“機器學習是用資料或以往的經驗,以此優化計算機程式的效能標準。” 一種經常引用的英文定義是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E。

可以看出機器學習強調三個關鍵詞:演算法、經驗、效能,其處理過程如下圖所示。


上圖表明機器學習是資料通過演算法構建出模型並對模型進行評估,評估的效能如果達到要求就拿這個模型來測試其他的資料,如果達不到要求就要調整演算法來重新建立模型,再次進行評估,如此迴圈往復,最終獲得滿意的經驗來處理其他的資料。
1.2 機器學習的分類
1.2.1 監督學習
監督是從給定的訓練資料集中學習一個函式(模型),當新的資料到來時,可以根據這個函式(模型)預測結果。監督學習的訓練集要求包括輸入和輸出,也可以說是特徵和目標。訓練集中的目標是由人標註(標量)的。在監督式學習下,輸入資料被稱為“訓練資料”,每組訓練資料有一個明確的標識或結果,如對防垃圾郵件系統中“垃圾郵件”、“非垃圾郵件”,對手寫數字識別中的“1”、“2”、“3”等。在建立預測模型時,監督式學習建立一個學習過程,將預測結果與“訓練資料”的實際結果進行比較,不斷調整預測模型,直到模型的預測結果達到一個預期的準確率。常見的監督學習演算法包括迴歸分析和統計分類:
l  二元分類是機器學習要解決的基本問題,將測試資料分成兩個類,如垃圾郵件的判別、房貸是否允許等問題的判斷。
l  多元分類是二元分類的邏輯延伸。例如,在因特網的流分類的情況下,根據問題的分類,網頁可以被歸類為體育、新聞、技術等,依此類推。
監督學習常常用於分類,因為目標往往是讓計算機去學習我們已經建立好的分類系統。數字識別再一次成為分類學習的常見樣本。一般來說,對於那些有用的分類系統和容易判斷的分類系統,分類學習都適用。
監督學習是訓練神經網路和決策樹的最常見技術。神經網路和決策樹技術高度依賴於事先確定的分類系統給出的資訊。對於神經網路來說,分類系統用於判斷網路的錯誤,然後調整網路去適應它;對於決策樹,分類系統用來判斷哪些屬性提供了最多的資訊,如此一來可以用它解決分類系統的問題。

1.2.2 無監督學習
與監督學習相比,無監督學習的訓練集沒有人為標註的結果。在非監督式學習中,資料並不被特別標識,學習模型是為了推斷出資料的一些內在結構。常見的應用場景包括關聯規則的學習以及聚類等。常見演算法包括Apriori演算法和k-Means演算法。這類學習型別的目標不是讓效用函式最大化,而是找到訓練資料中的近似點。聚類常常能發現那些與假設匹配的相當好的直觀分類,例如基於人口統計的聚合個體可能會在一個群體中形成一個富有的聚合,以及其他的貧窮的聚合。

非監督學習看起來非常困難:目標是我們不告訴計算機怎麼做,而是讓它(計算機)自己去學習怎樣做一些事情。非監督學習一般有兩種思路:第一種思路是在指導Agent時不為其指定明確的分類,而是在成功時採用某種形式的激勵制度。需要注意的是,這類訓練通常會置於決策問題的框架裡,因為它的目標不是產生一個分類系統,而是做出最大回報的決定。這種思路很好地概括了現實世界,Agent可以對那些正確的行為做出激勵,並對其他的行為進行處罰。
因為無監督學習假定沒有事先分類的樣本,這在一些情況下會非常強大,例如,我們的分類方法可能並非最佳選擇。在這方面一個突出的例子是Backgammon(西洋雙陸棋)遊戲,有一系列計算機程式(例如neuro-gammon和TD-gammon)通過非監督學習自己一遍又一遍地玩這個遊戲,變得比最強的人類棋手還要出色。這些程式發現的一些原則甚至令雙陸棋專家都感到驚訝,並且它們比那些使用預分類樣本訓練的雙陸棋程式工作得更出色。
1.2.3 半監督學習
半監督學習(Semi-supervised Learning)是介於監督學習與無監督學習之間一種機器學習方式,是模式識別和機器學習領域研究的重點問題。它主要考慮如何利用少量的標註樣本和大量的未標註樣本進行訓練和分類的問題。半監督學習對於減少標註代價,提高學習機器效能具有非常重大的實際意義。主要演算法有五類:基於概率的演算法;在現有監督演算法基礎上進行修改的方法;直接依賴於聚類假設的方法等,在此學習方式下,輸入資料部分被標識,部分沒有被標識,這種學習模型可以用來進行預測,但是模型首先需要學習資料的內在結構以便合理地組織資料來進行預測。應用場景包括分類和迴歸,演算法包括一些對常用監督式學習演算法的延伸,這些演算法首先試圖對未標識資料進行建模,在此基礎上再對標識的資料進行預測,如圖論推理演算法(Graph Inference)或者拉普拉斯支援向量機(Laplacian SVM)等。
半監督學習分類演算法提出的時間比較短,還有許多方面沒有更深入的研究。半監督學習從誕生以來,主要用於處理人工合成數據,無噪聲干擾的樣本資料是當前大部分半監督學習方法使用的資料,而在實際生活中用到的資料卻大部分不是無干擾的,通常都比較難以得到純樣本資料。

1.2.4 強化學習
強化學習通過觀察來學習動作的完成,每個動作都會對環境有所影響,學習物件根據觀察到的周圍環境的反饋來做出判斷。在這種學習模式下,輸入資料作為對模型的反饋,不像監督模型那樣,輸入資料僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入資料直接反饋到模型,模型必須對此立刻做出調整。常見的應用場景包括動態系統以及機器人控制等。常見演算法包括Q-Learning 以及時間差學習(Temporal difference learning)。

在企業資料應用的場景下,人們最常用的可能就是監督式學習和非監督式學習的模型。在影象識別等領域,由於存在大量的非標識的資料和少量的可標識資料,目前半監督式學習是一個很熱的話題。而強化學習更多地應用在機器人控制及其他需要進行系統控制的領域。
1.3 機器學習的常見演算法
常見的機器學習演算法有:
l  構造條件概率:迴歸分析和統計分類;
l  人工神經網路;
l  決策樹;
l  高斯過程迴歸;
l  線性判別分析;
l  最近鄰居法;
l  感知器;
l  徑向基函式核;
l  支援向量機;
l  通過再生模型構造概率密度函式;
l  最大期望演算法;
l  graphical model:包括貝葉斯網和Markov隨機場;
l  Generative Topographic Mapping;
l  近似推斷技術;
l  馬爾可夫鏈蒙特卡羅方法;
l  變分法;
l  最優化:大多數以上方法,直接或者間接使用最優化演算法。
根據演算法的功能和形式的類似性,我們可以把演算法分類,比如說基於樹的演算法,基於神經網路的演算法等等。當然,機器學習的範圍非常龐大,有些演算法很難明確歸類到某一類。而對於有些分類來說,同一分類的演算法可以針對不同型別的問題,下面用一些相對比較容易理解的方式來解析一些主要的機器學習演算法:
1.3.1 迴歸演算法
迴歸演算法是試圖採用對誤差的衡量來探索變數之間的關係的一類演算法。迴歸演算法是統計機器學習的利器。在機器學習領域,人們說起迴歸,有時候是指一類問題,有時候是指一類演算法,這一點常常會使初學者有所困惑。常見的迴歸演算法包括:最小二乘法(Ordinary Least Square),邏輯迴歸(Logistic Regression),逐步式迴歸(Stepwise Regression),多元自適應迴歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)。

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

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

1.3.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)。

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

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

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

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

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

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

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

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

2、Spark MLlib介紹
Spark之所以在機器學習方面具有得天獨厚的優勢,有以下幾點原因:
(1)機器學習演算法一般都有很多個步驟迭代計算的過程,機器學習的計算需要在多次迭代後獲得足夠小的誤差或者足夠收斂才會停止,迭代時如果使用Hadoop的MapReduce計算框架,每次計算都要讀/寫磁碟以及任務的啟動等工作,這回導致非常大的I/O和CPU消耗。而Spark基於記憶體的計算模型天生就擅長迭代計算,多個步驟計算直接在記憶體中完成,只有在必要時才會操作磁碟和網路,所以說Spark正是機器學習的理想的平臺。
(2)從通訊的角度講,如果使用Hadoop的MapReduce計算框架,JobTracker和TaskTracker之間由於是通過heartbeat的方式來進行的通訊和傳遞資料,會導致非常慢的執行速度,而Spark具有出色而高效的Akka和Netty通訊系統,通訊效率極高。
MLlib(Machine Learnig lib) 是Spark對常用的機器學習演算法的實現庫,同時包括相關的測試和資料生成器。Spark的設計初衷就是為了支援一些迭代的Job, 這正好符合很多機器學習演算法的特點。在Spark官方首頁中展示了Logistic Regression演算法在Spark和Hadoop中執行的效能比較,如圖下圖所示。

可以看出在Logistic Regression的運算場景下,Spark比Hadoop快了100倍以上!
MLlib目前支援4種常見的機器學習問題: 分類、迴歸、聚類和協同過濾,MLlib在Spark整個生態系統中的位置如圖下圖所示。


MLlib基於RDD,天生就可以與Spark SQL、GraphX、Spark Streaming無縫整合,以RDD為基石,4個子框架可聯手構建大資料計算中心!
MLlib是MLBase一部分,其中MLBase分為四部分:MLlib、MLI、ML Optimizer和MLRuntime。
l  ML Optimizer會選擇它認為最適合的已經在內部實現好了的機器學習演算法和相關引數,來處理使用者輸入的資料,並返回模型或別的幫助分析的結果;
l  MLI 是一個進行特徵抽取和高階ML程式設計抽象的演算法實現的API或平臺;
l  MLlib是Spark實現一些常見的機器學習演算法和實用程式,包括分類、迴歸、聚類、協同過濾、降維以及底層優化,該演算法可以進行可擴充; MLRuntime 基於Spark計算框架,將Spark的分散式計算應用到機器學習領域。

MLlib基於RDD,天生就可以與Spark SQL、GraphX、Spark Streaming無縫整合,以RDD為基石,4個子框架可聯手構建大資料計算中心!
MLlib是MLBase一部分,其中MLBase分為四部分:MLlib、MLI、ML Optimizer和MLRuntime。
l  ML Optimizer會選擇它認為最適合的已經在內部實現好了的機器學習演算法和相關引數,來處理使用者輸入的資料,並返回模型或別的幫助分析的結果;
l  MLI 是一個進行特徵抽取和高階ML程式設計抽象的演算法實現的API或平臺;
l  MLlib是Spark實現一些常見的機器學習演算法和實用程式,包括分類、迴歸、聚類、協同過濾、降維以及底層優化,該演算法可以進行可擴充; MLRuntime 基於Spark計算框架,將Spark的分散式計算應用到機器學習領域。

3、Spark MLlib架構解析
從架構圖可以看出MLlib主要包含三個部分:
l  底層基礎:包括Spark的執行庫、矩陣庫和向量庫;
l  演算法庫:包含廣義線性模型、推薦系統、聚類、決策樹和評估的演算法;
l  實用程式:包括測試資料的生成、外部資料的讀入等功能。

程式碼略..

相關推薦

spark-機器學習SparkMLlib簡介

http://www.cnblogs.com/shishanyuan/p/4747761.html 1、機器學習概念 1.1 機器學習的定義 在維基百科上對機器學習提出以下幾種定義: l“機器學習是一門人工智慧的科學,該領域的主要研究物件是人工智慧,特別是如何在經驗學習中改

Spark MLlib(上)--機器學習SparkMLlib簡介

【注】該系列文章以及使用到安裝包/測試資料 可以在《》獲取 1、機器學習概念 1.1 機器學習的定義 在維基百科上對機器學習提出以下幾種定義: l“機器學習是一門人工智慧的科學,該領域的主要研究物件是人工智慧,特別是如何在經驗學習中改善具體演算法的效能”。 l“機器學習是對

Spark入門實戰系列--8.Spark MLlib(上)--機器學習SparkMLlib簡介

半監督學習(Semi-supervised Learning)是介於監督學習與無監督學習之間一種機器學習方式,是模式識別和機器學習領域研究的重點問題。它主要考慮如何利用少量的標註樣本和大量的未標註樣本進行訓練和分類的問題。半監督學習對於減少標註代價,提高學習機器效能具有非常重大的實際意義。主要演算法有五類:基

Spark入門實戰系列--8.Spark MLlib(下)--機器學習SparkMLlib實戰

線性迴歸(Linear Regression)問題屬於監督學習(Supervised Learning)範疇,又稱分類(Classification)或歸納學習(Inductive Learning)。這類分析中訓練資料集中給出的資料型別是確定的。機器學習的目標是,對於給定的一個訓練資料集,通過不斷的分析和學

Spark MLlib(下)--機器學習SparkMLlib實戰

1、MLlib例項 1.1 聚類例項 1.1.1 演算法說明 聚類(Cluster analysis)有時也被翻譯為簇類,其核心任務是:將一組目標object劃分為若干個簇,每個簇之間的object儘可能相似,簇與簇之間的object儘可能相異。聚類演算法是機器學習(或者說是資料探勘更合適)中重要的一部分,

Spark機器學習

tin ordering 自身 優點 根據 最好 man ray ron 這篇文章參考《Spark快速大數據分析》,歸納spark技術核心的rdd及MLlib以及其中幾個重要庫的使用。 初始化操作 spark shell: bin/pyspark 每個spark應用都由一

Spark機器學習(5):SVM算法

線性 logs pro 二維 log libs jar 解析 cti 1. SVM基本知識 SVM(Support Vector Machine)是一個類分類器,能夠將不同類的樣本在樣本空間中進行分隔,分隔使用的面叫做分隔超平面。 比如對於二維樣本,分布在二維平面上,此

Spark機器學習(6):決策樹算法

projects 信息 txt .cn import n) .com util seq 1. 決策樹基本知識 決策樹就是通過一系列規則對數據進行分類的一種算法,可以分為分類樹和回歸樹兩類,分類樹處理離散變量的,回歸樹是處理連續變量。 樣本一般都有很多個特征,有的特征對分

Spark機器學習(8):LDA主題模型算法

算法 ets 思想 dir 骰子 cati em算法 第一個 不同 1. LDA基礎知識 LDA(Latent Dirichlet Allocation)是一種主題模型。LDA一個三層貝葉斯概率模型,包含詞、主題和文檔三層結構。 LDA是一個生成模型,可以用來生成一篇文

Spark機器學習(10):ALS交替最小二乘算法

mllib 測試 con 相互 idt color ted 個人 使用 1. Alternating Least Square ALS(Alternating Least Square),交替最小二乘法。在機器學習中,特指使用最小二乘法的一種協同推薦算法。如下圖所示,u表

Spark機器學習(11):協同過濾算法

設置 tel println print emp master ani alt tro 協同過濾(Collaborative Filtering,CF)算法是一種常用的推薦算法,它的思想就是找出相似的用戶或產品,向用戶推薦相似的物品,或者把物品推薦給相似的用戶。怎樣評價用戶

Spark 機器學習------邏輯回歸

tco feature iter oop cit ini ava bject nature package Spark_MLlib import javassist.bytecode.SignatureAttribute.ArrayType import org.apa

機器學習算法簡介

2.3 身邊 article 開發 目標 容易 跳槽 好處 修改 歡迎大家前往騰訊雲社區,獲取更多騰訊海量技術實踐幹貨哦~ 導語: 本文是對機器學習算法的一個概覽,以及個人的學習小結。通過閱讀本文,可以快速地對機器學習算法有一個比較清晰的了解。本文承諾不會出現任何數學公式

Spark機器學習中ml和mllib中矩陣、向量

int reg index mac matrix 對比 判斷 bsp ive 1:Spark ML與Spark MLLIB區別? Spark MLlib是面向RDD數據抽象的編程工具類庫,現在已經逐漸不再被Spark團隊支持,逐漸轉向Spark ML庫,Spark ML是面

Spark機器學習速成寶典】推薦引擎——協同過濾

屬性 寶典 系統 ont 宋體 logs images 機器 back 目錄   推薦模型的分類   條目2   條目3   條目4   條目5   條目6   條目7   條目8   條目9 推薦模型的分類   最為流行的兩種方法是基於內容的過濾、協

Spark機器學習(上)

控制 常用 nbsp 建立 判斷 測試數據 話題 with 分享圖片 1、機器學習概念 1.1 機器學習的定義 在維基百科上對機器學習提出以下幾種定義:l“機器學習是一門人工智能的科學,該領域的主要研究對象是人工智能,特別是如何在經驗學習中改善具體算法的性能”。l“機

[python機器學習實踐(6)]Sklearn實現主成分分析(PCA)

相關性 hit 變量 gray tran total 空間 mach show 1.PCA原理 主成分分析(Principal Component Analysis,PCA), 是一種統計方法。通過正交變換將一組可能存在相關性的變量轉換為一組線性不相關的變量,轉換後的這組

掌握Spark機器學習庫-01

c++ scala 強化學習 聚類 分享圖片 ron info 初識 分享 第1章 初識機器學習 在本章中將帶領大家概要了解什麽是機器學習、機器學習在當前有哪些典型應用、機器學習的核心思想、常用的框架有哪些,該如何進行選型等相關問題。 1-1 導學 1-2 機器學習概述

掌握Spark機器學習庫-02-mllib數據格式

style inf 向量 ima img 技術 spark 特點 特征 MLlib 1.MLlib介紹 1)MLlib特點 2)哪些算法 3)閱讀官方文檔 MLlib提供了哪些: 算法 特征工程 管道 持久化 2.MLlib數據格式 1)本地向量 2)標簽數據 3)

掌握Spark機器學習庫-07.6-線性回歸實現房價預測

linear 線性 ack transform regress build count random () 數據集 house.csv 數據概覽 代碼 package org.apache.spark.examples.examplesforml import org