機(jī)器學(xué)習(xí)模型的訓(xùn)練,通常是通過學(xué)習(xí)某一組輸入特征與輸出目標(biāo)之間的映射來進(jìn)行的。一般來說,對于映射的學(xué)習(xí)是通過優(yōu)化某些成本函數(shù),來使預(yù)測的誤差最小化。在訓(xùn)練出最佳模型之后,將其正式發(fā)布上線,再根據(jù)未來生成的數(shù)據(jù)生成準(zhǔn)確的預(yù)測。這些新數(shù)據(jù)示例可能是用戶交互、應(yīng)用處理或其他軟件系統(tǒng)的請求生成的——這取決于模型需要解決的問題。在理想情況下,我們會希望自己的模型在生產(chǎn)環(huán)境中進(jìn)行預(yù)測時,能夠像使用訓(xùn)練過程中使用的數(shù)據(jù)一樣,準(zhǔn)確地預(yù)測未來情況。
當(dāng)我們將模型部署到生產(chǎn)中時,往往會假設(shè)未來將使用到的數(shù)據(jù)會類似于過去模型評估期間所使用的數(shù)據(jù)。具體來說,我們可能會假設(shè),特征和目標(biāo)的分布將保持相當(dāng)?shù)暮愣ā5沁@種假設(shè)通常不成立。趨勢會隨著時間的推移而變化,人們的興趣會隨著季節(jié)的變化而變化,股票市場會起伏不定。因此,我們的模型必須適應(yīng)這些變化。
世界是持續(xù)變化的,因此模型部署應(yīng)視為一個連續(xù)的過程,而不是完成第一次部署之后就扭頭去開展下一個項(xiàng)目。如果機(jī)器學(xué)習(xí)團(tuán)隊(duì)的工程師發(fā)現(xiàn)數(shù)據(jù)分布與原始訓(xùn)練集的數(shù)據(jù)分布有明顯出入,則需要重新訓(xùn)練模型。這個現(xiàn)象——通常被稱為模型漂移(model drift)——可以緩解,但是會帶來額外的開銷,如監(jiān)視基礎(chǔ)設(shè)施、監(jiān)督和流程等等。
在本文中,筆者想對模型漂移下定義,并討論如何去識別和跟蹤模型漂移。然后,我將描述如何重新訓(xùn)練模型,來減輕漂移對預(yù)測性能的影響,并對應(yīng)多久重新訓(xùn)練一次模型做出建議。最后,我將介紹啟用模型重新訓(xùn)練的幾種方法。
什么是模型漂移?
模型漂移是指,由于環(huán)境的變化違反了模型假設(shè),而導(dǎo)致模型的預(yù)測性能隨時間而降低。模型漂移有點(diǎn)用詞不當(dāng),因?yàn)樽兓牟皇悄P停悄P瓦\(yùn)行的環(huán)境。因此,概念漂移(concept drift)一詞實(shí)際上可能是一個更好的用詞,不過兩個術(shù)語都描述了相同的現(xiàn)象。
請注意,筆者對模型漂移的定義實(shí)際上包括幾個可以更改的變量。預(yù)測性能將下降,它將在一段時間內(nèi)以某種速率下降,并且這種下降會歸因于違反建模假設(shè)的環(huán)境變化。在確定如何診斷模型漂移以及如何通過模型再訓(xùn)練糾正模型漂移時,應(yīng)考慮這些變量中的每一個。
如何跟蹤模型漂移?
目前業(yè)內(nèi)已有多種識別和跟蹤模型漂移的技術(shù)。在介紹這些技術(shù)之前,值得一提的是,并沒有一種萬能的方法。不同的模型問題需要不同的解決方案,您可能有、也可能沒有相應(yīng)的基礎(chǔ)架構(gòu)或資源來利用某些技術(shù)策略。
模型性能降級
識別模型漂移的最直接方法是明確預(yù)測性能是否已下降,同時量化這種下降。測量實(shí)時數(shù)據(jù)上已部署模型的準(zhǔn)確性是一個眾所周知的難題。之所以出現(xiàn)這種困難,部分原因是我們需要訪問生成的模型的預(yù)測和基本事實(shí)信號。出于以下這些原因,這可能無法實(shí)現(xiàn):
·預(yù)測的數(shù)據(jù)在生成后沒有存儲——別讓這種事發(fā)生在你身上。
·預(yù)測已存儲,但是您無法訪問基本事實(shí)標(biāo)簽。
·預(yù)測和標(biāo)簽均可用,但不能結(jié)合在一起。
即使預(yù)測和標(biāo)簽可以合并在一起,也可能需要一段時間才能使用標(biāo)簽。例如一個可以預(yù)測下一季度收入的財(cái)務(wù)預(yù)測模型。在這種情況下,只有在該季度過去之后才能觀察到實(shí)際收入,所以直到那個時候你才能夠量化模型的效果。在此類預(yù)測問題中, 回填預(yù)測(即訓(xùn)練模型,并根據(jù)過去的歷史數(shù)據(jù)生成預(yù)測)可以幫助您了解模型性能下降的速度。
正如Josh Wills 指出的那樣,在部署模型之前您可以做的最重要的事情之一就是試圖了解離線環(huán)境中的模型漂移。數(shù)據(jù)科學(xué)家應(yīng)想辦法回答以下問題:“如果我使用六個月前的數(shù)據(jù)對這組特征進(jìn)行訓(xùn)練,并將其應(yīng)用于今天生成的數(shù)據(jù),那么這個模型比我一個月前未經(jīng)訓(xùn)練而創(chuàng)建并應(yīng)用到今天的模型差多少呢?”。離線執(zhí)行此分析,您可以估計(jì)模型性能下降的速度以及需要重新訓(xùn)練的頻率。當(dāng)然,這種方法的前提是要有一臺“時光機(jī)”來訪問過去任何時候的實(shí)時數(shù)據(jù)。
檢查訓(xùn)練和實(shí)時數(shù)據(jù)的特征分布
由于隨著輸入特征的分布逐漸偏離訓(xùn)練數(shù)據(jù)的分布,模型性能會下降,因此比較這些分布是推斷模型漂移的好方法。請注意,這里說的是推斷而不是檢測模型漂移,因?yàn)槲覀儧]有觀察到預(yù)測性能的實(shí)際下降,而是“預(yù)計(jì)”會出現(xiàn)下降。在由于數(shù)據(jù)生成這一過程的性質(zhì),而無法觀察到實(shí)際基本事實(shí)的情況下,這會非常有用。
每個特征需要監(jiān)視許多不同的東西,包括:
·可能值的范圍
·值直方圖
·該功能是否接受NULL,如果是,則預(yù)期的NULL數(shù)量