切入點
目前的AI其實更多就是僅僅用來從歷史資料中學習到一些規律而已,在業務上,更多的只是減少人為介入工作,所以要在業務系統中引入神經網路,其實主要就是在要找到切入點。
簡單來說,可以走訪一線使用者看他們花最多的時間在系統哪些地方,經常重複了哪些工作,也可以通過統計日誌找到合適的切入點。
理解問題
- 業務上要解決的問題:預測某個分類。
- 問題涉及到的資訊管道:xx。
- 資料來源及採集方式:資料來源在xx業務系統上,可由相關api獲取。
- 資料屬於定期釋出還是實時:定期&實時釋出。
- 影響模型的有價值因素:諮詢業務專家提供初步模型特徵。
- 工作量:制定專案計劃。
資料預處理
- 過濾操作,將不符合條件的資料記錄去掉。
- 空值填充,補0或其他填充措施。
- 對資料進行標準化處理。
- 字串集標籤化。
樣本統計
對樣本進行統計分析,看看可用樣本數量為多少,對於一般的分類任務,每個分類的樣本數一般可以從幾千到上萬個。另外也要檢查是否存在樣本不平衡問題,如果存在的話要對其進行平衡處理,比如上取樣操作。
模型定義
定義模型,比如定義傳統的多層神經網路,兩個隱含層,每個層100個神經元。
確定輸入為attribute1、attribute2、...,輸出為分類編號。
損失函式可選:tanh、logistic或relu。
優化方法可選:梯度下降法或adam。
模型訓練
- 將整個資料集分成兩組,比例是8:2,第一組為訓練集,用於調整模型引數;第二組為測試集,用於測試訓練得到的模型準確性。
- 最大迭代數為10000。
- 批大小為200。
- 優化提升容忍程度為1e-8。
- 標準化初始權重。
模型迭代
模型的效果需要不斷分析特徵,選擇或生成更有價值的特徵,不斷優化模型效果。比如
- v0.1 憑感覺選擇若干資料特徵作為輸入,效果可能比較差。
- v0.2 諮詢業務專家,結合他們的意見使用或者生成更有價值的特徵,precision、recall、f1-score都提升了,因為增加了某些屬性,而且還從額外的系統提取了有用的特徵。
- v0.3 已經無法直接找到有價值的特徵,可以考慮引入自然語言處理對一些文字進行分析,使用詞向量、tfidf之類的特徵,precision、recall、f1-score都達到90%以上。
版本 | precision | recall | f1-score |
---|---|---|---|
v0.1 | 0.52 | 0.59 | 0.54 |
v0.2 | 0.83 | 0.82 | 0.81 |
v0.3 | 0.91 | 0.90 | 0.90 |
線上部署
有以下幾種方式部署模型,需要綜合考慮。
- 嵌入到業務系統中,將模型與業務系統耦合,需要考慮業務系統和模型開發使用的統一語言,比如業務系統一般用java開發,模型較多使用python,而java調python併發起來後效能有問題,不然就用java做模型並提供jar。
- 單獨模型部署,將模型系統通過服務形式對外開放,由業務系統訪問,達到解耦效果,但對於一些情況下會導致整個系統架構比較重。
- 後臺部署,直接由模型系統訪問業務資料層,將預測的結果回寫到業務資料持久化中。
-------------推薦閱讀------------
我的開源專案彙總(機器&深度學習、NLP、網路IO、AIML、mysql協議、chatbot)
跟我交流,向我提問:
歡迎關注: