炼丹知识点:模型评估里的陷阱
在實踐中,做推薦系統的很多朋友思考的問題是如何對數據進行挖掘,大多數論文致力于開發機器學習模型來更好地擬合用戶行為數據。然而,用戶行為數據是觀察性的,而不是實驗性的。這里面帶來了非常多的偏差,典型的有:選擇偏差、位置偏差、曝光偏差和流行度偏差等。如果不考慮固有的偏差,盲目地對數據進行擬合,會導致很多嚴重的問題,如線下評價與在線指標的不一致,損害用戶對推薦服務的滿意度和信任度等。
在《流量為王:ABTest流量分層分桶機制》一文中,我們介紹了什么是A/B Test和怎么做A/B測試,本文介紹線下模型評估的幾種方法。
在交叉校驗方法里,又有兩種驗證形式,一種是K-Flod交叉驗證,另一種是留一驗證。
K-Flod交叉驗證
- 首先,將全部樣本劃分為大小相等的K份;
- 然后,依次遍歷K個子集,將第i個子集作為驗證集,其他子集作為訓練和評估;
- 最后,將k次評估的結果的平均值作為最終評估結果。
留一驗證
每次留下1個樣本作為驗證集,N個數據,驗證時產生N個模型。最后計算N個模型評估的平均值作為最終評估結果。
從上述描述中我們能看到,留一驗證法的時間開銷極大,真實場景使用較少。
沒錯,Holdout檢驗就是最簡單的最直接的驗證方法,比如我們在做排序模型時,我們把樣本按照80%和20%的比例分成兩部分,80%樣本用作模型訓練,20%樣本用作驗證。
這種方法簡單,但是缺點也很明顯,即隨機得到的20%得到的評估結果也具有一定的隨機性。
自助法對于總數為N的樣本,進行n次又放回的隨機抽樣,n次采樣有的樣本重復,有的從未被抽中過,最后將沒有被抽中的部分作為驗證集。驗證集的評估指標作為最終的評估指標。
這時候,你可能會問,沒抽中的樣本有多少呢?根據n次抽樣均未被抽中的概率為(1-1/n)的n次方,根據重要極限定理解之,當樣本足夠多的時候,大約有36.8%的樣本未被抽中過。
目前業界應用最多的,是可重疊分層分桶方法。具體來說,就是將流量分成可重疊的多個層或桶。因為很多類實驗從修改的實驗參數到觀察的產品指標都是不相關的,完全可以將實驗分成互相獨立的多個層。例如推薦算法召回層、推薦算法排序層、打散層,或者首頁、業務頁、詳情頁等。
流量分桶原理
采用如下步驟將流量分配到具體模型上面去:
- 把所有流量分成N個桶。
- 每個具體的流量Hash到某個桶里面去。
- 給每個模型一定的配額,也就是每個策略模型占據對應比例的流量桶。
- 所有策略模型流量配額總和為100%。
- 當流量和模型落到同一個桶的時候,該模型擁有該流量。
舉個栗子來說,所有流量分為32個桶,A、B、C三個模型分別擁有37.5%、25%和37.5%的配額。對應的,A、B、C應該占據12、8和12個桶。為了確保模型和流量的正交性,模型和流量的Hash Key采用不同的前綴。
首先,線下評估無法消除模型過擬合歷史數據的問題。
其次,線下評估沒法模擬線上真實環境,包括但不限于數據丟失、特征延遲等問題。
而且,線下評估沒法真實的再現線上類似 用戶點擊率、用戶完播率、用戶停留時長等指標。因為這些指標只有真實發生時,才是真實的數據。
最后,從系統偏差角度,我們在《推薦系統Bias大全》一文中介紹了,由于用戶交互的數據是觀察性的,而不是實驗性的,因此很容易在數據中引入偏差。它們通常來自不同的數據分組,并使推薦模型捕捉到這些偏差,甚至對其進行縮放,從而導致系統性種族主義和次優決策。本文將數據偏差分為四類:外顯反饋中的選擇偏差和從眾偏差,內隱反饋中的暴露偏差和位置偏差。
現實世界中的推薦系統通常會產生一個有害的反饋回路。前面的小節總結了在循環的不同階段發生的偏差,隨著時間的推移,這些偏差可能會進一步加劇。以位置偏差為例,排名靠前的項目通常會從更大的流量中受益,這反過來又會增加排名的顯著性和它們所接收的流量,從而形成一個“富起來越富”的情景。許多研究者還研究了反饋回路對流行偏差的影響。他們的模擬結果顯示,反饋回路會放大流行偏差,流行的商品變得更加流行,而非流行的商品變得更不受歡迎。這些放大的偏差也會降低用戶的多樣性,加劇用戶的同質化,從而產生所謂的 “echo chambers”或“filter bubbles”。
總結
以上是生活随笔為你收集整理的炼丹知识点:模型评估里的陷阱的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Short-Session的推荐如何做?
- 下一篇: 那些决定模型上限的操作