跳轉到主要內容
工程的博客

使用AutoML工具包的FamilyRunner管道api來簡化和自動化貸款違約預測

2019年的11月5日 工程的博客

分享這篇文章

試試這個貸款風險與AutoML管道API在磚的筆記本

介紹

在《華盛頓郵報》使用AutoML工具箱自動化貸款違約預測,我們已經展示了如何磚實驗室的AutoML工具包簡化的機器學習模型特性工程和模型建立優化(MBO)。它也提高了曲線下的麵積(AUC)從0.6732(手工XGBoost模型)到0.723 (AutoML XGBoost模型)。AutoML工具包的釋放0.6.1,我們已經升級到MLflow版本1.3.0並介紹了一個新的管道API,簡化了特征生成和推理。

AutoML工具箱管道API

在這篇文章中,我們將討論:

  • 家庭跑步API,使您可以輕鬆地嚐試不同的家庭模式確定最佳模型
  • 簡化推理與管道API
  • 簡化API特性與管道工程

都是在家庭中……跑

原文中提到貸款風險分析與XGBoost磚運行時機器學習,我們試過三個不同的模型:家庭的漠視,GBT, XGBoost。沒有深入了解,這由數百行代碼為每個模型類型。

正如使用AutoML工具箱自動化貸款違約預測,我們降低了這幾行代碼為每個模型類型。AutoML工具包FamilyRunner API,我們簡化這進一步通過允許您使用它來運行多個並發模型類型分布在集群的節點數據磚。以下是所需的三行代碼運行兩個模型(邏輯回歸和XGBoost)。

val xgBoostConfig = ConfigurationGenerator.generateConfigFromMap (“XGBoost”,“分類”xgBoostOverrides)val logisticRegressionConfig = ConfigurationGenerator.generateConfigFromMap (“LogisticRegression”,“分類”logisticRegOverrides)val跑= FamilyRunner (datasetTrain,數組(xgBoostConfig logisticRegressionConfig)) .executeWithPipeline ()

細胞內輸出的代碼片段中,您可以觀察FamilyRunner API執行多個任務,每個努力尋找最好的hyperparameters模型類型的選擇。

= = = AutoML管道階段:com實驗室automl管道MlFlowLoggingValidationStageTransformer日誌= = >藝名:MlFlowLoggingValidationStageTransformer_18aeadd79de9總執行時間階段:194年女士Params階段:{automlInternalId:automl_internal_id,isDebugEnabled:真正的,mlFlowAPIToken(修訂):,mlFlowExperimentName:/用戶/(電子郵件保護)/ AutoML / Jas_AutoML_Demo / runXG_1,mlFlowLoggingFlag:真正的,mlFlowTrackingURIhttps:/ / demo.cloud.m.eheci.com,pipelineId: 290 b3c8d - 8 dbc - 4 - b1b a9da ec602——8807153}輸入數據集數:547821年輸出數據集計數:547821年

AutoML工具包的釋放0.6.1,我們已經升級到使用最新版本的MLflow (1.3.0)。下麵的視頻展示了結果AutoML FamilyRunner MLflow內實驗記錄允許您比較邏輯回歸模型的結果(AUC = 0.716)和XGBoost (AUC = 0.72)。

https://www.youtube.com/watch?v=3mgLronGsdI

簡化推理與管道API

管道在FamilyRunner api允許運行的功能使用一個MLflow運行ID或推理PipelineModel對象。這些管道包含一係列的階段,直接由AutoML的主要配置。通過運行推理其中一個方麵,它確保預測數據集經過相同的一組特性工程步驟,用於培訓。這使得完全控製、便攜和可串行化的管道,可以導出,對獨立的需求,而不需要手動應用特性的工程任務。下麵的代碼提供了運行一個推理的一個片段。

使用MLflow運行ID

當你用MLFlow AutoML運行時,您可以運行推理僅僅通過使用MLFlow運行ID (MLFlow配置),正如下麵的代碼片段。

val bestMlFlowRunId = runner.bestMlFlowRunId (“XGBoost”)val bestPipelineModel = PipelineModelInference。getPipelineModelByMlFlowRunId (bestMlFlowRunId xgBoostConfig.loggingConfig)val inferredDf = bestPipelineModel.transform (datasetValid)

作為細胞的輸出中可以看到,AutoML管道API執行所有訓練數據創建的最初階段,現在應用於驗證數據集。在這個例子中,下麵是刪減管道API細胞顯示輸出階段執行。

= = = AutoML管道階段:com實驗室automl管道ZipRegisterTempTransformer日誌= = >藝名:ZipRegisterTempTransformer_a88351e04577總執行時間階段:57女士= = = AutoML管道階段:com實驗室automl管道MlFlowLoggingValidationStageTransformer日誌= = >藝名:MlFlowLoggingValidationStageTransformer_18aeadd79de9總執行時間階段:233年女士= = = AutoML管道階段:com實驗室automl管道CardinalityLimitColumnPrunerTransformer日誌= = >藝名:CardinalityLimitColumnPrunerTransformer_e8aede7e3f4d總執行時間階段:1女士= = = AutoML管道階段:com實驗室automl管道DateFieldTransformer日誌= = >藝名:DateFieldTransformer_5ec5e2680828總執行時間階段:7女士
              = = = AutoML管道階段:com實驗室automl管道DropColumnsTransformer日誌= = >藝名:DropColumnsTransformer_1859c7895f19總執行時間階段:4女士= = = AutoML管道階段:com實驗室automl管道ColumnNameTransformer日誌= = >藝名:ColumnNameTransformer_d727a713897e總執行時間階段:3女士= = = AutoML管道階段:com實驗室automl管道DropColumnsTransformer日誌= = >藝名:DropColumnsTransformer_a3160a31ec07總執行時間階段:3女士= = = AutoML管道階段:com實驗室automl管道DataSanitizerTransformer日誌= = >藝名:DataSanitizerTransformer_a9866eaba0de總執行時間階段:1.79= = = AutoML管道階段:com實驗室automl管道VarianceFilterTransformer日誌= = >藝名:VarianceFilterTransformer_63da1ccb67fe總執行時間階段:4女士= = = AutoML管道階段:com實驗室automl管道DropColumnsTransformer日誌= = >藝名:DropColumnsTransformer_d239d19c60e6總執行時間階段:12女士= = = AutoML管道階段:com實驗室automl管道DropColumnsTransformer日誌= = >藝名:DropColumnsTransformer_54010312beee總執行時間階段:5女士
              bestPipelineModel: org.apache.spark.ml。PipelineModel= final_linted_infer_pipeline_25618e0d3e91inferredDf: org.apache.spark.sql。DataFrame =[術語:字符串,home_ownership:字符串…20.多個字段)

正如前麵的代碼片段(擴大審查它),推斷DataFrameinferredDf管道生成的API包含驗證數據集包括預測計算(如下截圖中指出)。

可以看到,隻需要獲取管道MLflow運行ID並運行一個推理。這是由於管道內部api日誌所有工件在MLflow下運行一個實驗項目。的筆記本使用AutoML工具包的FamilyRunner管道api來簡化和自動化貸款違約預測進一步展示了所有的標簽添加到MLflow運行。

使用PipelineModel手動保存和加載AutoML管道

即使沒有啟用MLflow, PipelineModel提供了靈活性,手動保存這些管道模型自定義路徑下。

/ /保存它val pipelinePath =“tmp / predict-pipeline-lg-1”runner.bestPipelineModel (“LogisticRegression”).write.overwrite () .save (pipelinePath)/ /加載它val pipelineModel = PipelineModel.load (pipelinePath)val inferredDf = pipelineModel.transform (datasetValid)

簡化API特性與管道工程

除了完整的推理管道,FamilyRunner也公開API隻運行特性工程步驟,沒有執行特征選擇和計算功能重要性。需要AutoML主要配置對象和轉換成一個管道。這可以用於做工程數據分析功能,無需手動應用皮爾遜過濾器、協方差,離群值過濾器,基數限製等等。它使模型的使用,尚未AutoML工具包的一部分,但仍利用AutoML高級特性的工程階段。

val featureEngPipelineModel = FamilyRunner (datasetTrain,數組(xgBoostConfig logisticRegressionConfig)) .generateFeatureEngineeredPipeline (verbose =真正的)(“XGBoost”)val featuredData = featureEngPipelineModel.transform (datasetTrain)顯示器(featuredData)

討論

和家人跑API,您可以運行多個並發模型類型,找到最好的模型及其hyperparameters跨多個模型。AutoML工具包的釋放0.6.1,我們已經升級到MLflow1.3.0並引入了一個新的管道API,大大簡化了功能生成和推理。試AutoML工具包使用AutoML工具包的FamilyRunner管道api來簡化貸款風險分析今天筆記本!

貢獻

我們想感謝肖恩·歐文,本·威爾遜布魯克身上,姆Kovacevic這個博客為他們的貢獻。

免費試著磚
看到所有工程的博客的帖子
Baidu
map