當前位置:
首頁 > 最新 > 數據科學家不可錯過的機器學習模型開發利器

數據科學家不可錯過的機器學習模型開發利器

導讀:一篇來自數據科學家的分享。純技術角度為大家安利一款機器學習模型開發的利器——MLflow。

機器學習應用開發過程中,有三個讓模型開發人員經常困擾的問題:

模型開發過程難追蹤和管理;

以多人合作的方式進行模型開發環境下,模型可重用性和可移植性不高;

模型部署方式不規範。

如果有工具能夠覆蓋機器學習全流程,構架標準化,將極大地提高機器學習模型開發者的效率。

2018年6月, Databricks開源了一個項目叫做MLflow,其核心作者Matei Zaharia也是 Apache Spark 和 Apache Mesos 的核心作者。MLflow對以上提到的三個問題分別提供對應的模塊支持:MLflowTracking,MLflow Projects,MLflow Models。

MLflow發布以後,譽存科技模型分析團隊積極嘗試將其應用在模型開發過程中,以進一步加強團隊協作能力,縮短模型開發周期。

(圖片來源於:MLflow官網)

下面以譽存科技星象-風險管理平台的風險預測模型之一"企業破產預測模型"開發為例,簡單介紹MLflow三大功能模塊的主要特性。

破產是企業經營嚴重惡化產生的結果,對企業破產風險概率建立預測模型有助於預判企業即將到來的風險。

企業破產預測模型考慮了多方面的企業數據,包括企業本身以及關聯企業的行業、規模、各類工商變更記錄、失信被執行信息、裁判文書信息、新聞風險事件等。我們利用自然語言處理等技術手段對原始數據進行信息抽取和清洗,將企業各類數據轉化為結構化的200餘特徵,再使用機器學習二分類演算法建立企業破產風險預測量化模型。

1. MLflowTracking

MLflowTracking組件提供可視化界面。可以方便地展示,查詢以及比較不同的模型運行結果。

啟用Tracking有兩個關鍵步驟:

(1)代碼的模型訓練部分起始階段加入with mlflow.start_run(),並使用mlflow.log_param和mlflow.log_metric對模型參數和模型評估結果做日誌記錄。第一次模型訓練完成後會自動在項目中生成mlruns目錄,該目錄下存儲了第一次以及以後每次模型訓練日誌。MLflow Tracking支持在同一個程序中開啟多個模型訓練模塊。

(2)在mlruns同級目錄執行mlflow ui啟動可視化界面,默認情況下服務開啟在:http://localhost:5000,Tracking也支持將日誌記錄到遠程伺服器(通過配置環境變數MLFLOW_TRACKING_URI),以便團隊協作開發模型。

如上圖所示,為我們研究隨機森林分類機器學習演算法在破產預測上的分析過程。

假設只關注隨機森林的兩個模型的超參數:max_depth和n_estimators。對於模型效果同時考慮四個指標:auc,f1,precision,recall。維持n_estimators=5不變,改變max_depth=(5,10,15,20),我們從Metric一欄可以看出當max_depth=10模型達到最優結果。因此我們暫時認為max_depth=10是最優選擇,接下來改n_estimators=(10,15,20),從Metric一欄可以觀察到當n_estimators=20的時候,模型結果略有提升。

值得一提的是,在一個已有的機器學習模型開發項目上應用MLflowTracking,只需要增加少量的代碼即可。

2. MLflow Projects

MLflow Projects提供了項目管理功能,主要目的是增強項目的可重用性和跨平台可移植性。

例如,利用MLflow Projects可以將你自己的數據分析項目提供給其他數據分析人員重現結果,其實現方式是以MLflow約定的方式配置相關元數據文件即可。

MLflow Project有兩個關鍵的配置文件:

(1)conda.yaml:Conda是MLflow指定的python包管理器,因此在安裝MLflow的時候同時需安裝配置Conda。這非常重要,因為機器學習模型開發環境搭建需要下載各種基礎庫,比如numpy, scipy, scikit-learn等,而安裝軟體過程中經常遇到編譯出錯,包依賴以及版本不兼容等問題。從零開始搭建機器學習開發環境可能需要開發人員一天甚至更多的時間,Conda能夠很好地解決這方面的問題。

(2)MLProject:它是項目本身的描述文件,以遵循yaml格式規範的純文本形式指定項目名,conda環境,程序入口等等。以下為破產模型的MLProject配置文件:

name: banckruptcy

conda_env: conda.yaml

entry_points:

main:

parameters:

max_depth: float

n_estimators:

command: "python banckruptcy.py "

MLProject 配置完成後,整個項目的內容就可以打包移交給其他數據分析人員,其他人就可以在他自己的環境中通過簡單的命令即可重現該結果。conda.yaml配置文件能保證模型運行環境是一致的。

例如,我們的破產模型從數據分析人員A移交給B驗證,A用的是linux開發環境,B則是windows開發環境。在B獲得A經過MLflow Projects創建的項目後,只需要執行:

mlflow run path/to/project -P n_estimators=5 -P max_depth=10

即可重現A的結果,並且該結果也會自動記錄到MLflow Tracking的日誌中。

團隊開發中還經常會用到代碼管理工具,例如git。當模型分析代碼在git的時候,該執行命令改為:

3. MLflow Models

MLflow Models提供模型部署的功能。

通常情況下,模型開發完成以後,需要將最優模型部署到伺服器,並對其他應用程序提供REST API服務。MLflow Models使用flask的web框架。在模型訓練階段,可以通過python api將模型儲存在約定的目錄中。

與MLflow Projects的 MLProject類似,MLflow Models也有一個純文本格式配置文件MLModel,該文件指定了什麼方式來讀取模型,稱作flavors。

常見的有兩種方式:以python函數的形式;或者sklearn的方式讀取模型。

模型服務的部署支持幾種方式:部署到本地,部署到Microsoft AzureML,部署到Amazon Sagemaker,以及作為Spark UDF。

以部署到本地為例。因為我們的破產預測模型保存使用的是sklearn flavor,因此部署命令為:

mlflow sklearn serve path/to/model -p 19004

若部署成功,則該模型服務自動啟用在:

http://127.0.0.1:19004/invocations

對於新的企業要做破產概率預測,首先要準備好該企業的特徵數據,然後通過POST的方式往該伺服器發送請求,返回的內容即為破產概率值。

寫在最後

一個企業的風險是多方面的,為了適應企業風控模型快速開發和迭代的需求,最大程度縮短模型開發周期至關重要。

機器學習建模應用中的「模型追蹤,項目管理,模型部署」三個難點制約了建模產出效率,雖然每一個難點都有相應的軟體解決方案,但是MLflow提供了整體的技術框架,能夠有效提高模型開發效率,節約開發成本,以及減少開發過程各個環節出錯可能性。

— END —

譽存科技出品

商務合作


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器學習 的精彩文章:

AI在網路安全領域的應用:機器學習 VS.深度學習
UPS如何利用AI、機器學習和大數據為第四次工業革命做好準備

TAG:機器學習 |