基于大數(shù)據(jù)的機器學習:Apache SystemML 在 IBM BigInsights 的實踐
吳敏達 | 2017-06-16 10:25
【數(shù)據(jù)猿導(dǎo)讀】 由于數(shù)字數(shù)據(jù)的廣泛增長和大數(shù)據(jù)的計算能力提高,機器學習的時代已經(jīng)到來。 Apache SystemML 是由 IBM 開源的機器學習系統(tǒng),現(xiàn)在是 Apache 頂級項目,它所具備的能力在機器學習領(lǐng)域獨領(lǐng)風騷。

機器學習 (Machine Learning, ML) 是計算機可以學習而不需要事先編程的能力。 由于數(shù)字數(shù)據(jù)的廣泛增長和大數(shù)據(jù)的計算能力提高,機器學習的時代已經(jīng)到來。 Apache SystemML 是由 IBM 開源的機器學習系統(tǒng),現(xiàn)在是 Apache 頂級項目,它所具備的能力在機器學習領(lǐng)域獨領(lǐng)風騷。 IBM BigInsights 是業(yè)界領(lǐng)先的 Hadoop 企業(yè)級發(fā)行版本,在 IBM BigInsights 發(fā)行版中已經(jīng)包含了 Apache SystemML 用于大數(shù)據(jù)平臺的機器學習。 本文闡述了 Apache SystemML 的原理和基于 IBM BigInsights 的機器學習實踐。
機器學習和 Apache SystemML
機器學習是讓計算機從數(shù)據(jù)中學習的科學和藝術(shù)。換句話說,可以訓練計算機來了解數(shù)據(jù)科學家創(chuàng)建的模型。該計算機將使用算法從其接收的數(shù)據(jù)中迭代學習,并發(fā)現(xiàn)該數(shù)據(jù)中的模式。當新數(shù)據(jù)進入時,計算機可以根據(jù)以前學習的模式進行預(yù)測。例如,像亞馬遜和 Netflix 這樣的公司利用機器學習算法來分析客戶的歷史產(chǎn)品購買數(shù)據(jù)或他們觀看過的電影。亞馬遜然后可以向您推薦新產(chǎn)品,Netfix 可以推薦您可能感興趣的電影。另外一個例子,通過收集社交媒體情緒數(shù)據(jù),零售商可以更多地了解客戶的購買習慣,從而提供更令人滿意的購物體驗。還比如,隨著搜索引擎收集越來越多的搜索和選擇數(shù)據(jù),引擎可以提取與其用戶相關(guān)的更準確的信息,然后提供更相關(guān)的搜索結(jié)果,其原理是通過大量分析數(shù)據(jù)可以讓您看到通常可能看不到的內(nèi)容,從而更好地為客戶服務(wù)。
ML 是機器學習 Machine Learning 的縮寫,所以 SystemML 顯而易見是機器學習系統(tǒng),由 IBM 的 Almaden 實驗室 10 年前開發(fā)。它用 Java 語言編寫,可支持描述性分析、分類、聚類、回歸、矩陣分解及生存分析等機器學習算法。IBM 人工智能 Waston 平臺就整合了 SystemML 的功能,例如 SystemML 用于 Watson 醫(yī)療用于預(yù)測治療結(jié)果的機器學習算法,精確度大幅度提高。
SystemML 在 2015 年由 IBM 開源,于 2015 年 8 月 27 日在 GitHub 上公開發(fā)布,并于 2015 年 11 月 2 日成為 Apache Incubator 孵化項目。Apache SystemML 作為開源大數(shù)據(jù)機學習平臺受到廣泛認可,在 Cadent Technology 和 IBM Watson Health 等客戶實踐中備受贊譽。Apache Software Foundation 在 2017 年 5 月 31 日宣布將 Apache SystemML 孵化畢業(yè),自此成為 Apache 頂級項目。目前 SystemML 作為 Apache 頂級項目的最新版本是 0.14,支持 Spark 2.x。Apache SystemML 在 2016 年被 datamation.com 列為 15 款開源人工智能軟件之一。在部署方面, SystemML 運行環(huán)境支持單機和分布式部署。單機部署顯然有利于本地開發(fā)的工作,而分布式部署則可以真正發(fā)揮機器學習的威力,支持的框架包括 Hadoop 和 Spark。
Apache SystemML 目前支持的機器學習算法有:
描述性統(tǒng)計 Descriptive Statistics該類中的算法用于描述數(shù)據(jù)集的主要特征。它們提供了對不同觀察或數(shù)據(jù)記錄計算的有意義的摘要收集在研究中。這些摘要通常構(gòu)成初步數(shù)據(jù)探索的基礎(chǔ),作為其中的一部分更廣泛的統(tǒng)計分析。
單變量統(tǒng)計 Univariate Statistics
雙變量統(tǒng)計 Bivariate Statistics
分層雙變量統(tǒng)計 Stratified Bivariate Statistics
分類 Classification該類中的算法用于基于一些預(yù)定義的類或?qū)ο髮?shù)據(jù)進行分組。這是監(jiān)督學習的特點。分類算法的一個例子是將社交媒體的評論分為正面評價,負面評價或中立評價。
多項 Logistic 回歸 Multinomial Logistic Regression
支持向量機 Support Vector Machines
二進制類支持向量機 Binary-Class Support Vector Machines
多類支持向量機 Multi-Class Support Vector Machines
樸素貝葉斯 Naive Bayes
決策樹 Decision Trees
隨機森林 Random Forests
聚類 Clustering聚類是一種無監(jiān)督的學習類算法。數(shù)據(jù)集中沒有預(yù)定義的類 – 算法在數(shù)據(jù)中找到關(guān)系。聚類算法將數(shù)據(jù)排列或聚類成若干數(shù)量的邏輯組。例如,確定商店客戶的購買模式。
K 均值聚類 K-Means Clustering
回歸 Regression回歸是另一類監(jiān)督學習算法。該數(shù)據(jù)集中的目標變量是連續(xù)的。股票市場預(yù)測是回歸算法的一個例子。這里的股票價格是目標變量,或者是我們想預(yù)測的,而且每天都有變化。
線性回歸 Linear Regression
逐步線性回歸 Stepwise Linear Regression
廣義線性模型 Generalized Linear Models
逐步廣義線性回歸 Stepwise Generalized Linear Regression
回歸計分與預(yù)測 Regression Scoring and Prediction
矩陣分解 Matrix Factorization矩陣分解算法用于發(fā)現(xiàn)嵌入在不同實體之間的交互中的潛在特征。它們利用多個矩陣,當它們相乘時,生成一個類似于原先矩陣的新矩陣。亞馬遜和 Netflix 使用矩陣因式分解算法來提出產(chǎn)品建議。例如每行代表您的一個客戶,每列表示您的一個產(chǎn)品,矩陣是大而稀疏的。因此,每個單元代表由特定客戶購買的特定產(chǎn)品。該矩陣首先填充歷史數(shù)據(jù),然后將原始矩陣分解為”產(chǎn)品因素”和”客戶因素”兩個因素。通過將這兩個因子相乘在一起,我們產(chǎn)生添加到矩陣中的新的非零值。這些新的非零值表示產(chǎn)品建議。
主成分分析 Principal Component Analysis
通過交替最小化完成矩陣 Matrix Completion via Alternating Minimizations
生存分析 Survival Analysis生存分析檢查感興趣的特定事件發(fā)生所需的時間。換句話說,它們用于估計生存概率。 例如,在醫(yī)學研究中,原型的這種事件是患者的死亡,但是該方法可以應(yīng)用于其他應(yīng)用領(lǐng)域,例如在心理實驗中完成個人的任務(wù)或者在工程中的電氣部件的故障。
Kaplan-Meier 生存分析 Kaplan-Meier Survival Analysis
Cox 比例風險回歸模型 Cox Proportional Hazard Regression Model
Apache SystemML 特點和架構(gòu)
Apache SystemML 具備兩種非常的能力在機器學 習領(lǐng) 域獨 領(lǐng)風騷 。聲明式機器學 習 ( Declarative Machine Learning 簡稱 DML ) 使表達 ML 算法更容易和更自然。 算法可以用 類 似 R 的 語 法或 類 Python 語法來表示。 DML 通 過 提供表達自定 義 分析的完全靈活性以及與底 層輸 入格式和物理數(shù)據(jù)表示形式的數(shù)據(jù)獨立性, 顯 著提高了數(shù)據(jù)科學家的生 產(chǎn) 力。其次, Apache SystemML 根據(jù)數(shù)據(jù)和集群特性提供自 動優(yōu) 化,以確保效率和可 擴 展性。 Apache SystemML 為使用大數(shù)據(jù)的機器學習提供了最佳性能。它可以在 MapReduce 或 Spark 環(huán)境中運行,它可以自動優(yōu)化并實現(xiàn)性能擴展,自動確定算法是在單機還是在集群上運行。
當對小數(shù)據(jù)量進行機器學習時,數(shù)據(jù)科學家可以利用 R 或 Python 編寫專為數(shù)據(jù)解讀而設(shè)計的高級代碼。該代碼可以在單機上上運行,返回給數(shù)據(jù)科學家的結(jié)果可能不是預(yù)期的,而是一個迭代的結(jié)果,然后開始修改代碼和重新評估結(jié)果的過程,這一直持續(xù)到科學家認為結(jié)果是可以接受的,這種方法適用于小數(shù)據(jù)量。對于大數(shù)據(jù)的情況,則需要采用 Hadoop 或者 Spark 計算機集群,在這種情況下,數(shù)據(jù)科學家像以前一樣寫高級代碼,但必須依靠程序員將代碼重新實現(xiàn)或轉(zhuǎn)換為分布式平臺的代碼,這經(jīng)常需要消耗大量的時間和精力。進行第一次迭代的結(jié)果被傳回給數(shù)據(jù)科學家,與小數(shù)據(jù)一樣,結(jié)果不太可能是數(shù)據(jù)科學家預(yù)期,并且需要對算法進行一些調(diào)整。取決于算法的復(fù)雜性和要分析的數(shù)據(jù)量,迭代可能需要幾天甚至幾周才能運行,每個代碼重寫和重新轉(zhuǎn)換都容易產(chǎn)生錯誤。
如圖 1 所示,SystemML 的作用是翻譯數(shù)據(jù)科學家的代碼為可擴展的可執(zhí)行程序,這有利于大大減少每次迭代的運行時間,同時 SystemML 將性能和可擴展性結(jié)合在一起,代碼量遠遠小于其他方式。
圖 1. Apache SystemML 是基于大數(shù)據(jù)的解決方案
為了說明 Apache SystemML 的性能,比較了三種不同的稀疏集合:小數(shù)據(jù)量,中等數(shù)據(jù)規(guī)模和大量數(shù)據(jù)。小數(shù)據(jù)量包含 1.2 GB 數(shù)據(jù),中等數(shù)據(jù)量包含 12 GB 數(shù)據(jù),大量數(shù)據(jù) 120 GB 數(shù)據(jù),在 6 節(jié)點計算機集群上分別用 R、Spark MLlib 和 SystemML 運行同樣的算法。首先,R 代碼需要超過一天多的時間才能最終達成小數(shù)據(jù)量的計算, 由于內(nèi)存 不足錯誤,R 從未完成在中型和大型數(shù)據(jù)集上的運行,顯而易見 R 不是為大數(shù)據(jù)分析設(shè)計的。Spark MLlib 在小數(shù)據(jù)和中等數(shù)據(jù)情況表現(xiàn)很好, 可以卻花 費 了超過一天的 時間 來運行大數(shù)據(jù)集。 Apache SystemML 超越了其他方案,在各種數(shù)據(jù)量下均能快速完成分析任務(wù), 如圖 2 所示。
圖 2. Apache SystemML 的性能
Apache SystemML 能實現(xiàn)大數(shù)據(jù)的機器學習的能力和高性能源于 SystemML 優(yōu)化器,用來自動執(zhí)行關(guān)鍵的性能決策,分布式還是本地計算 如何進行數(shù)據(jù)分片 是否需要磁盤和內(nèi)存交互 Apache SystemML 支持分布式和本地的混合運算,SystemML 優(yōu)化器可以支持 Spark Driver 中的多線程計算,Spark Executors 中的分布式計算以及優(yōu)化器進行基于成本的選擇。如圖 3 所示,優(yōu)化器的輸入是算法,輸出則是生成的分布式計算代碼。優(yōu)化器分為三個部分,語言層、高層次操作層(HOP)、低層次操作層(LOP)。
語言層完成了三種不同的操作:解析,變量分析和驗證,輸入代碼被分成基本塊,然后在適用的地方進行優(yōu)化。
高層次操作層(HOP)創(chuàng)建表示塊的數(shù)據(jù)流圖,根據(jù)數(shù)據(jù)統(tǒng)計信息確定作業(yè)分配。優(yōu)化器從基于內(nèi)存和成本估算的替代執(zhí)行計劃中選擇,并確定操作符的順序和選擇,選擇分布式、本地或混合運算方式。SystemML 有一個廣泛的重寫庫,這些重寫用于優(yōu)化代碼。
低層次操作層(LOP)生成物理執(zhí)行計劃,進一步優(yōu)化 Spark、Map-Reduce 的作業(yè)。
圖 3. Apache SystemML 的架構(gòu)和優(yōu)化
Apache SystemML 執(zhí)行模式
Apache SystemML 提供了多種執(zhí)行模式,數(shù)據(jù)科學家可以在單機上開發(fā)一個算法,然后進行擴展,使用 Spark 或 Hadoop 將該算法用于分發(fā)群集。Apache SystemML 的執(zhí)行模式分為以下五種,鑒于 SystemML 的主要目的是在大型分布式數(shù)據(jù)集上執(zhí)行機器學習,調(diào)用 SystemML 的兩個最重要的方法是 Hadoop Batch 和 Spark Batch 模式。
Spark MLContext
Spark MLContext API 提供了一個編程接口,用于使用 Scala,Java 和 Python 等語言從 Spark 與 SystemML 進行交互。 因此,它提供了一種方便的方式來與 Spark Shell 和 Notebook (如 Jupyter 和 Zeppelin)進行交互。
Spark Batch
Spark Batch 模式可以使用 spark-submit SystemML.jar 在批處理模式下調(diào)用 SystemML,調(diào)用的 DML 腳本在 -f 參數(shù)后面指定。
Hadoop Batch
Hadoop Batch 模式可以使用 hadoop jar SystemML.jar 在批處理模式下調(diào)用 SystemML,調(diào)用的 DML 腳本在 -f 參數(shù)后面指定。
Standalone
SystemML 的獨立模式旨在允許數(shù)據(jù)科學家在單個機器上快速原型算法。 在獨立模式下,所有操作均發(fā)生在非 Hadoop 環(huán)境中的單個節(jié)點上。 獨立模式不適用于大型數(shù)據(jù)集。對于大規(guī)模生產(chǎn)環(huán)境,SystemML 算法執(zhí)行可以使用 Apache Hadoop 或 Apache Spark 分布在多節(jié)點集群中。
JMLC
Java 機器學習連接器(Java Machine Learning Connector 簡稱 JMLC) API 是用于以嵌入式方式與 SystemML 交互的編程接口。為了使用 JMLC,由于 JMLC 在現(xiàn)有的 Java 虛擬機中調(diào)用了 SystemML,所以需要在 Java 應(yīng)用程序的類路徑中包含 SystemML jar 文件。這種可嵌入性使得 SystemML 成為生產(chǎn)流程的一部分,用于諸如評分等任務(wù)。JMLC 的主要目的是作為一個評分 API,您的評分功能使用 SystemML 的 DML (聲明式機器學習)語言表達。在相當少量的輸入數(shù)據(jù)上,單個 JVM 上的單個計算機上產(chǎn)生相對較小量的輸出數(shù)據(jù)。
由于啟動成本,往往是最佳做法做批量打分,例如一次記錄 1000 條記錄。對于大量數(shù)據(jù),建議以 SystemML 的分布式模式(如 Spark 批處理模式或 Hadoop 批處理模式)運行 DML,以利用 SystemML 的分布式計算功能。 JMLC 以性能為代價提供可嵌入性,因此其使用取決于正在處理的業(yè)務(wù)用例的性質(zhì)。
Apache SystemML 安裝和部署
IBM Biginsights 是業(yè)界領(lǐng)先的 Hadoop 企業(yè)級發(fā)行版本,在世界著名 IT 行業(yè)獨立研究公司 Forrester 從 2012 年到 2016 年發(fā)布的三次 Hadoop 解決方案的評測報告中,IBM BigInsights 一直處于領(lǐng)導(dǎo)者位置。IBM BigInsights 以 Apache Hadoop 及其相關(guān)開源項目作為核心組件,并在 Hadoop 開源框架的基礎(chǔ)上進行了大量的企業(yè)化增強。IBM Biginsights 包含 Apache SystemML 最新的版本,可以直接部署。通常 Apache SystemML 會和 Spark 一起使用,systemml 必須和 spark 節(jié)點安裝在一起,并且需要在多節(jié)點部署。
來源:36大數(shù)據(jù)
刷新相關(guān)文章
我要評論
活動推薦more >
- 2018 上海國際大數(shù)據(jù)產(chǎn)業(yè)高2018-12-03
- 2018上海國際計算機網(wǎng)絡(luò)及信2018-12-03
- 中國國際信息通信展覽會將于2018-09-26
- 第五屆FEA消費金融國際峰會62018-06-21
- 第五屆FEA消費金融國際峰會2018-06-21
- “無界區(qū)塊鏈技術(shù)峰會2018”2018-06-14
不容錯過的資訊
-
1#后疫情時代的新思考#疫情之下,關(guān)于醫(yī)
-
2數(shù)據(jù)軟件產(chǎn)品和服務(wù)商DataHunter完成B輪
-
3眾盟科技獲ADMIC 2020金粲獎“年度汽車
-
4數(shù)據(jù)智能 無限未來—2020世界人工智能大
-
5#2020非凡大賞:數(shù)字化風起云涌時,共尋
-
6#榜樣的力量#天璣數(shù)據(jù)大腦疫情風險感知
-
7#榜樣的力量#內(nèi)蒙古自治區(qū)互聯(lián)網(wǎng)醫(yī)療服
-
8#榜樣的力量#實時新型肺炎疫情數(shù)據(jù)小程
-
9#榜樣的力量#華佗疫情防控平臺丨數(shù)據(jù)猿
-
10#后疫情時代的新思考#構(gòu)建工業(yè)互聯(lián)網(wǎng)新