亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Spark的流程化機(jī)器學(xué)習(xí)分析方法①

        2016-02-20 06:52:08趙玲玲中國科學(xué)院大學(xué)北京0090中國科學(xué)院軟件研究所北京0090
        關(guān)鍵詞:組件機(jī)器流程

        趙玲玲, 劉 杰, 王 偉(中國科學(xué)院大學(xué), 北京 0090)(中國科學(xué)院軟件研究所, 北京 0090)

        基于Spark的流程化機(jī)器學(xué)習(xí)分析方法①

        趙玲玲1,2, 劉 杰2, 王 偉21(中國科學(xué)院大學(xué), 北京 100190)2(中國科學(xué)院軟件研究所, 北京 100190)

        Spark通過使用內(nèi)存分布數(shù)據(jù)集, 更加適合負(fù)載數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要大量迭代的工作. 但是數(shù)據(jù)分析師直接使用Spark進(jìn)行開發(fā)十分復(fù)雜, 包括scala學(xué)習(xí)門檻高, 代碼優(yōu)化與系統(tǒng)部署需要豐富的經(jīng)驗(yàn), 同時(shí)代碼的復(fù)用度低導(dǎo)致重復(fù)工作繁多. 本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于Spark的可視化流程式機(jī)器學(xué)習(xí)的方法, 一方面設(shè)計(jì)組件模型來刻畫機(jī)器學(xué)習(xí)的基本步驟, 包括數(shù)據(jù)預(yù)處理、特征處理、模型訓(xùn)練及驗(yàn)證評(píng)估, 另一方面提供可視化的流程建模工具, 支持分析者設(shè)計(jì)機(jī)器學(xué)習(xí)流程, 由工具自動(dòng)翻譯為Spark平臺(tái)代碼高效執(zhí)行. 本工具可以極大的提高Spark平臺(tái)機(jī)器學(xué)習(xí)應(yīng)用開發(fā)的效率. 論文介紹了工具的方法理論和關(guān)鍵技術(shù), 并通過案例表明工具的有效性.

        機(jī)器學(xué)習(xí); 數(shù)據(jù)分析; 分布式; 大數(shù)據(jù); Spark

        1 引言

        信息技術(shù)的發(fā)展帶來生活的便利與快速增長的數(shù)據(jù). 隨著以機(jī)器學(xué)習(xí)為代表的大數(shù)據(jù)分析技術(shù)的日益成熟, 大數(shù)據(jù)為社會(huì)經(jīng)濟(jì)生活帶來了巨大的影響, 并為商業(yè)決策提供了大量的幫助. 例如在電子商務(wù)行業(yè),淘寶通過對(duì)海量交易數(shù)據(jù)進(jìn)行學(xué)習(xí), 為用戶提供專業(yè)的個(gè)性化推薦; 在廣告行業(yè), 網(wǎng)絡(luò)廣告通過追蹤用戶的點(diǎn)擊對(duì)喜好進(jìn)行預(yù)測, 提高用戶體驗(yàn).

        但是, 傳統(tǒng)的商業(yè)關(guān)系型數(shù)據(jù)管理系統(tǒng)已經(jīng)無法處理海量數(shù)據(jù)的大容量、多樣化與高維度的特點(diǎn)[1]. 為了解決大數(shù)據(jù)分析的問題, 分布式計(jì)算得到廣泛的應(yīng)用. Apache Hadoop[2]是近年廣泛使用的分布式系統(tǒng)之一. Hadoop采用MapReduce作為嚴(yán)格的計(jì)算框架. Hadoop的出現(xiàn)促使了大規(guī)模數(shù)據(jù)處理平臺(tái)的流行. 與Hadoop同樣受到廣泛應(yīng)用的還有Spark[3], 由伯克利大學(xué)的AMPLab開發(fā)的大數(shù)據(jù)架構(gòu). Spark融合了批量分析、流分析、SQL處理、圖分析以及機(jī)器學(xué)習(xí)等應(yīng)用. 相對(duì)于Hadoop, Spark具有快速, 靈活, 容錯(cuò)性等特點(diǎn), 是運(yùn)行機(jī)器學(xué)習(xí)分析程序的理想的選擇方案.但Spark是一個(gè)開發(fā)者使用工具, 要求分析人員具備一定的計(jì)算機(jī)技術(shù)能力, 并且花費(fèi)大量時(shí)間去創(chuàng)建、部署與維護(hù)系統(tǒng).

        機(jī)器學(xué)習(xí)的結(jié)果嚴(yán)重依賴于數(shù)據(jù)質(zhì)量與模型邏輯,所以為了令分析人員能夠?qū)W⒂诹鞒瘫旧? 不在分析程序編譯、運(yùn)行、并行化等方面花費(fèi)精力, 本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Spark的流程化機(jī)器學(xué)習(xí)分析工具.形式上看, 每個(gè)機(jī)器學(xué)習(xí)分析任務(wù)被分解成不同的階段, 以組件的方式組成, 降低了使用者的學(xué)習(xí)成本.技術(shù)上, 通用的算法被封裝成組件包進(jìn)行復(fù)用, 通過參數(shù)設(shè)置實(shí)現(xiàn)訓(xùn)練過程的差異化, 減少了創(chuàng)建機(jī)器學(xué)習(xí)分析程序的時(shí)間成本. 使用者可以通過拖拽算法組件, 靈活地組建自己的分析流程, 提高應(yīng)用的創(chuàng)建與執(zhí)行效率.

        本文將通過相關(guān)工作與目前存在的產(chǎn)品進(jìn)行對(duì)比展示本工具的特點(diǎn), 然后再從系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)、使用案例闡述業(yè)務(wù)模型、深入系統(tǒng)模塊說明功能運(yùn)作等部分進(jìn)行詳細(xì)說明. 同時(shí), 本文將在最后進(jìn)行技術(shù)總結(jié)以及未來研究方向的展望.

        2 相關(guān)工作

        Azure Machine Learning(簡稱“AML”)[4]是微軟在其公有云Azure上推出的基于Web使用的一項(xiàng)機(jī)器學(xué)習(xí)服務(wù), 它內(nèi)置了基于監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)的分類、回歸、聚類等的20多種算法, 并且仍在不斷的增加. 但AML基于Hadoop而且只能在Azure上使用, 與之不同, 本文的工具基于Spark設(shè)計(jì)與實(shí)現(xiàn), 并且能夠靈活的在不同的虛擬機(jī)或云環(huán)境上部署.

        Apache Zeppline[5]是一個(gè)基于Spark的響應(yīng)式的數(shù)據(jù)分析系統(tǒng). 其目標(biāo)是打造集成多種算法庫的、互動(dòng)的、可視化、可分享的Web應(yīng)用. 現(xiàn)已成為開源的筆記式的分析工具, 支持大量的算法庫以及多種語言.但是Zeppline沒有提供一個(gè)用戶友好的圖形接口, 所有分析程序需要用戶編寫腳本提交運(yùn)行, 提高了用戶的編程技術(shù)要求. 本論文的工具提供組件化的圖形工具以及大量的機(jī)器學(xué)習(xí)算法, 用戶可以簡單快速的定義機(jī)器學(xué)習(xí)流程并運(yùn)行得到結(jié)果.

        文獻(xiàn)[6]中介紹一個(gè)大數(shù)據(jù)分析服務(wù)平臺(tái)Haflow.該系統(tǒng)使用了組件的設(shè)計(jì), 可以拖拽組建流程化的分析程序. 并且開放了擴(kuò)展接口, 可以使開發(fā)者創(chuàng)建自定義的分析算法組件. 目前Haflow僅僅支持Hadoop平臺(tái)的MapReduce算法組件, 本文的工具以Haflow為基礎(chǔ), 使其能夠支持Spark的組件應(yīng)用, 并提供大量在Spark環(huán)境下運(yùn)行的機(jī)器學(xué)習(xí)算法.

        3 基于Spark的流程化機(jī)器學(xué)習(xí)分析工具

        3.1 機(jī)器學(xué)習(xí)流程概述

        本文旨在設(shè)計(jì)一個(gè)面向數(shù)據(jù)分析師的流程化機(jī)器學(xué)習(xí)工具, 所以需要實(shí)現(xiàn)常用的機(jī)器學(xué)習(xí)流程的功能.機(jī)器學(xué)習(xí)可以為監(jiān)督學(xué)習(xí)與非監(jiān)督學(xué)習(xí), 主要依據(jù)是否有具體的標(biāo)簽. 標(biāo)簽是觀測數(shù)據(jù)的目標(biāo)或預(yù)測的對(duì)象. 而觀測數(shù)據(jù)是用來訓(xùn)練和測試機(jī)器學(xué)習(xí)模型的樣本. 特征是觀測數(shù)據(jù)的屬性, 機(jī)器學(xué)習(xí)算法主要是從觀測數(shù)據(jù)的特征中訓(xùn)練得到預(yù)測規(guī)律[7].

        實(shí)踐中, 機(jī)器學(xué)習(xí)流程包括一系列的階段, 包括數(shù)據(jù)預(yù)處理、特征處理、模型擬合以及結(jié)果驗(yàn)證或預(yù)測. 例如, 將一組文本文檔進(jìn)行分類包括分詞、清理、提取特征、訓(xùn)練分類模型以及輸出分類結(jié)果[7].

        這些階段可以看作是黑盒過程, 并且可以包裝成組件. 雖然有很多算法庫或是軟件為每個(gè)階段提供了程序, 但是這些程序很少是為大規(guī)模數(shù)據(jù)集或是分布式環(huán)境準(zhǔn)備的, 并且這些程序并不是原生支持流程化,需要開發(fā)人員去連接每一個(gè)階段形成完整的流程.

        所以本系統(tǒng)在提供大量機(jī)器學(xué)習(xí)算法組件的同時(shí),也要完成自動(dòng)執(zhí)行流程的功能, 兼顧流程的運(yùn)行效率.

        3.2 系統(tǒng)業(yè)務(wù)模塊設(shè)計(jì)

        圖1 典型的機(jī)器學(xué)習(xí)流程

        本系統(tǒng)將組件做為主要業(yè)務(wù)功能提供給使用者.分析人員可以將現(xiàn)有組件自由的組合成不同的分析流程. 為了能夠覆蓋常用的機(jī)器學(xué)習(xí)流程, 本系統(tǒng)提供以下幾類業(yè)務(wù)模塊: 輸入輸出模塊、數(shù)據(jù)預(yù)處理模塊、特征處理模塊、模型擬合模塊以及結(jié)果預(yù)測模塊. 與其他系統(tǒng)不同, 本工具設(shè)計(jì)的業(yè)務(wù)模塊以流程中的各階段為定義, 前后依賴.

        ① 輸入輸出模塊. 本模塊用來實(shí)現(xiàn)數(shù)據(jù)的獲取與寫入, 主要處理數(shù)據(jù)源的異構(gòu)性, 是整個(gè)機(jī)器學(xué)習(xí)流程的起點(diǎn)與終點(diǎn). 為了能夠處理不同的數(shù)據(jù)類型,本系統(tǒng)提供結(jié)構(gòu)化數(shù)據(jù)(如CSV數(shù)據(jù))、非結(jié)構(gòu)化數(shù)據(jù)(如TXT數(shù)據(jù))、半結(jié)構(gòu)化數(shù)據(jù)(如HTML數(shù)據(jù))的輸入或輸出功能.

        ② 數(shù)據(jù)預(yù)處理模塊. 本模塊包括數(shù)據(jù)清理、過濾、join/fork與類型改變等功能. 數(shù)據(jù)質(zhì)量決定了機(jī)器學(xué)習(xí)模型準(zhǔn)確度的上限, 所以在進(jìn)行特征提取前, 完善的數(shù)據(jù)預(yù)處理過程也是必需的. 本模塊可以對(duì)空值或異常值的清理、更改數(shù)據(jù)類型, 并且可以過濾掉不符合條件的數(shù)據(jù).

        ③ 特征處理模塊. 特征處理是在對(duì)數(shù)據(jù)進(jìn)行建模前最重要的環(huán)節(jié), 包括特征選擇與特征抽取兩種功能本系統(tǒng)目前包含25種常用的特征處理算法, .

        特征選擇是對(duì)多維的特征進(jìn)行選擇, 利用算法挑選最有價(jià)值的特征, 選出的特征是原來特征的子集.根據(jù)選擇的算法不同分為信息增益選擇器、卡方信息選擇器與Gini系數(shù)選擇器等組件.

        特征抽取是將觀測數(shù)據(jù)的特征按照一定算法轉(zhuǎn)換成新的變量, 相對(duì)于數(shù)據(jù)預(yù)處理, 對(duì)數(shù)據(jù)的處理規(guī)則更加的復(fù)雜. 抽取后的特征是原有特征的映射, 包括以下幾類:

        I.標(biāo)準(zhǔn)化組件. 標(biāo)準(zhǔn)化是將數(shù)據(jù)的數(shù)值型特征映射到統(tǒng)一的量綱的算法. 經(jīng)過標(biāo)準(zhǔn)化的特征被統(tǒng)一到相同的參考系下, 使訓(xùn)練出來的模型更加準(zhǔn)確, 訓(xùn)練過程中收斂更快. 不同的標(biāo)準(zhǔn)化組件使用不同的統(tǒng)計(jì)量進(jìn)行映射. 如Normalizer組件、StandardScaler組件、MinMaxScaler組件等.

        II.文本處理組件. 文本類型的特征由于不能直接計(jì)算, 需要映射到新的數(shù)值類型變量上. 常用的算法有將文本進(jìn)行分詞建立索引的TF-IDF組件, 分詞Tokenizer組件, 獨(dú)熱編碼OneHotEncoder組件等.

        III.降維類組件. 這類組件將原有的特征通過一定的算法, 將原有的特征信息進(jìn)行壓縮, 用更少的特征進(jìn)行表示, 如主成分分析PCA組件等.

        IV.自定義UDF組件. 用戶可以輸入SQL自定義特征處理的功能.

        ④ 模型擬合模塊. 模型訓(xùn)練是用某種算法對(duì)數(shù)據(jù)進(jìn)行學(xué)習(xí), 得到的模型可以用于后續(xù)對(duì)數(shù)據(jù)的預(yù)測.本系統(tǒng)目前提供大量的監(jiān)督學(xué)習(xí)模型組件, 根據(jù)觀測數(shù)據(jù)標(biāo)簽性質(zhì)的不同, 可以分為分類模型與回歸模型.

        ⑤ 結(jié)果預(yù)測模塊. 本模塊包括結(jié)果預(yù)測與驗(yàn)證兩個(gè)功能.

        通過以上通用的業(yè)務(wù)模塊的設(shè)計(jì), 用戶可以在本系統(tǒng)環(huán)境下創(chuàng)建多樣化的常用的機(jī)器學(xué)習(xí)分析流程.

        3.3 系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)

        本系統(tǒng)通過Web提供用戶接口, 以整體架構(gòu)以MVC框架為主, 同時(shí)提供機(jī)器學(xué)習(xí)的業(yè)務(wù)模塊以及流程的執(zhí)行模塊, 系統(tǒng)體系結(jié)構(gòu)如圖2所示.

        圖2 系統(tǒng)體系結(jié)構(gòu)圖與工作流程圖

        用戶通過系統(tǒng)提供的Web界面創(chuàng)建形式上的機(jī)器學(xué)習(xí)流程, 提交給系統(tǒng). 系統(tǒng)將把接收到的原始流程轉(zhuǎn)換成邏輯流程圖, 并對(duì)流程圖進(jìn)行有效性驗(yàn)證. 流程的有效性驗(yàn)證是分析流程在實(shí)際執(zhí)行前的必要的一環(huán), 當(dāng)流程有明顯的邏輯或數(shù)據(jù)不匹配等錯(cuò)誤時(shí), 能夠立該返回錯(cuò)誤, 而不是等執(zhí)行到相應(yīng)的組件時(shí)再報(bào)錯(cuò), 提高了系統(tǒng)的運(yùn)行效率.

        系統(tǒng)的執(zhí)行引擎是系統(tǒng)的關(guān)鍵模塊, 實(shí)現(xiàn)多用戶和多任務(wù)的流程執(zhí)行功能. 它將驗(yàn)證有效的邏輯流程圖翻譯成相應(yīng)的執(zhí)行模型, 執(zhí)行模型即是系統(tǒng)可識(shí)別的用來調(diào)度相應(yīng)業(yè)務(wù)組件的數(shù)據(jù)結(jié)構(gòu). 執(zhí)行模型的翻譯是一個(gè)復(fù)雜的過程, 本文將在4.3節(jié)中進(jìn)行詳細(xì)介紹.

        4 系統(tǒng)實(shí)現(xiàn)及關(guān)鍵技術(shù)研究

        4.1 中間數(shù)據(jù)的存儲(chǔ)與管理

        4.1.1 中間數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)

        在整個(gè)機(jī)器學(xué)習(xí)流程中, 數(shù)據(jù)處于流動(dòng)的狀態(tài),具有順序依賴的組件需要傳遞中間數(shù)據(jù). 為了避免中間數(shù)據(jù)異構(gòu)性的問題, 本系統(tǒng)規(guī)定組件間使用統(tǒng)一的基于DataFrame[8]的列式存儲(chǔ)結(jié)構(gòu)進(jìn)行通信. DataFrame是一種Spark支持的以列為主的分布式數(shù)據(jù)集合, 在概念上類似于關(guān)系數(shù)據(jù)庫的“表”, 但在Spark底層對(duì)其運(yùn)算執(zhí)行做了很多優(yōu)化. 這種方式保留了結(jié)構(gòu)化數(shù)據(jù)的關(guān)系, 并且對(duì)特殊的數(shù)據(jù)屬性進(jìn)行定義,規(guī)定features和label作為模型擬合階段所需數(shù)據(jù)的頭部, 以方便流程的驗(yàn)證與執(zhí)行.

        這種列式存儲(chǔ)結(jié)構(gòu)可以被整個(gè)系統(tǒng)快速的持久化到中間數(shù)據(jù)存儲(chǔ)層, 并且在后面的組件使用時(shí)快速的還原成需要的數(shù)據(jù)對(duì)象.

        4.1.2 中間數(shù)據(jù)的管理

        中間數(shù)據(jù)在不同的生命周期需要不同的管理. 當(dāng)組件對(duì)之前的數(shù)據(jù)進(jìn)行處理后, 即在中間數(shù)據(jù)的生成階段, 系統(tǒng)會(huì)記錄中間數(shù)據(jù)的生成位置, 用于傳遞給下一組件. 在流程執(zhí)行結(jié)束后, 所有該流程產(chǎn)生的中間數(shù)據(jù)將不再被使用, 會(huì)被系統(tǒng)統(tǒng)一刪除. 同時(shí), 單個(gè)流程的中間數(shù)據(jù)存儲(chǔ)空間有規(guī)定的上限, 當(dāng)中間數(shù)據(jù)產(chǎn)生過多時(shí), 流程的資源管理器將采用近期最少使用算法(LRU, Least Recently Used)[9]對(duì)數(shù)據(jù)進(jìn)行清除,以防止中間數(shù)據(jù)過多發(fā)生內(nèi)存溢出的問題.

        為了保證中間數(shù)據(jù)的IO效率, 本系統(tǒng)使用Alluxio[10]作為中間的存儲(chǔ)層, 將中間數(shù)據(jù)全部保存在內(nèi)存中. Alluxio是一種基于內(nèi)存的虛擬分布式存儲(chǔ)系統(tǒng), 可以大幅加速數(shù)據(jù)的讀寫速度.

        4.2 機(jī)器學(xué)習(xí)業(yè)務(wù)組件的實(shí)現(xiàn)方法

        4.2.1 基于Spark MLlib的機(jī)器學(xué)習(xí)分析組件的實(shí)現(xiàn)

        本文在第3.2節(jié)詳細(xì)的說明了系統(tǒng)的機(jī)器學(xué)習(xí)模塊的設(shè)計(jì), 這些模塊通過組件的形式完成主要的數(shù)據(jù)處理與建模功能. 為了快速的提供盡可能多的算法組件, 除了少部分根據(jù)機(jī)器學(xué)習(xí)流程的特點(diǎn)編寫了處理程序的組件, 如輸入輸出組件、數(shù)據(jù)清理組件等, 很多的組件功能通過Spark MLlib自動(dòng)轉(zhuǎn)換成相應(yīng)的Spark Job完成. Spark MLlib[11]是Spark自帶的機(jī)器學(xué)習(xí)算法庫, 包含了大量的分類、回歸、聚類、降維等算法. 例如使用隨機(jī)森林進(jìn)行分類, 系統(tǒng)的執(zhí)行引擎根據(jù)流程的結(jié)點(diǎn)信息, 實(shí)例化具有相應(yīng)參數(shù)的RandomForestClassifier對(duì)象, 調(diào)用fit方法對(duì)輸入的數(shù)據(jù)進(jìn)行擬合, 生成相應(yīng)的Model對(duì)象, 然后通過中間數(shù)據(jù)管理模塊將模型序列化保存, 供后續(xù)的預(yù)測或驗(yàn)證組件使用. 通過這種方法, 能夠保證每個(gè)學(xué)習(xí)算法的質(zhì)量, 而且能與Spark社區(qū)同步, 快速的添加新的算法組件.

        4.2.2 共享Spark上下文執(zhí)行流程中的組件

        流程中的組件有兩種運(yùn)行方式. 一種是作為獨(dú)立的Spark程序調(diào)用, 每次運(yùn)行都啟動(dòng)一次Spark上下文(SparkContext). Spark程序在剛開始啟動(dòng)時(shí), 會(huì)創(chuàng)建上下文環(huán)境, 確定資源分配, 如調(diào)用多少線程、內(nèi)存, 之后再進(jìn)行相應(yīng)的任務(wù)調(diào)度. 一般的機(jī)器學(xué)習(xí)流程由很多個(gè)組件組成, 將會(huì)花費(fèi)大量的運(yùn)行時(shí)間去完成上下文的啟動(dòng)與切換. 另一種方法, 可以令每個(gè)流程共享同一個(gè)上下文, 整個(gè)流程可以看作是一個(gè)大的Spark程序. 但系統(tǒng)的執(zhí)行引擎需要為每個(gè)流程創(chuàng)建與管理上下文, 在流程結(jié)束時(shí)也要將上下文對(duì)象釋放回收資源.

        為實(shí)現(xiàn)上下文的共享, 每個(gè)組件都要繼承SparkJobLike或者其子類, 并實(shí)現(xiàn)創(chuàng)建組件對(duì)象(createInstance)與執(zhí)行組件(execute)方法. 圖3是類的設(shè)計(jì)與繼承關(guān)系圖. 其中, Transformers、Models、Predictors分別是數(shù)據(jù)清理與數(shù)據(jù)預(yù)處理模型、學(xué)習(xí)訓(xùn)練模型、驗(yàn)證與預(yù)測模型的父類.

        圖3 組件類設(shè)計(jì)與繼承關(guān)系圖

        4.3 機(jī)器學(xué)習(xí)流程的創(chuàng)建與驗(yàn)證

        當(dāng)用戶通過圖形界面設(shè)計(jì)好機(jī)器學(xué)習(xí)分析流程并提交后, 系統(tǒng)將開始創(chuàng)建邏輯上的分析流程. 系統(tǒng)首先通過對(duì)原始流程進(jìn)行拓?fù)浞治? 生成以有向無環(huán)圖(DAG, Directed Acyclic Graph)來表示的邏輯流程圖.邏輯流程圖包括各組件的前后依賴與并行關(guān)系, 以及輸入輸出、參數(shù)信息.

        當(dāng)前流程的邏輯結(jié)構(gòu)生成后, 將對(duì)整體流程的有效性進(jìn)行驗(yàn)證. 具體步驟如下:

        ① 檢查圖中每個(gè)結(jié)點(diǎn)的輸入與輸出及其他必要的參數(shù)信息, 缺少則返回錯(cuò)誤, 如特征處理的組件用戶必須定義input column與output column;

        ② 檢查整個(gè)流程的完整性, 如是否存在至少一個(gè)輸入組件與輸出組件作為開端和結(jié)束, 否則返回錯(cuò)誤;

        ③ 檢查流程圖中是否存在自循環(huán), 否則返回錯(cuò)誤;

        ④ 檢查各個(gè)組件是否符合機(jī)器學(xué)習(xí)流程的前后依賴關(guān)系, 比如特征處理必須在模型擬合之前, 不符合則返回錯(cuò)誤.

        4.4 機(jī)器學(xué)習(xí)流程的翻譯與執(zhí)行

        對(duì)流程進(jìn)行驗(yàn)證后, 流程圖將被提交給執(zhí)行引擎.首先系統(tǒng)需要將邏輯的流程圖表示成可以直接執(zhí)行的模型, 再轉(zhuǎn)換成基于Spark MLlib的機(jī)器學(xué)習(xí)算法組件再串行或并行執(zhí)行, 這個(gè)過程稱為流程的翻譯與執(zhí)行. MLlib[11]是Spark內(nèi)置支持的分布式機(jī)器學(xué)習(xí)算法庫,優(yōu)化了大規(guī)模數(shù)據(jù)和模型的并行存儲(chǔ)和運(yùn)算. 使用Spark MLlib, 可以快速開發(fā)出大量高效的組件程序.這部分將著重介紹系統(tǒng)如何將流程翻譯成可以執(zhí)行的模型, 加速機(jī)器學(xué)習(xí)分析流程的運(yùn)行.

        4.4.1 流程中同時(shí)發(fā)生多個(gè)并行join/fork任務(wù)

        Join組件是將不同的數(shù)據(jù)集歸并到同一個(gè)數(shù)據(jù)集的組件, 與之前的組件是多對(duì)一的關(guān)系. Fork組件是將同一個(gè)數(shù)據(jù)集分別應(yīng)用到不同流程分支的組件, 與之后的組件是一對(duì)多的關(guān)系. Join/fork組件在實(shí)際中有大量的應(yīng)用, 比如用于商品推薦的協(xié)同過濾算法中,為了充分的描繪用戶信息, 需要同時(shí)join用戶的交易數(shù)據(jù)、品牌數(shù)據(jù)、出生居住地信息等各種關(guān)聯(lián)的數(shù)據(jù).得到的具體的用戶剖繪(user profile)再fork到每個(gè)商品得到相應(yīng)的偏好概率[12].

        當(dāng)發(fā)生多個(gè)數(shù)據(jù)集同時(shí)join的任務(wù)時(shí), 為了高效率的并行執(zhí)行流程, 使用分治算法, 將不同的join分支分別執(zhí)行, 最后再歸并. 當(dāng)從同一數(shù)據(jù)集fork出多個(gè)流程分支時(shí), 對(duì)每個(gè)流程分支并行執(zhí)行, 不影響最終的模型結(jié)果. 總之, 對(duì)有多個(gè)join以及fork任務(wù)的機(jī)器學(xué)習(xí)流程要盡可能的并行執(zhí)行, 提高運(yùn)行效率.

        4.4.2 多個(gè)串行與并行任務(wù)的復(fù)合流程的翻譯

        上一節(jié)介紹了當(dāng)流程中出現(xiàn)多個(gè)join/fork的并行任務(wù)時(shí)的翻譯方法, 但是實(shí)際中的機(jī)器學(xué)習(xí)流程并不會(huì)是單純的串行或并行的關(guān)系, 而是串行的任務(wù)和并行的任務(wù)組合成的, 所以實(shí)際中的機(jī)器學(xué)習(xí)流程的情況更加復(fù)雜. 要將復(fù)雜的流程轉(zhuǎn)換成執(zhí)行引擎, 其難點(diǎn)在于要盡可能的并行執(zhí)行流程, 但不會(huì)打亂組件的之間的數(shù)據(jù)依賴關(guān)系. 以下為復(fù)合流程的翻譯方法:

        ① 對(duì)流程圖進(jìn)行廣度優(yōu)先遍歷, 確定業(yè)務(wù)組件間的拓?fù)潢P(guān)系;

        ② 以數(shù)據(jù)預(yù)處理、特征處理、模型擬合與預(yù)測的階段為標(biāo)準(zhǔn)劃分相同階段的子流程;

        ③ 通過關(guān)鍵路徑算法判斷各子流程內(nèi)部的執(zhí)行情況, 以拓?fù)淝闆r確定子流程中分支的層次關(guān)系;

        ④ 上個(gè)步驟后得到的同一層次的分支再按照上一節(jié)的算法進(jìn)行優(yōu)化.

        圖4 多個(gè)join和fork并行流程的翻譯

        5 案例分析

        5.1 實(shí)驗(yàn)環(huán)境與數(shù)據(jù)說明

        目前本系統(tǒng)尚處于原型階段, 為了實(shí)驗(yàn)系統(tǒng)功能,本文使用四核處理器、8G內(nèi)存、64位Ubuntu系統(tǒng)的單機(jī)布署偽分布式的環(huán)境進(jìn)行實(shí)驗(yàn).

        實(shí)驗(yàn)數(shù)據(jù)是來自Kaggle[13]的公開數(shù)據(jù)集, 通過2003年至2015年的洛杉磯城市的犯罪記錄數(shù)據(jù), 對(duì)犯罪類別進(jìn)行建模. 為了方便流程的展示說明, 本文選取了三個(gè)原始特征, 選用常用的機(jī)器學(xué)習(xí)分析方法創(chuàng)建流程, 特征與標(biāo)簽的數(shù)據(jù)特點(diǎn)如表1所示. 總結(jié)來說特征與標(biāo)簽以字符串為主, 需要數(shù)據(jù)預(yù)處理進(jìn)行特征提取, 并映射成數(shù)值型的特征.

        表1 數(shù)據(jù)特點(diǎn)說明

        5.2 機(jī)器學(xué)習(xí)流程的創(chuàng)建與說明

        為了將原始特征轉(zhuǎn)換成訓(xùn)練模型可以計(jì)算的數(shù)值型特征向量, 需要進(jìn)行一系列的數(shù)據(jù)預(yù)處理工作. 表2是對(duì)每個(gè)特征處理方法的說明, 全部的參數(shù)設(shè)置一般為默認(rèn), 如有改動(dòng)會(huì)特別說明.

        表2 數(shù)據(jù)預(yù)處理說明

        預(yù)處理后得到的特征將通過Join組件合并成features向量, 經(jīng)過TF-IDF后特征向量的維度高但比較稀疏, 使用ChiSqSelector選擇卡方信息量最大的100個(gè)特征擬合模型. 采用LogisticRegression-WithLBFGS擬合多分類模型, 然后將測試數(shù)據(jù)通過訓(xùn)練好的模型進(jìn)行預(yù)測, 將結(jié)果輸出保存成CSV文件.圖5是將上述分析流程在系統(tǒng)創(chuàng)建后的界面.

        圖5 創(chuàng)建好的流程圖界面

        5.3 實(shí)驗(yàn)結(jié)果分析

        通過比較測試數(shù)據(jù)的預(yù)測值和實(shí)際的label, 準(zhǔn)確率在72.54%左右. 如果向流程中添加更多的特征, 模型的復(fù)雜度會(huì)變大, 同時(shí)準(zhǔn)確率也會(huì)上升. 使用本系統(tǒng), 可以方便快速的創(chuàng)建機(jī)器學(xué)習(xí)流程, 用戶可以專注于分析方法的改進(jìn).

        本文在第四部分介紹了流程的并行執(zhí)行優(yōu)化, 為了測試優(yōu)化方法的有效性, 將本實(shí)驗(yàn)的數(shù)據(jù)隨機(jī)抽取,分成10%、20%、30%...100%大小的十份數(shù)據(jù), 將這十份數(shù)據(jù)分別使用優(yōu)化過的方法和沒有優(yōu)化的方法執(zhí)行本實(shí)驗(yàn)的分析流程, 沒有優(yōu)化是指將流程中的組件按照前后順序串行執(zhí)行, 獲得每個(gè)流程的運(yùn)行時(shí)間, 單位為ms, 如圖6所示.

        圖6 優(yōu)化與未優(yōu)化的時(shí)間效率對(duì)比圖表

        可以看出, 隨著數(shù)據(jù)量的線性增長, 未優(yōu)化的流程執(zhí)行的時(shí)間增長的更加快, 而且到后期時(shí)間的增長率有增大的趨勢. 而經(jīng)過優(yōu)化的流程執(zhí)行方案, 隨著數(shù)據(jù)量的增加, 時(shí)間增長的相對(duì)緩慢, 說明系統(tǒng)執(zhí)行優(yōu)化方案的有效性.

        6 結(jié)論

        本文為了解決數(shù)據(jù)分析師采用Spark開展大規(guī)模數(shù)據(jù)的機(jī)器學(xué)習(xí)分析的問題, 設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)分布式的、支持多種機(jī)器學(xué)習(xí)算法的流程化的分析系統(tǒng)的原型. 本文的第三部分從整體介紹了本系統(tǒng)的業(yè)務(wù)模型與體系結(jié)構(gòu). 第四部分從各個(gè)模塊開始詳細(xì)說明關(guān)鍵技術(shù), 包括中間數(shù)據(jù)的存儲(chǔ)與管理、機(jī)器學(xué)習(xí)業(yè)務(wù)組件的實(shí)現(xiàn)、機(jī)器學(xué)習(xí)流程的創(chuàng)建與驗(yàn)證、機(jī)器學(xué)習(xí)流程的翻譯與執(zhí)行. 并且對(duì)復(fù)雜的機(jī)器學(xué)習(xí)流程的執(zhí)行在邏輯上進(jìn)行了優(yōu)化, 將邏輯流程圖翻譯成可以在物理執(zhí)行階段盡可能高效的并行執(zhí)行的模型.

        本系統(tǒng)目前將Spark MLlib所有算法自動(dòng)轉(zhuǎn)換為組件, 仍需要在實(shí)踐中不斷的對(duì)算法庫進(jìn)行擴(kuò)展. 同時(shí), 未來可以在數(shù)據(jù)依賴的方面進(jìn)行研究, 如系統(tǒng)可以對(duì)數(shù)據(jù)集自動(dòng)進(jìn)行分片, 將同一數(shù)據(jù)集的不同特征的處理任務(wù)分配到不同的分布式結(jié)點(diǎn)并行處理, 提高特征處理任務(wù)的執(zhí)行效率以及分布式資源的利用率.

        1 Labrinidis A, Jagadish H V. Challenges and opportunities with big data. Proc. of the VLDB Endowment, 2012, 5(12): 2032–2033.

        2 http://hadoop.apache.org/docs/current/.

        3 Zaharia M, Chowdhury M, Franklin M J, et al. Spark: Cluster computing with working sets. HotCloud, 2010, 10: 10–10.

        4 https://azure.microsoft.com/en-us/blog/.

        5 https://zeppelin.incubator.apache.org/docs/0.5.6-incubating.

        6 趙薇,劉杰,葉丹.基于組件的大數(shù)據(jù)分析服務(wù)平臺(tái).計(jì)算機(jī)科學(xué),2014,41(9):75–79.

        7 Carbonell JG, Michalski RS, Mitchell TM. An Overview of Machine Learning. Springer Berlin Heidelberg, 1983: 3–23.

        8 Armbrust M, Xin RS, Lian C, et al. Spark sql: Relational data processing in Spark. Proc. of the 2015 ACM SIGMOD International Conference on Management of Data. ACM. 2015. 1383–1394.

        9 Megiddo N, Modha DS. Outperforming LRU with an adaptive replacement cache algorithm. Computer, 2004, 37(4): 58–65.

        10 Li H, Ghodsi A, Zaharia M, et al. Reliable, memory speed storage for cluster computing frameworks. Proc. SoCC, 2014. 11 Meng X, Bradley J, Yavuz B, et al. Mllib: Machine learning in apache Spark. arXiv preprint, arXiv:1505.06807, 2015.

        12 鄧愛林,朱揚(yáng)勇,施伯樂.基于項(xiàng)目評(píng)分預(yù)測的協(xié)同過濾推薦算法.軟件學(xué)報(bào),2003,14(9):1621-1628.

        13 https://www.kaggle.com/c/sf-crime.

        Method of Implement Machine Learning Analysis with Workflow Based on Spark Platform

        ZHAO Ling-Ling1,2, LIU Jie2, WANG Wei212
        (University of Chinese Academy of Sciences, Beijing 10090, China) (Technology Center of Software Engineering, Institute of Software, Chinese Academy of Sciences, Beijing 100190, China)

        By using resilient distributed dataset, Spark is more adapted to iterative algorithms, which are common in data mining and machine learning jobs. However, the development of Spark applications is complicated for data analysts on account of the high threshold to learn scala, the rich experience of code optimization and system deployment, as well as multiple duplicated work due to the low reusing of code. We design and develop a machine learning tool with visible workflow style based on Spark. We design the stages of machine learning with workflow modules, including data preprocessing, feature processing, model training and validation. Meanwhile, a friendly user interface is brought forward to accelerate the design of machine learning workflow model for analysts, with the support of auto parsing from modules to Spark jobs by server end. This tool can greatly improves the efficiency of machine learning development on Spark platform. We introduce the theoretical methods and critical techniques in the paper, and prove its validity with a real instance.

        machine learning; data analysis; distributed; big data; Spark

        國家自然科學(xué)基金(U1435220)

        2016-03-21;收到修改稿時(shí)間:2016-04-11

        10.15888/j.cnki.csa.005454

        猜你喜歡
        組件機(jī)器流程
        機(jī)器狗
        無人機(jī)智能巡檢在光伏電站組件診斷中的應(yīng)用
        能源工程(2022年2期)2022-05-23 13:51:50
        機(jī)器狗
        吃水果有套“清洗流程”
        新型碎邊剪刀盤組件
        U盾外殼組件注塑模具設(shè)計(jì)
        未來機(jī)器城
        電影(2018年8期)2018-09-21 08:00:06
        違反流程 致命誤判
        本刊審稿流程
        析OGSA-DAI工作流程
        激情综合色五月丁香六月亚洲| 日韩精品中文字幕第二页 | 大桥未久av一区二区三区| 少妇aaa级久久久无码精品片| 欧美自拍视频在线| 国产颜射视频在线播放| 国产综合开心激情五月| 中文字幕中文有码在线| av人摸人人人澡人人超碰小说| 国产精品国产自线拍免费| 国产韩国一区二区三区| 国产精品爽爽ⅴa在线观看| 亚洲精品无码人妻无码| 欧美成人网视频| 日本人妻精品有码字幕| 成人免费xxxxx在线观看| 国产一区免费观看| 女优av福利在线观看| 在线视频中文字幕一区二区三区| 青草内射中出高潮| 亚洲视频99| 91桃色在线播放国产| 国产精品国产三级国产aⅴ下载| 精品麻豆国产色欲色欲色欲www| 亚洲韩国在线| 手机av在线播放网站| 亚洲性久久久影院| 国产av日韩a∨亚洲av电影 | 少妇被躁到高潮和人狍大战| 久久久久88色偷偷| 国产精品揄拍100视频| 91亚洲精品久久久蜜桃| 不卡一区二区视频日本| 国产97色在线 | 亚洲| 国产精品系列亚洲第一| 男女啪啪动态视频在线观看| 久久午夜羞羞影院免费观看| 亚洲精品无码久久毛片| 加勒比亚洲视频在线播放| 国产成人91久久麻豆视频| 婷婷午夜天|