機器學習模型之PMML

  • 2020 年 3 月 11 日
  • 筆記

機器學習模型之PMML

機器學習模型的應用一般會經歷兩個主要過程:離線開發和線上部署。

離線部分負責模型訓練和導出模型,線上負責導入模型並且做預測。

PMML概述

PMML是數據挖掘的一種通用的規範,它用統一的XML格式來描述我們生成的機器學習模型。

要使用PMML,需要兩步的工作,第一塊是將離線訓練得到的模型轉化為PMML模型文件,第二塊是將PMML模型文件載入在線預測環境,進行預測。這兩塊都需要相關的庫支援。

PMML模型的生成和載入相關類庫

PMML模型的生成相關的庫需要看我們使用的離線訓練庫。如果我們使用的是sklearn,那麼可以使用sklearn2pmml這個python庫來做模型文件的生成。

載入PMML模型需要目標環境支援PMML載入的庫,如果是JAVA,則可以用JPMML來載入PMML模型文件。

PMML總結與思考

  • PMML為了滿足跨平台,犧牲了很多平台獨有的優化,所以很多時候我們用演算法庫自己的保存模型的API得到的模型文件,要比生成的PMML模型文件小很多。同時PMML文件載入速度也比演算法庫自己獨有格式的模型文件載入慢很多。
  • PMML載入得到的模型和演算法庫自己獨有的模型相比,預測會有一點點的偏差,當然這個偏差並不大。比如某一個樣本,用sklearn的決策樹模型預測為類別1,但是如果我們把這個決策樹落盤為一個PMML文件,並用JAVA載入後,繼續預測剛才這個樣本,有較小的概率出現預測的結果不為類別1.
  • 對於超大模型,比如大規模的集成學習模型,比如xgboost, 隨機森林,或者tensorflow,生成的PMML文件很容易得到幾個G,甚至上T,這時使用PMML文件載入預測速度會非常慢,此時推薦為模型建立一個專有的環境,就沒有必要去考慮跨平台了。

參考

https://www.cnblogs.com/pinard/p/9220199.html

https://zhuanlan.zhihu.com/p/30378213