機器學習模型之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