模型训练
1、總訣式——定義問題
What,How,Why。首先要弄清楚自己要干什么,然后調研相關的技術確定怎么解決問題,最后反思自己為什么要用這個方案解決這個問題,有沒有更好的思路方法。
以電商推薦系統中的點擊率預估為例。首先明確我們的目標是優化線上的商品點擊率,其次可以通過點擊率預估算法來離線訓練模型,線上進行預估,將點擊率較高的商品推薦給用戶,這樣做的原因是點擊率預估是目前業界比較成熟的解決方案,且能夠取得不錯的效果,如果在實踐中遇到問題,也便于解決問題。當然也會有一些其他的方案,比如通過深度學習來做CTR,但是使用深度學習成本較大,所以從成熟的基于機器學習的CTR來做,并逐漸過渡到深度學習。
2、破劍式——選定模型
在明確問題之后,要選定用什么算法來解決,在相同的數據特征的前提下,不同的算法帶來的效果是不一樣的,而且應用的成本也是不一樣的。因此選定適合自己業務的算法才是最重要的,而不是選擇最高大上的。
同樣以電商推薦為例,比如進行了綜合考慮,選定了CTR預估中常用的樹模型算法-XGBoost。
3、破刀式——構造數據
確定算法模型之后,則是結合業務特性明確模型所需要的訓練數據。脫離業務的特征數據是沒有靈魂的,比如電商業務中的商品和信息流產品中的新聞背景是不一樣的,很多細節性的數據和特征需要去考慮和構造,因此要構造適合自己業務的數據,才能最大化的發揮算法模型的作用。
比如CTR預估場景中我們要構造的訓練數據為 <features, label>,那么如何去確定label呢?不同的kpi指標對應的label是不一樣的,比如追求點擊率的我們的label可能是0,1;但如果追求的是GMV(商品成交額),制定的label可能是商品下單率。同樣制定features的過程中也要結合用戶在業務內的數據表現。
4、破鞭式——模型訓練
模型是基于基礎數據進行更好的維度的問題抽象和解決,CTR模型旨在構建features和label之間的隱含關系,通過參數調整,特征優化以追求更好的效果表達。在構建好數據之后就是算法模型進行的舞臺了,目前大數據環境下最普遍的則是基于Spark分布式平臺進行模型訓練和調優。
5、破索式——模型評估
訓練模型往往需要擬合的是一個目標函數,以追求最小的誤差,最大的效果。CTR場景下常見的模型評估指標有:準確率、精確率、F值、AUC、NDCG等。同樣是選擇適合自己業務和算法模型的評估指標,通過評估指標來調整模型的參數以達到離線最優的效果,但具體的最終效果還是需要進行模型上線,進行ABTest驗證模型的優劣。
在ABTest過程中,新上的模型往往由于其不確定性,會給予較小的流量進行效果的測試,如果效果優于base組模型,則會分配更多的流量,以追求線上整體效果的最優。
更多關于模型效果的評估可以關注后續章節內容。
6、破槍式——模型優化
模型優化的過程則是對模型和數據進行迭代升級的過程,但是這里需要明確的是影響模型的線上效果的因素有很多,從基礎數據到構造的特征,從算法選擇到實驗策略的影響,從給出的排序結果到前端的位置展示,都可能產生影響。在應用算法模型的整個過程中,發生的每個動作或者做的每個修改都會影響模型的效果表達,因此算法工程師一定要注意的是切勿只重視算法和特征,在出現問題的時候往往要從多方面進行問題的定位和解釋。
為了避免其他非數據算法方面的影響,要充分利用ABTest實驗,即保證其他因素的一致性,通過實驗效果的優劣驗證實驗改進點的有效性。
7、破箭式——模型部署
把模型搞定之后需要考慮的是怎么部署模型,當然不同作用的模型、不同類型的模型部署方式也是不同的。
比如用戶離線計算的用戶偏好模型,則不需要進行線上部署,訓練好模型之后,保存一下,直接對數據集進行偏好預測,當然也可以不保存,直接進行預測。
對于線上使用的排序模型,機器學習和深度學習的主流部署方式也是不同的,比如排序的樹模型,通常情況下會保存成obj文件,然后寫入到固定的地方,線上使用時直接加載到內存進行線上實時的特征拼接和計算即可,對于DL類模型,當然也可以保存成固定格式的文件供線上使用,但更通用的做法是借助于框架本身封裝的服務,比如基于Tensorflow的DL模型,可以借助tf-serving進行部署,線上使用時,直接調相應的API接口,傳入需要的參數進行計算排序。
8、破掌式——效果跟蹤
模型部署上線之后并不是終點,一個更重要的步驟則是對上線之后的效果進行追蹤。
通常情況下,新上模型一般會進行白名單測試(一般是內部人員),測試是否能正常返回數據,返回的數據是否正常、是否可信服,確定沒問題之后會進行小流量的測試(一般在5%左右),觀察一天的效果,如果效果正向,則會擴大流量(一般擴到50%左右),經過一段時間的效果觀察(主要是和base組模型進行效果對比)如果效果正向,則會考慮全擴或者擴充接近100%。
不要小看擴流流程,如果新上模型直接擴充到全量或者大部分流程,是會引起很嚴重的問題的,比如效果不好,性能不好等,所以要謹慎對待。
9、破氣式——數據保存
數據保存是指將線上使用的特征數據通過一定的方式進行保存,目的是方便后續模型的訓練和優化,形成一個完整的數據閉環。
保存數據時需要注意的是每條數據的唯一性,即保證最后關聯特征數據和label的時候保證是對應的,否則會引起樣本誤差,引起模型的訓練效果。
總結
- 上一篇: 房地产项目全程策划30步(2)
- 下一篇: 知昨日之非,悟今日之是!焉知昨日之非为非