推薦模型離線評測效果好疾渣,線上效果卻不佳的原因

在推薦算法領(lǐng)域,時常會出現(xiàn)模型離線評測效果好杈女,比如AUC、準(zhǔn)召等指標(biāo)大漲,但上線后業(yè)務(wù)指標(biāo)效果不佳赊琳,甚至下降的情況,比如線上CTR或CVR下跌板丽。

本文嘗試列舉一些常見的原因,為大家排查問題提供一點(diǎn)思路埃碱。

1. 離線酥泞、在線特征不一致

離線砚殿、在線特征不一致通常是模型線上效果不好的主要原因芝囤,然而,造成離在線特征不一致的原因卻千奇百怪羡藐,有些還非常隱蔽。

  1. 實(shí)現(xiàn)上存在Bug仆嗦。離線先壕、在線特征的ETL過程通常不是由同一份代碼完成的瘩扼,比如垃僚,離線特征的計(jì)算過程一般是使用SQL語言在大數(shù)據(jù)平臺上完成邢隧,而在線特征的加工通常是由C++、Go這樣的語言計(jì)算得到冈在。這樣就存在相同的邏輯需要實(shí)現(xiàn)兩次倒慧,而且可能是不同的人來實(shí)現(xiàn),如果不仔細(xì)測試,出現(xiàn)不一致的可能性還是很高的纫谅。要嚴(yán)格保證線上線下的特征一致性炫贤,最根本的方法就是同一套代碼和數(shù)據(jù)源抽取特征,業(yè)內(nèi)目前通用的方法就是付秕,在線實(shí)時請求打分的時候落地實(shí)時特征兰珍,訓(xùn)練的時候就沒有特征拼接的流程询吴,只需要關(guān)聯(lián)label掠河,生成正負(fù)樣本即可
  2. 特征更新存在延遲。一些需要實(shí)時計(jì)算得到的特征猛计,如實(shí)時統(tǒng)計(jì)特征唠摹、序列特征等,離線模擬時不存在問題奉瘤,然而勾拉,上線后由于各種原因,如果不能及時更新盗温,那就造成了離線藕赞、在線的特征分布不一致,相當(dāng)于是模型過擬合了卖局。小時級更新斧蜕、天級更新的特征,也有可能出現(xiàn)更新延遲的問題砚偶。

2. 存在數(shù)據(jù)泄露

數(shù)據(jù)泄露(data leakage)惩激,有時也叫做泄露、穿越等蟹演。它說的是用于訓(xùn)練機(jī)器學(xué)習(xí)算法的數(shù)據(jù)集中包含了一些將要預(yù)測的事務(wù)的東西(when the data you are using to train a machine learning algorithm happens to have the information you are trying to predict)风钻,也就是說測試數(shù)據(jù)中的一些信息泄露到了訓(xùn)練集中。這里說的信息是指關(guān)于目標(biāo)標(biāo)簽或者在訓(xùn)練數(shù)據(jù)中可用但在真實(shí)世界中卻不可用酒请、不合法的數(shù)據(jù)骡技。

數(shù)據(jù)泄露的類型介紹

我們可以將數(shù)據(jù)泄露分為兩大類:訓(xùn)練數(shù)據(jù)泄露和特征泄露。訓(xùn)練數(shù)據(jù)泄露通常是測試數(shù)據(jù)或者未來的數(shù)據(jù)混合在了訓(xùn)練數(shù)據(jù)中羞反,特征泄露是指特征中包含了關(guān)于真實(shí)標(biāo)簽的信息布朦。

導(dǎo)致訓(xùn)練數(shù)據(jù)泄露可能有以下幾種情況:

  • 在進(jìn)行某種預(yù)處理時是使用整個數(shù)據(jù)集(訓(xùn)練集和測試集)來計(jì)算的,這樣得到的結(jié)果會影響在訓(xùn)練過程中所看到的內(nèi)容昼窗。這可能包括這樣的場景:計(jì)算參數(shù)以進(jìn)行規(guī)范化和縮放是趴,或查找最小和最大特征值以檢測和刪除異常值,以及使用變量在整個數(shù)據(jù)集中的分布來估計(jì)訓(xùn)練集中的缺失值或執(zhí)行特征選擇澄惊。
  • 在處理時間序列數(shù)據(jù)時唆途,另一個需要注意的關(guān)鍵問題是富雅,未來事件的記錄意外地用于計(jì)算特定預(yù)測的特性。

導(dǎo)致特征泄露可能有以下幾種情況:

  • 使用了一些不合法的特征肛搬,例如一個用來診斷特定疾病的模型没佑,使用了病人是否做過當(dāng)前疾病的手術(shù)這樣的特征;再比如温赔,CTR預(yù)估模型中使用了用戶在商品詳情頁的交互行為特征蛤奢,如是否評論、是否聯(lián)系賣家等陶贼,這些行為在預(yù)測時沒有發(fā)生的啤贩。

檢測數(shù)據(jù)泄露

當(dāng)我們了解了什么是數(shù)據(jù)泄露了之后,下一步來看下如何檢測數(shù)據(jù)泄露拜秧。

在構(gòu)建模型之前痹屹,我們可以先對數(shù)據(jù)進(jìn)行一些探索分析。例如腹纳,尋找與目標(biāo)標(biāo)簽或者值高度相關(guān)的特征痢掠,相關(guān)性非常高的特征可能是泄露特征驱犹。

當(dāng)構(gòu)建模型之后嘲恍,我們可以檢查下模型中權(quán)重極高的特征是否存在泄漏的情況。如果在構(gòu)建模型之后雄驹,發(fā)現(xiàn)模型的效果好到不可思議佃牛,這時候需要考慮下是否發(fā)生了數(shù)據(jù)泄露。

另一個更可靠的檢查泄漏的方法是医舆,對經(jīng)過訓(xùn)練的模型進(jìn)行有限的實(shí)際部署俘侠,看看模型的訓(xùn)練時的性能與真實(shí)環(huán)境的表現(xiàn)之間是否有很大的差別。但是如果差別比較大的話蔬将,也有可能是是過擬合造成的爷速。

3. 數(shù)據(jù)分布不一致

  1. 數(shù)據(jù)分布隨時間發(fā)在漂移。例如霞怀,營銷平臺的大促活動惫东、季節(jié)的變化、流行元素和審美標(biāo)準(zhǔn)的變化等等毙石。
  2. 數(shù)據(jù)分布隨地理位置發(fā)生漂移廉沮。同一時間點(diǎn),南方人偏愛的服飾等物品與北方人可能是不同的徐矩,如果訓(xùn)練集中只包含某些地理位置的數(shù)據(jù)滞时,而測試數(shù)據(jù)出現(xiàn)了另外的地理位置,這種情況就會出現(xiàn)滤灯∑夯跨境電商平臺通常需要考慮目標(biāo)市場是南北半球的情況曼玩,而針對性地推薦不同季節(jié)的物品。
  3. 數(shù)據(jù)分布在不同場景是不同的刽漂。小場景往往因?yàn)閿?shù)據(jù)量不夠演训,會借助其他流量較多的場景的數(shù)據(jù)做模型訓(xùn)練,大場景的base模型可能是一個個性化的推薦系統(tǒng)贝咙,而小場景的base算法是非個性化的熱門推薦样悟,大小兩個場景間的數(shù)據(jù)分布有較大的不同。這個時候訓(xùn)練樣本的分布被大場景占據(jù)主導(dǎo)庭猩,訓(xùn)練出來的模型用在小場景效果可能會不好窟她。做遷移學(xué)習(xí)時需要謹(jǐn)慎!
  4. 冰山效應(yīng)蔼水。推薦系統(tǒng)里非常常見震糖,并且往往非常的隱蔽的一種數(shù)據(jù)分布不一致的情況被稱之為冰山效應(yīng),也就是說離線訓(xùn)練用的是有偏的冰山上的數(shù)據(jù)趴腋,而在線上預(yù)估的時候吊说,需要預(yù)測的是整個冰山的數(shù)據(jù),包括大量冰面以下的數(shù)據(jù)优炬!我們看下面這張圖颁井。左邊是我們的Baseline,綠色的表示正樣本蠢护,紅色表示負(fù)樣本雅宾,灰色部分表示線上由于推薦系統(tǒng)的“偏見”(預(yù)估分?jǐn)?shù)較低),導(dǎo)致根本沒有展現(xiàn)過的數(shù)據(jù)葵硕。
image.png

離線階段眉抬,我們通過各種優(yōu)化,新模型的離線評估表現(xiàn)更好了懈凹,例如圖中第二列蜀变,可以發(fā)現(xiàn)第4個綠色的正樣本和第7個綠色的正樣本排到了第3和第6的位置,離線的auc指標(biāo)漲了介评。

到了真正線上的預(yù)估也就是第三列库北,發(fā)現(xiàn)對于這部分離線見過的樣本,模型的預(yù)估序并未改變威沫。但是新模型給了灰色沒有見過的數(shù)據(jù)更高的預(yù)估分?jǐn)?shù)贤惯,這部分?jǐn)?shù)據(jù)一旦表現(xiàn)不好,很可能造成我們前面說的情況棒掠,離線(第二列)評估指標(biāo)明明漲了不少孵构,在線(第三列)評估指標(biāo)ctr卻下降。

冰山效應(yīng)在實(shí)驗(yàn)?zāi)P团cbaseline的模型相差較大時很容易造成較大的影響烟很,比如實(shí)驗(yàn)?zāi)P褪莻€性化推薦的DNN模型颈墅,而baseline是一個熱門推薦的策略蜡镶,這個時候新模型往往會推薦很多baseline不會展現(xiàn)出來的之前很少曝光的物品,而這些物品是否能夠被高效點(diǎn)擊和轉(zhuǎn)化有一定的不確定性恤筛。新模型一開始相當(dāng)于都是在擬合老模型產(chǎn)生的樣本官还,剛上線效果如果比較差,經(jīng)過一段時間迭代毒坛,影響的樣本分布慢慢趨近于新模型望伦,也能收斂,但效率較低煎殷。

緩解冰山效應(yīng)的兩個思路:

  1. 對無偏數(shù)據(jù)進(jìn)行上采樣
    這里的無偏是相對的屯伞,可以是隨機(jī)/探索流量產(chǎn)生的樣本,也可以是新模型產(chǎn)生的樣本豪直。大概意思劣摇,就是盡可能利用這些對新模型有利的樣本
  2. 線上線下模型融合
    新模型預(yù)估分?jǐn)?shù) pctr_{new} 和老模型預(yù)估分?jǐn)?shù) pctr_{old} 直接在線上做線性融合,剛上線的時候平滑系數(shù) a 選取比較小弓乙,隨著慢慢迭代末融,a 慢慢放大。
    pctr=a \cdot pctr_{new} + (1-a) \cdot pctr_{old}

4. 模型過擬合

假設(shè)離線評測用的測試數(shù)據(jù)是與訓(xùn)練數(shù)據(jù)做了隔離的暇韧,這種情況下仍然有一定的概率發(fā)生模型過擬合勾习。

在Kaggle比賽中經(jīng)常會出現(xiàn)模型在公開榜單(public leaderboard)上排名很高,但在切換到非公開榜單(private leaderboard)時排名很靠后的情況锨咙,這其實(shí)就是模型過擬合到公開榜單上了语卤。如果離線我們訓(xùn)練了很多模型(對應(yīng)不同的超參數(shù))追逮,都是用同一個測試數(shù)據(jù)集來評估和選擇模型酪刀,當(dāng)這個過程重復(fù)很多次之后,最后選出來的模型有可能是過擬合到這個測試數(shù)據(jù)集上的钮孵,上線后效果就不一定好骂倘。

用測試數(shù)據(jù)集來選擇模型的過程其實(shí)就相當(dāng)于用測試數(shù)據(jù)集訓(xùn)練了一個“篩選模型”的模型,這個過程本身也是有可能過擬合的巴席。舉一個極端一點(diǎn)的例子历涝,最終我們可能選擇出一個在測試數(shù)據(jù)集上效果很好的模型,它能記住測試數(shù)據(jù)集中的每個樣本的label漾唉,但不在測試數(shù)據(jù)集中樣本全部預(yù)測錯誤的一無是處的模型荧库。這也就是一些機(jī)器學(xué)習(xí)模型號稱能夠在benchmark數(shù)據(jù)集上識別準(zhǔn)確率能夠打敗人類的原因。

5. 離線赵刑、在線評估指標(biāo)不一致

在模型優(yōu)化過程中分衫,我們曾遇到過離線AUC 很高(或提升很多)但 CTR 效果不理想;或 AUC 提升幅度不大般此,但 CTR 提升幅度很大的情況蚪战,這是為什么呢牵现?想要回答這個問題,我們先來看 AUC 與 CTR 的關(guān)系邀桑。

AUC指標(biāo)反應(yīng)的是模型把全局任意一對正負(fù)樣本中的正樣本排序在負(fù)樣本之前的概率瞎疼。離線計(jì)算AUC指標(biāo)其實(shí)對應(yīng)了模型對多個請求的樣本之間進(jìn)行排序,而點(diǎn)擊率提升需要模型對一個請求內(nèi)部的多個 Item 進(jìn)行排序壁畸。模型的全局排序能力強(qiáng)不一定就表示同一次請求內(nèi)部的item排序能力強(qiáng)贼急。

GAUC(Group AUC)的指標(biāo)可能更加接近線上CTR的點(diǎn)擊偏好。這里的Group表示按照用戶Session來分組評估樣本捏萍。

6. 其他原因

比如說實(shí)驗(yàn)結(jié)果是否置信等竿裂,具體可以參考這篇文章:《推薦效果不佳時的檢查清單》。

還有諸如流量搶奪照弥,鏈路糾纏等原因腻异,典型的比如在營銷場景,你在前面的PUSH这揣,短信悔常,固定入口廣告做優(yōu)化,把好轉(zhuǎn)化的用戶都轉(zhuǎn)化了给赞。那么下游的IVR電銷机打,人工電銷一定就變難了。這時候你離線用歷史數(shù)據(jù)訓(xùn)練的模型可能離線指標(biāo)提升了片迅,線上也不會有太多的效果残邀。這種在一些瀑布流程的場景中更為常見,一定要關(guān)注實(shí)驗(yàn)的上下游變化柑蛇,比較經(jīng)典的方法是做MVP機(jī)制芥挣,一直維持著最優(yōu)流量的AB測。這樣相對提升是可以把握住的耻台。即使小模塊指標(biāo)變得難看了也沒關(guān)系空免,可能大盤整體還是變好的。

參考資料

  1. 機(jī)器學(xué)習(xí)的數(shù)據(jù)泄露問題
  2. 在你做推薦系統(tǒng)的過程中都遇到過什么坑盆耽?
  3. 推薦效果不佳時的檢查清單
  4. How to Select Your Final Models in a Kaggle Competition
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹋砚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子摄杂,更是在濱河造成了極大的恐慌坝咐,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件析恢,死亡現(xiàn)場離奇詭異墨坚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)氮昧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門框杜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浦楣,“玉大人,你說我怎么就攤上這事咪辱≌窭停” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵油狂,是天一觀的道長历恐。 經(jīng)常有香客問我,道長专筷,這世上最難降的妖魔是什么弱贼? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮磷蛹,結(jié)果婚禮上吮旅,老公的妹妹穿的比我還像新娘。我一直安慰自己味咳,他們只是感情好庇勃,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著槽驶,像睡著了一般责嚷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掂铐,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天罕拂,我揣著相機(jī)與錄音,去河邊找鬼全陨。 笑死爆班,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烤镐。 我是一名探鬼主播蛋济,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼棍鳖,長吁一口氣:“原來是場噩夢啊……” “哼炮叶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起渡处,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤镜悉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后医瘫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侣肄,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年醇份,在試婚紗的時候發(fā)現(xiàn)自己被綠了稼锅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吼具。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖矩距,靈堂內(nèi)的尸體忽然破棺而出拗盒,到底是詐尸還是另有隱情,我是刑警寧澤锥债,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布陡蝇,位于F島的核電站,受9級特大地震影響哮肚,放射性物質(zhì)發(fā)生泄漏登夫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一允趟、第九天 我趴在偏房一處隱蔽的房頂上張望恼策。 院中可真熱鬧,春花似錦潮剪、人聲如沸戏蔑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽总棵。三九已至,卻和暖如春改含,著一層夾襖步出監(jiān)牢的瞬間情龄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工捍壤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骤视,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓鹃觉,卻偏偏與公主長得像专酗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盗扇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容