日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

禅道开源版用户手册_自动化建模 | H2O开源工具介绍

發布時間:2023/12/31 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 禅道开源版用户手册_自动化建模 | H2O开源工具介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來這里找志同道合的小伙伴!

引 言

相信大家在日常的建模工作中都會或多或少地思考一個問題:建模可不可以被自動化?今天將圍繞這個問題向大家介紹一個開源的自動建模工具H2O。本文將會cover以下三個部分:

1、H2O工具是什么;

2、基于H2O自動建模的具體流程與實戰代碼展示;

3、關于自動建模的一些思考。

希望本文能夠幫助到大家,當你們沒有足夠的算法工程師但又想利用大數據建模提升企業效率的時候,使用自動建模工具也許是一個不錯的選擇。

H2O簡介

H2O.ai是初創公司Oxdata于2014年推出的一個獨立開源機器學習平臺,它的主要服務對象是數據科學家和數據工程師,主要功能就是為App提供快速的機器學習引擎。目前它在全世界服務超過18,000家企業,服務用戶數超過20萬。根據H2O官網的介紹,它的主要優點包括:

  • 支持大量的無監督式和監督式機器學習算法

  • 支持通過R與Python進行引入包的方式進行模型的開發

  • 能夠提供給用戶一個類似于jupyter notebook的UI界面進行“托拉拽”式的模型開發

  • 支持模型的快速部署(用戶可以在訓練后下載基于Java的POJO和MOJO文件)

  • 支持自動化建模和自動化參數調優

H2O實戰練習

大家可以使用在Python或R中引入H2O包的形式進行該工具的使用,也可以下載軟件在UI界面進行托拉拽的操作。

一、基于H2O Python包的機器學習實現

首先,一起來看看在Python環境中看看如何使用這個工具進行建模(目前支持Python版本為2.7/3.5/3.6)。

1、下載安裝包

首先在安裝包之前先進行依賴包的安裝,最后下載并安裝H2O的whl文件,如下(使用H2O之前請讀者務必在服務器或本地安裝Java):

安裝完畢后進入Python環境(這里使用的是Jupyter Lab的交互環境,類似Jupyter Notebook)。

2、引入包并查看環境

引入H2O的包后可以查看到目前集群的狀態,如下

現在可以看到集群的內存、cores、Python版本等信息;另外H2O.ls()命令類似于Linux中的ls命令,它可以提供目前讀取到內存的數據集以及訓練好的模型Object有哪些,由于還沒有引入數據、也沒有訓練任何模型,因此沒有任何objects。

3、引入、查看、整理數據集?

下面通過H2O引入并查看一個用來訓練的數據集,該數據集為電商場景的二分類數據,特征包括一些用戶RFM、瀏覽、加購等信息,y為用戶是否會在之后7天內下單購物。

在進行導入數據后,發現user_id(這里叫pin)依然在數據集中,進行列刪除操作。

同時,由于要訓練的是二分類(classification)模型,所以需要將y(這里為buy_tag)的類型從int改為enum枚舉值,這樣在模型的訓練過程中會默認選擇AUC作為評價指標。

4、導入模型module并建立模型object

這里選擇GBM這個基于樹的算法進行模型的開發,并設置100個樹,最大深度設置為10,并設置10折交叉驗證。

5、訓練模型并展示訓練結果

這里train()的參數非常多,找一些重點來舉例; x為特征的名字集合,y為label,training_frame為訓練集。

當然用戶也可以通過將數據集分為訓練集、測試集的方式來獲取out-of-sample AUC等指標,這里通過交叉驗證來獲取該指標。訓練完畢后可以進行效果展示。

可以看到在模型結果中H2O自動幫用戶計算了大部分評價指標,在這個二分類任務中重點看AUC,可以發現在cross-validation數據集上的AUC為0.824,效果還不錯,同時結果中默認給出了能夠是F1 score達到最大的閾值(在這里為0.316)以及相應的混淆矩陣。

由于不同模型涉及到不同參數,具體模型參數設定可見H2O的官方文檔?

http://h2o-release.s3.amazonaws.com/h2o/rel-xu/4/docs-website/h2o-py/docs/modeling.html

目前H2O支持的監督模型包括:

  • H2ODeepLearningEstimator(深度神經網絡)

  • H2OGradientBoostingEstimator(梯度提升樹)

  • H2OGeneralizedLinearEstimator(線性回歸)

  • H2ONaiveBayesEstimator(樸素貝葉斯)

  • H2ORandomForestEstimator(隨機森林)

  • H2OStackedEnsembleEstimator(組合模型)

據官網介紹,之后H2O還會引入目前常用的tensorflow等組件來支持不同深度學習算法的使用,所以大家敬請期待。

6、H2O自動建模

在上節展示單模型建立的流程后,來看一下H2O最強大的功能,AutoML,自動建模。

如果在嘗試自動建模的時候,請盡量設置max_models或者max_runtime_secs這樣的參數來設置要訓練的模型個數上線或最長訓練時間,因為自動建模的底層會嘗試對用戶所選擇的模型的參數進行GridSearch(網格搜索),以此來進行模型超參的調優。若沒有設置好模型個數上線或最長訓練時間,可能會出現跑了很久依然沒有結束的情況。

同時可以看到一旦開始了自動建模,H2O很友好地提供了一個進度條來幫助查看建模進度。

訓練完成后查看模型基于訓練集AUC的排名,如下圖:

這個排名版展示了所有所訓練的100個模型中AUC前10高的模型,在圖中可以清晰地看到最優的模型為組合模型(StackedEnsemble_AllModels),AUC為0.825。前10名中還包括像XGBoost和GBM一樣的基于樹的模型,AUC也相當不錯。

值得一提的是,組合模型中AllModels與BestOfFamily的區別在于:前者是將所有訓練好的模型作為base model進行融合,后者是通過各個模型family中最好的那個模型作為base model進行融合(融合方式默認為GLM線性回歸)。

然后查看自動建模得到的最優模型在測試集上的效果,發現out-of-sample AUC依然高達0.820,說明沒有明顯的過擬合,自動建模完成!

7、H2O模型部署

在訓練完模型之后,最后一步便是模型的部署,可能大家在平日操作中對于這一步比較苦惱,因為若使用sklearn這樣的經典機器學習包在訓練完模型后,模型本身是不支持在Hive集群進行分布式打分的。當需要打分的數據集過大的時候,沒有辦法一次性將其讀入內存并進行打分,因此只能通過batch讀取的方式按批次來進行預測打分,這樣一來就需要用戶花時間來寫一些Python或者bash的腳本。

但是H2O提供了一個非常好的模型部署流程,它一方面支持用戶像sklearn那樣將一個模型文件下載到本地,又支持用戶進行POJO或者MOJO文件的下載。而這里所說的POJO和MOJO文件分別是Plain Ordinary Java Object和Maven plain Old Java Object,作用是優化開發人員的模型部署流程,并且支持在Hive上進行模型打分UDF的改寫。一旦通過POJO或者MOJO實現了模型打分UDF函數的編寫,模型的打分在集群上就是分布式的,速度會非常快。

而且,在嘗試了batch打分和分布式打分的兩個流程之后,發現若對3000萬行的數據進行非分布式的batch打分,總共用時25分鐘,而分布式的打分則總共用時不到1分鐘,效率提升很多。

由于具體的改寫流程較細,因此大家若對這部分內容感興趣,可以在H2O的官網和他們的github中找到相關的現成代碼,助力模型部署。

http://h2o-release.s3.amazonaws.com/h2o/rel-xu/4/docs-website/h2o-py/docs/h2o.html?highlight=pojo#h2o.download_pojo

二、可視化建模UI工具

除了在Python或者R通過代碼實現建模以外,H2O還提供了一個很用戶友好的UI界面來實現“托拉拽式建模”,下圖為這個工具的(H2O Flow)主界面:

這個工具相當于一個圖形界面,底層依然是剛剛上面介紹的那些代碼,它的好處是可以幫助企業中對于Python或者R語言不太熟悉的業務人員進行快速模型的建立。

由于篇幅問題,這里主要講一下它每個功能點的具體含義,詳細操作大家可以參照官網的用戶手冊進行學習。值得一提的是,這個圖形界面非常的用戶友好,當時僅用了1-2個小時就熟悉了基本操作,相信大家一定也能很快的學會使用。功能解釋:

  • importFiles(讀取數據集)

  • importSqlTables(讀取SQL表)

  • getFrames(查看已經讀取的數據集)

  • SplitFrame(將一個數據集分成多份數據集)

  • mergeFrame(將兩個數據集進行列組合或行組合)

  • getModels(查看所有訓練好的模型)

  • getGrids(查看網格搜索的結果)

  • getPredicitons(查看模型預測結果)

  • getJobs(查看目前模型訓練的任務)

  • runAutoML(自動建模)

  • buildModel(手動建立模型)

  • importModel(從本地讀取模型)

  • predict(使用模型進行預測)

關于自動建模的一些思考

讀到這里,大家除了對H2O有了一些基本了解之外,也一定同樣思考著一個更宏大的問題,那就是如何看待自動建模與機器學習的未來。想必大家一定在許多媒體報道或者公眾號中讀過類似這樣的文章:“AI時代來了,最容易消失的100種職位”。對于從事商業分析、數據分析、數據挖掘、數據工程、算法工程的用戶,可能多少也想過這樣的自動建模技術能在多大程度上代替現有的一些日常工作。它會完全取代現有的建模過程么?還是說它目前效果不好,無需擔心?

其實,看待“手動建模”和“自動建模”這兩者的關系可以參考“有人駕駛車”和“無人駕駛車”這兩者的關系。就算短期內無人駕駛車可以上路,交通部門也一定會要求駕駛人員具有一定的駕駛技術,以確保在無人駕駛發生意外之時能夠讓用戶進行手動操作。同理,在如今各大公司都開始慢慢探索自動建模技術的時候,依然需要擁有求知欲和一顆敬畏之心,在嘗試自動建模技術之前深入了解一些模型算法本身的技術,這樣一來,雖然可以更多地在工作中使用自動建模,但是一旦出了問題,也可以從“自動”切換為“手動”來迅速地解決模型部署上的問題,而不至于干著急。

另一方面,目前自動建模領域所涉及的領域更多的還是淺層學習,還沒有發展到可以自動建立CNN或者RNN那樣的地步,畢竟后者還是一個新興的前沿領域,許多算法工程師依然在圖像識別、語音識別、閱讀理解領域不斷創新探索新的算法。這方面的工作暫時不太會被自動建模技術所取代(H2O官網上有寫到未來可能會集成tensorflow的建模框架,但目前來看暫時還沒有開源的資源)。

那么,如果自動建模技術在5年內真的滲透到我們工作中的各個領域后,基礎的數據挖掘和算法工程師該如何體現自己的價值呢?起碼有這兩點:

  • 對于業務的深度理解:雖然模型可以進行自動訓練,但是前期與業務方的建模需求整合,特征工程,變量清洗等工作還是需要人來參與,因為業務知識是暫時沒有辦法教給機器的。

  • 對于模型應用場景的選擇:如何去應用模型以及選擇最優的應用場景也是需要人來判別的,機器本身是沒有正負情感的。

如果大家對于自動建模有新的想法,歡迎隨時聯系,一起交流進步!

后 記

京東數科運營決策團隊基于大數據環境,結合豐富的業務場景,利用機器學習專業技術,不斷挖掘海量數據中蘊含的豐富信息,我們已將一系列機器學習模型應用到多個領域中,并且堅持在算法深度的道路上持續探索,致力于對未知信息和事件做出更精準預測,使業務運營策略更加精準有效。

RECOMMEND

推薦閱讀

京東JDK的探索與研究 (一)

京東風格的移動端Vue組件庫NutUI2.0來啦

京東PLUS會員項目 前端性能優化實踐

Taro UI 2.0 發布:新增自定義主題功能,適配更多小程序

好文,請點個好看

總結

以上是生活随笔為你收集整理的禅道开源版用户手册_自动化建模 | H2O开源工具介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。