越來越多企業開始嘗試使用機器學習算法來預測業務,並逐漸在線上部署。但機器學習和深度學習的技術棧繁渣。有多種編程語言,運行環境。穩定性,可用性,維護方式不同以往的IT服務。技術負責人需要設計良好的架構,發掘業務潛力也要保障生產系統穩定性。本文主要介紹:
1.理解機器學習算法訓練流程。
2.提供線上模型部署架構方案
3.掌握模型治理和運維的方案。
1.機器學習應用的領域:
電商: 推薦系統
金融:反欺詐,打分卡,信用評分
安全:攻擊檢測
2.什么是模型:
大家都知道機器學習訓練是為了得到模型。那什么是模型呢?
假設如下算法用於預測房價。
Y=w1*x1+w2*x2+wn*xn +b
所謂模型訓練就是找到預測最准的[w1,w2,wn,b]參數。 訓練結束后,將[w1,w2,wn,b] .存儲到文件中,可以稱為模型。模型就等於訓練得到的參數
部署到生產時候,使用保存的[w1,w2,wn,b] 初始化 Y=w1*x1+w2*x2+wn*xn+b。這個模型就可以用來預測房價。
整個過程類似序列化,反序列化過程。
3.機器學習工具集:
Scikit learn (python)
Tensorflow (python,c++)
spark mlib (java)
Mahout (java)
Dl4j
R
各種工具都不能互相替代。生成的模型文件格式不同,編程語言不同。
甚至是同樣參數用不同工具預測結果會相差很大。
4.模型表達通用標准:
PMML 是一種事實標准語言,用於呈現數據挖掘模型。預測分析模型 和數據挖掘模型 是指代數學模型的術語,這些模型采用統計技術了解大量歷史數據中隱藏的模式。預測分析模型采用定型過程中獲取的知識來預測新數據中是否有已知模式。PMML 允許您在不同的應用程序之間輕松共享預測分析模型。因此,您可以在一個系統中定型一個模型,在 PMML 中對其進行表達,然后將其移動到另一個系統中,並在該系統中使用上述模型預測機器失效的可能性等
相關說明可以查看:
http://dmg.org/pmml/v4-1/GeneralStructure.html
https://www.ibm.com/developerworks/cn/opensource/ind-PMML1/
有幾點需要注意:
PMML支持部分模型。
各種工具都有生成PMML功能。
可以通過開源Openscoring 來部署PMML模型。Drools 也只支持PMML.
5.模型評測標准:
主要是准確率和召回率,AUC. 比如復雜場景,需要自己設計標准。網上資料比較多這里就不詳細說明
6.模型訓練過程(離線學習)
數據處理->特征處理-模型訓練-模型選擇->生產部署

7.模型部署方案:
可以考慮直接dump.然后在生產環境load運行。可以使amazon s3做模型管理,md5做個hash用來管理版本管理。
比較標准做法是使用PMML.特別對外交付的場景。
PMM是一種標准化的模型表示方式。托管平台openscoreing .,
架構模式A:

這種模式優點:
- 可以減少數據交互。比如推薦系統,輸入是個user id ,返回推薦列表。
- 外部數據補充。比如征信場景,輸入是一個手機號。征信服務提供商就要在數據庫中收集這個手機相關信息。再對收集到的數據進行預測。
實現方式有主要兩種,數據收集可以在前端完成或者后端,可以考慮實現難度和解耦承擔來權衡。
模式B:

所需數據全部由外部傳入。基礎服務一般使用這種架構。比如自然語言,圖片處理,語音識別。
在線學習:
只有生成模型才可以在線學習。不是本文重點就不展開說明了。
8.模型治理:
8.1 模型質量監控:
需要設定一些業務指標,通過閾值,歷史數據環比來進行監控和預警。
及時指標:響應時間,通過率,點擊率,轉化率
長期指標:反饋周期很長的指標。比如違約率,都需要2個月以后才能判斷是否違約。所以數據庫需要保留,貸款客戶和模型版本的關系。
8.2 響應時間:
根據模型算法不同,處理時間10ms到10分鍾不等。
建議采用異步服務架構模式,一般可以考慮api-消息隊列來處理。預測解決通過通知接口或者輪詢獲取
8.3 模型版本控制:
PMML有相應的版本說明。如果用原始模型文件需要自己添加一些機制,來處理。比如計算模型文件hash值。
8.4 降級方案:
如果模型一旦出現問題,很難debug. 而且修復時候會很長。只考慮回滾或下線。需要和業務方明確這一點並提前做好預案。
----------
http://www.cnblogs.com/codemind/
