訂閱
糾錯(cuò)
加入自媒體

工業(yè)大數(shù)據(jù)挖掘的利器——Spark MLlib

格物匯之前刊發(fā)的《工業(yè)大數(shù)據(jù)處理領(lǐng)域的“網(wǎng)紅”——Apache Spark》中提到,在“中國(guó)制造2025”的技術(shù)路線圖中,工業(yè)大數(shù)據(jù)是作為重要突破點(diǎn)來規(guī)劃的,而在未來的十年,以數(shù)據(jù)為核心構(gòu)建的智能化體系會(huì)成為支撐智能制造和工業(yè)互聯(lián)網(wǎng)的核心動(dòng)力。Apache Spark 作為新一代輕量級(jí)大數(shù)據(jù)快速處理平臺(tái),集成了大數(shù)據(jù)相關(guān)的各種能力,是理解大數(shù)據(jù)的首選。Spark有一個(gè)機(jī)器學(xué)習(xí)組件是專門用于解決海量數(shù)據(jù)如何進(jìn)行高效數(shù)據(jù)挖掘的問題,那就是SparkMLlib組件。今天的格物匯就給大家詳細(xì)介紹一下Spark MLlib。

Spark MLlip 天生適合迭代計(jì)算

在介紹Spark MLlib 這個(gè)組件前,我們先了解一下機(jī)器學(xué)習(xí)的定義。在維基百科中對(duì)機(jī)器學(xué)習(xí)給出如下定義:

機(jī)器學(xué)習(xí)是一門人工智能的科學(xué),該領(lǐng)域的主要研究對(duì)象是人工智能,特別是如何在經(jīng)驗(yàn)學(xué)習(xí)中改善具體算法的性能。

機(jī)器學(xué)習(xí)是對(duì)能通過經(jīng)驗(yàn)自動(dòng)改進(jìn)的計(jì)算機(jī)算法的研究。

機(jī)器學(xué)習(xí)是用數(shù)據(jù)或以往的經(jīng)驗(yàn),以此優(yōu)化計(jì)算機(jī)程序的性能標(biāo)準(zhǔn)。

很明顯,機(jī)器學(xué)習(xí)的重點(diǎn)之一就是“經(jīng)驗(yàn)”,對(duì)于計(jì)算機(jī)而言,經(jīng)驗(yàn)就是需要進(jìn)行多次迭代計(jì)算得到的,Spark 的基于內(nèi)存的計(jì)算模式天生就擅長(zhǎng)迭代計(jì)算,多個(gè)步驟計(jì)算直接在內(nèi)存中完成,只有在必要時(shí)才會(huì)操作磁盤和網(wǎng)絡(luò),所以說Spark正是機(jī)器學(xué)習(xí)的理想的平臺(tái)。在Spark官方首頁(yè)中展示了Logistic Regression算法在Spark和Hadoop中運(yùn)行的性能比較,如圖下圖所示。

Spark MLlib 算法以及功能

MLlib由一些通用的學(xué)習(xí)算法以及工具組成,其中包括分類、回歸、聚類、協(xié)同過濾、降維等,同時(shí)還包括底層的優(yōu)化原語(yǔ)和高層的管道API。具體主要包含以下內(nèi)容:

回歸(Regression)

線性回歸(Linear)

廣義線性回歸(Generalized Linear)

決策樹(Decision Tree)

隨機(jī)森林(Random Forest)

梯度提升樹(Gradient-boosted Tree)

Survival

Isotonic

分類(Classification)

邏輯回歸(Logistic,二分類和多酚類)

決策樹(Decision Tree)

隨機(jī)森林(Random Forest)

梯度提升樹(Gradient-boosted Tree)

多層反饋(Multilayer Perceptron)

支持向量機(jī)(Linear support vector machine)

One-vs-All

樸素貝葉斯(Naive Bayes)

聚類(Clustering)

K-means

隱含狄利克雷分布(LDA)

BisectingK-means

高斯混合模型(Gaussian Mixture Model)

協(xié)同過濾(Collaborative Filtering)

特征工程(Featurization)

特征工程(Featurization)

特征提取

轉(zhuǎn)換

降維(Dimensionality reduction)

篩選(Selection)

管道(Pipelines)

組合管道(Composing Pipelines)

構(gòu)建、評(píng)估和調(diào)優(yōu)(Tuning)機(jī)器學(xué)習(xí)管道

持久化(Persistence)

保存算法,模型和管道到持久化存儲(chǔ)器,以備后續(xù)使用

從持久化存儲(chǔ)器載入算法、模型和管道

實(shí)用工具(Utilities)

線性代數(shù)(Linear algebra)

統(tǒng)計(jì)

數(shù)據(jù)處理

其他

綜上可見,Spark在機(jī)器學(xué)習(xí)上發(fā)展還是比較快的,目前已經(jīng)支持了主流的統(tǒng)計(jì)和機(jī)器學(xué)習(xí)算法。

Spark MLlib API 變遷

Spark MLlib 組件從Spark 1.2版本以后就出現(xiàn)了兩套機(jī)器學(xué)習(xí)API:

spark.mllib基于RDD的機(jī)器學(xué)習(xí)API,是Spark最開始的機(jī)器學(xué)習(xí)API,在Spark1.0以前的版本就已經(jīng)存在的了。

spark.ml提供了基于DataFrame 高層次的API,引入了PipLine,可以向用戶提供一個(gè)基于DataFrame的機(jī)器學(xué)習(xí)流式API套件。

Spark 2.0 版本開始,spark mllib就進(jìn)入了維護(hù)模式,不再進(jìn)行更新,后續(xù)等spark.ml API 足夠成熟并足以取代spark.mllib 的時(shí)候就棄用。

那為什么Spark要將基于RDD的API 切換成基于DataFrame的API呢?原因有以下三點(diǎn):

首先相比spark.mllib,spark.ml的API更加通用和靈活,對(duì)用戶更加友好,并且spark.ml在DataFrame上的抽象級(jí)別更高,數(shù)據(jù)與操作的耦合度更低;

spark.ml中無論是什么模型,都提供了統(tǒng)一的算法操作接口,例如模型訓(xùn)練就調(diào)用fit方法,不行spark.mllib中不同模型會(huì)有各種各樣的trainXXX;

受scikit-learn 的Pipline概念啟發(fā),spark.ml引入pipeline, 跟sklearn,這樣可以把很多操作(算法/特征提。卣鬓D(zhuǎn)換)以管道的形式串起來,使得工作流變得更加容易。

如今工業(yè)互聯(lián)網(wǎng)飛速發(fā)展,企業(yè)內(nèi)部往往存儲(chǔ)著TB級(jí)別甚至更大的數(shù)據(jù),面對(duì)海量數(shù)據(jù)的難以進(jìn)行有效快速的進(jìn)行數(shù)據(jù)挖掘等難題,Spark提供了MLlib 這個(gè)組件,通過利用了Spark 的內(nèi)存計(jì)算和適合迭代型計(jì)算的優(yōu)勢(shì),并且提供用戶友好的API,使用戶能夠輕松快速的應(yīng)對(duì)海量數(shù)據(jù)挖掘的問題,加快工業(yè)大數(shù)據(jù)的價(jià)值變現(xiàn)。作為TCL集團(tuán)孵化的創(chuàng)新型科技公司,格創(chuàng)東智正在致力于深度融合包括Spark在內(nèi)的大數(shù)據(jù)、人工智能、云計(jì)算等前沿技術(shù)與制造行業(yè)經(jīng)驗(yàn),打造行業(yè)領(lǐng)先的“制造x”工業(yè)互聯(lián)網(wǎng)平臺(tái)。隨著未來Spark社區(qū)在AI領(lǐng)域的不斷發(fā)力,相信Spark MLlib組件的表現(xiàn)會(huì)越來越出色。

本文作者:格創(chuàng)東智大數(shù)據(jù)工程師黃歡(轉(zhuǎn)載請(qǐng)注明作者及來源)

聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)