<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          PySpark ML——分布式機(jī)器學(xué)習(xí)庫

          共 2104字,需瀏覽 5分鐘

           ·

          2020-09-12 15:37


          導(dǎo)讀

          繼續(xù)PySpark學(xué)習(xí)之路,本篇開啟機(jī)器學(xué)習(xí)子模塊的介紹,不會(huì)更多關(guān)注機(jī)器學(xué)習(xí)算法原理,僅對(duì)ML庫的基本框架和理念加以介紹。最后用一個(gè)小例子實(shí)戰(zhàn)對(duì)比下sklearn與pyspark.ml庫中隨機(jī)森林分類器效果。

          01 ml庫簡(jiǎn)介

          前文介紹到,spark在核心數(shù)據(jù)抽象RDD的基礎(chǔ)上,支持4大組件,其中機(jī)器學(xué)習(xí)占其一。進(jìn)一步的,spark中實(shí)際上支持兩個(gè)機(jī)器學(xué)習(xí)模塊,MLlib和ML,區(qū)別在于前者主要是基于RDD數(shù)據(jù)結(jié)構(gòu),當(dāng)前處于維護(hù)狀態(tài);而后者則是DataFrame數(shù)據(jù)結(jié)構(gòu),支持更多的算法,后續(xù)將以此為主進(jìn)行迭代。所以,在實(shí)際應(yīng)用中優(yōu)先使用ML子模塊,本文也將針對(duì)此介紹。


          與此同時(shí),spark.ml庫與Python中的另一大機(jī)器學(xué)習(xí)庫sklearn的關(guān)系是:spark.ml庫支持大部分機(jī)器學(xué)習(xí)算法和接口功能,雖遠(yuǎn)不如sklearn功能全面,但主要面向分布式訓(xùn)練,針對(duì)大數(shù)據(jù);而sklearn是單點(diǎn)機(jī)器學(xué)習(xí)算法庫,支持幾乎所有主流的機(jī)器學(xué)習(xí)算法,從樣例數(shù)據(jù)、特征選擇、模型選擇和驗(yàn)證、基礎(chǔ)學(xué)習(xí)算法和集成學(xué)習(xí)算法,提供了機(jī)器學(xué)習(xí)一站式解決方案,但僅支持并行而不支持分布式。


          所以在實(shí)際應(yīng)用中,可綜合根據(jù)數(shù)據(jù)體量大小和具體機(jī)器學(xué)習(xí)算法決定采用哪個(gè)框架。



          02 pyspark.ml庫主要模塊

          相比于sklearn十八般武器俱全,pyspark.ml訓(xùn)練機(jī)器學(xué)習(xí)庫其實(shí)主要就是三板斧:Transformer、Estimator、Pipeline。其中:

          • Transformer主要對(duì)應(yīng)feature子模塊,實(shí)現(xiàn)了算法訓(xùn)練前的一系列的特征預(yù)處理工作,例如word2vec、onehotencoder等,主要對(duì)應(yīng)操作為transform

          • Estimator對(duì)應(yīng)各種機(jī)器學(xué)習(xí)算法,主要區(qū)分分類、回歸、聚類和推薦算法4大類,具體可選算法大多在sklearn中均有對(duì)應(yīng),主要對(duì)應(yīng)操作為fit

          • Pipeline是為了將一些列轉(zhuǎn)換和訓(xùn)練過程形成流水線的容器(實(shí)際在sklearn中也有pipeline),類似于RDD在轉(zhuǎn)換過程中形成DAG的思路一致,分階段調(diào)用transformer中的transform操作或estimator中的fit操作


          具體各模塊不再詳細(xì)給出,僅補(bǔ)充如下3點(diǎn)說明:

          • 延遲執(zhí)行:延遲執(zhí)行是基于DAG實(shí)現(xiàn),也是Spark實(shí)現(xiàn)運(yùn)行效率優(yōu)化的一大關(guān)鍵。無論是基于RDD數(shù)據(jù)抽象的MLlib庫,還是基于DataFrame數(shù)據(jù)抽象的ML庫,都沿襲了spark的這一特點(diǎn),即在中間轉(zhuǎn)換過程時(shí)僅記錄邏輯轉(zhuǎn)換順序,而直到遇有產(chǎn)出非結(jié)果時(shí)才真正執(zhí)行,例如評(píng)估和預(yù)測(cè)等;

          • DataFrame增加列:DataFrame是不可變對(duì)象,所以在實(shí)際各類transformer處理過程中,處理的邏輯是在輸入對(duì)象的基礎(chǔ)上增加新列的方式產(chǎn)生新對(duì)象,所以多數(shù)接口需指定inputCol和outCol參數(shù),理解這一過程會(huì)更有助于學(xué)習(xí)ml處理和訓(xùn)練流程;

          • 算法與模型:個(gè)人認(rèn)為這是spark.ml中比較好的一個(gè)細(xì)節(jié),即嚴(yán)格區(qū)分算法和模型的定義邊界,而這在其他框架或大多數(shù)學(xué)習(xí)者的認(rèn)知中是一個(gè)模糊的概念。在Spark中,算法是通常意義下的未經(jīng)過訓(xùn)練的機(jī)器學(xué)習(xí)算法,例如邏輯回歸算法、隨機(jī)森林算法,由于未經(jīng)過訓(xùn)練,所以這里的算法是通用的;而模型則是經(jīng)過訓(xùn)練后產(chǎn)出的帶有參數(shù)配置的算法,經(jīng)過訓(xùn)練后可直接用于預(yù)測(cè)和生產(chǎn)。所以,從某種意義上講,模型=算法+配套參數(shù)。在spark中,模型在相應(yīng)算法命名基礎(chǔ)上帶有Model后綴,例如LinearSVC和LinearSVCModel,前者是算法,后者則是模型。



          03 pyspark.ml對(duì)比實(shí)戰(zhàn)

          這里仍然是采用之前的一個(gè)案例(武磊離頂級(jí)前鋒到底有多遠(yuǎn)?),對(duì)sklearn和pyspark.ml中的隨機(jī)森林回歸模型進(jìn)行對(duì)比驗(yàn)證。具體數(shù)據(jù)和特征構(gòu)建的過程可查閱前文了解,這里不再贅述。


          選取球員各項(xiàng)能力數(shù)據(jù),對(duì)PES中球員星級(jí)(取值為1-5,多分類任務(wù))進(jìn)行預(yù)測(cè),訓(xùn)練集和測(cè)試集比例為7:3。兩個(gè)庫中模型參數(shù)均采用相同參數(shù)(訓(xùn)練100棵最大深度為5的決策樹,構(gòu)建隨機(jī)森林)。基于測(cè)試集對(duì)多分類結(jié)果預(yù)測(cè)準(zhǔn)確率進(jìn)行評(píng)估,得到結(jié)果對(duì)比如下:


          spark機(jī)器學(xué)習(xí)中的隨機(jī)森林分類器準(zhǔn)確率


          sklearn中的隨機(jī)森林分類器準(zhǔn)確率


          sklearn中隨機(jī)森林分類器評(píng)分要更高一些,更進(jìn)一步深入的對(duì)比分析留作后續(xù)探索。



          相關(guān)閱讀:


          瀏覽 59
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码性爱片 | 特大黄片视屏 | 欧美爆操 | AV黄色在线观看 | 日韩精品综合在线 |