如何架構機器學習平臺

愈來愈多企業開始嘗試使用機器學習算法來預測業務,並逐漸在線上部署。但機器學習和深度學習的技術棧繁渣。有多種編程語言,運行環境。穩定性,可用性,維護方式不一樣以往的IT服務。技術負責人須要設計良好的架構,發掘業務潛力也要保障生產系統穩定性。本文主要介紹:html

 

1.理解機器學習算法訓練流程。前端

2.提供線上模型部署架構方案java

3.掌握模型治理和運維的方案。python

 

 

1.機器學習應用的領域:

 

電商: 推薦系統c++

金融:反欺詐,打分卡,信用評分算法

安全:攻擊檢測數據庫

 

 

2.什麼是模型:

你們都知道機器學習訓練是爲了獲得模型。那什麼是模型呢?編程

假設以下算法用於預測房價。後端

 

Y=w1*x1+w2*x2+wn*xn +bapi

所謂模型訓練就是找到預測最準的[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:

 

 

這種模式優勢:

  1. 能夠減小數據交互。好比推薦系統,輸入是個user id ,返回推薦列表。
  2. 外部數據補充。好比徵信場景,輸入是一個手機號。徵信服務提供商就要在數據庫中收集這個手機相關信息。再對收集到的數據進行預測。

實現方式有主要兩種,數據收集能夠在前端完成或者後端,能夠考慮實現難度和解耦承擔來權衡。

模式B:

 

 

所需數據所有由外部傳入。基礎服務通常使用這種架構。好比天然語言,圖片處理,語音識別。

 

在線學習:

 

只有生成模型才能夠在線學習。不是本文重點就不展開說明了。

 

8.模型治理:

 

8.1 模型質量監控:

 

須要設定一些業務指標,經過閾值,歷史數據環比來進行監控和預警。

及時指標:響應時間,經過率,點擊率,轉化率

長期指標:反饋週期很長的指標。好比違約率,都須要2個月之後才能判斷是否違約。因此數據庫須要保留,貸款客戶和模型版本的關係。

 

8.2 響應時間:

 

根據模型算法不一樣,處理時間10ms到10分鐘不等。

建議採用異步服務架構模式,通常能夠考慮api-消息隊列來處理。預測解決經過通知接口或者輪詢獲取

 

8.3 模型版本控制:

PMML有相應的版本說明。若是用原始模型文件須要本身添加一些機制,來處理。好比計算模型文件hash值。

 

8.4 降級方案:

若是模型一旦出現問題,很難debug. 並且修復時候會很長。只考慮回滾或下線。須要和業務方明確這一點並提早作好預案。

 

 ----------

http://www.cnblogs.com/codemind/

相關文章
相關標籤/搜索