【机器学习】模型又线上线下不一致怎么办?
作者:杰少
本文對于推薦系統中的采樣評估指標進行了討論,內容略多, 還有一些數學推導, 有興趣的可以去閱讀原文, 此處直接列出核心觀點:
在評估推薦算法的效果時,能不采樣就不采樣!
除了AUC,Precision@K,Recall@K,Average Precision,NDCG都是不一致的,采樣計算得到的結果和真實結果可能差很大!
現在隨機采樣計算得到的評估指標的分數具有高偏差,低方差的問題,很多情況和真實情況不符合,結論可能也都錯了!
如果一定要進行采樣計算評估指標的值, 建議采用本文提出的糾正的方案,雖然可能會有較大的方差,但是偏差大大降低,更加接近真實情況;
因為本文實在是有些干,所以不想讀文章的朋友直接記住下面兩張PPT的內容就可以了。
文章的框架是:
先介紹目前我們采樣的評估指標的計算方法;
介紹我們目前常用的一些評估指標,包括AUC,Precision,Recall,AP,NDCG;
然后討論怎么樣才算是好的采樣評估指標(一致性),之后開始舉例討論現有的諸多指標例如Recall,Precision,AP等存在不一致性,也就是說采樣之后計算的指標是不能反映真實情況的;
為了能彌補現有的采樣策略的問題,作者提出了三種不同的修正策略,并驗證了其在采樣評估的時候相較于原始采樣策略的優勢(更加接近于真實情況);
最后作者給出了一些實踐建議&小結。
Item推薦的評估
對于推薦最常用的評估機制如下:假設我們有個商品需要推薦,給定一個(一般是某個用戶或者搜索中的query),我們設計了一個推薦算法, 會返回給我們一個個商品的排序列表, , 表示預測的排序。例如表示算法會給推薦兩個相關的商品,并且推薦的位置為3和5.然后我們使用某個評估指標對我們的推薦進行評估,一般我們會對一個集合(例如用戶集合)求個均值:
這么做也就意味著我們對于某個用戶所有的商品都是同等受歡迎的,當然在一些復雜的場景下,有些用戶是重點用戶,會有不同的權重,本篇文章重點討論簡化的情況。
評估指標
此處我們介紹在推薦系統中常見的幾種評估指標。以及它們對應的計算方法。
AUC
Area under ROC curve(AUC):
其中: 表示為真的, 否則為0
Precision & Recall
在位置的Precision:衡量top的預測商品的相關商品的比例。
在位置的Recall:衡量top預測商品的recovered的比例。
Average Precision
在位置的Average Precision用來衡量一個相關商品在所有ranks的精度。
402 Payment Required
Normalized discounted cumulative gain(NDCG)
402 Payment Required
簡化指標(的情況下)
我們假設, 也就是說我們只有一個相關的商品并且被排序模型排在第個位置上,那么上面的指標可以重新計算得到:
402 Payment Required
402 Payment Required
隨著的增長,各個指標的變化:
我們可以發現:
AP是下降最快的;rank1的AP相較于rank2是2倍重要;rank1的NDCG是1.58倍重要與rank2;
AUC幾乎是線性下降的, 也就是說我們將商品從102位排到第101位和把商品從第2位排到第1位是類似的;
采樣指標
采樣的必要性 & 一致性
在實踐中,尤其是很多大型的平臺,用戶和商品都是億級別的,對這種級別的數據進行排序不僅會耗費大量的計算資源,而且還要等很久的時間,所以大家都會選擇采樣觀察指標。很多時候大家會選擇采樣個無關的商品然后加上相關的商品再去計算指標,其實只需要保證采樣之后計算得到的指標和我們的全量數據計算得到的指標是保證相對大小的,那么一般是沒有任何問題的,
一致性:令評估數據是固定的,如果任意兩個推薦算法和在期望下能保證相對順序,那么我們說在采樣下指標是保持一致的, 也就是說,對于和,我們有:
402 Payment Required
其中: 表示在所有相關商品和個隨機采樣的不相關商品中的相關商品的排序。
而如果是不一致的,那么評估并不是一個真實表現的好的indicator。
不一致性
上面我們知道了一致性的重要性,那么我們常用的那些指標AUC, Precision, Recall等等是否滿足一致性呢?下面我們來看一些例子。
1. 全量情況下:
假設我們有三個推薦系統,以及個商品,每個推薦系統將會在5個特殊實例上(例如五個用戶)上面進行評估, 這些實例每個只對應一個相關的商品。而這三個推薦系統的結果為:
: 對五個實例, 將所有商品的推薦位置都排在了100;
: 將兩個實例, 將商品的推薦位置排在了40;
: 將某個商品在某個評估實例中的排名在第2位,除此之外,其他四個實例的排名都不好;
最終我們的得分計算如下Table1,可以按照評估指標的公式直接進行計算。
2. 采樣情況下:
現在假設我們隨機采樣了個不相關的商品,然后我們重新計算在采樣的集合下的新的位置。上圖中的Table2展示了采樣1000次的重新采樣的均值和標準差。通過觀察Table1和Table2,我們發現:
在Table1中,的AP是和的10倍,但是在Table2中,的AP是最低的;
Recall, NDCG在Table1和Table2中的相對順序是沒有保持一致的;
AUC在兩個Table中是唯一一個保持一致的指標。
AP指標:當樣本個數少于50的時候,系統,當樣本個數約為200的時候, ,當樣本的個數約為500的時候,對于更多的樣本,.
NDCG指標:變化和AP指標類似;
Recall指標:更加敏感;(變化最快)
AUC維持不變;
采樣下的rank分布
此處我們還是假設:
只有一個相關的商品,;
表示相關商品的真實rank,表示采樣情況下的rank.
所有不相關商品是均勻采樣的,可能排的更高也有可能會更低;
為所有商品的個數;
那么采樣的樣本排序比更高的概率為:;
如果我們重復采樣次, 并且計算一個商品排序更高的次數,這個就會對應一個Bonomial的分布,的rank服從:,此時,我們的metric的期望值為:
402 Payment Required
當我們調整的值的時候,期望 的變化如Figure3所示:
AP和NDCG(不同的采樣的次數m),在不同的下開始時變化最大;(越大越接近于真實的情況)
AUC是不變的;
期望的Metrics
上面主要都是從試驗的方面來驗證采樣之后重新計算的Metric和真實的Metric除了AUC之外基本都是不大置信的,此處我們計算每個Metric的期望。
AUC的期望
所以最終的期望為:
402 Payment Required
采樣計算得到的AUC是真實AUC的無偏估計,所以AUC在采樣下是能保證一致的。
Recall的期望
402 Payment Required
402 Payment Required
AP的期望
402 Payment Required
我們發現:當m比較大的時候, ,最終我們的結果為和的真實結果是差不大的。
小的采樣比例
假設我們的,那么,對于任意的評估指標以及任意的采樣分布,我們有:
402 Payment Required
而對于商品的均勻采樣, 就是采樣的商品排在之后的概率,也就是,現在就是:
402 Payment Required
因為和,都是固定的,所以上面又可以表示為:
也就是說是的線性函數,如果我們比較兩個不同算法,就需要重點觀察的符號,如果Metric在位置1和位置2的影響不大,無法區分,例如Precision和Recall(當),那么采樣的Metric就一直是常數,沒有任何用處。
對于,所有的metric在期望上都給出相同的定性度量,沒有必要選擇不同的評估指標;
糾正的評估指標
從上面的各種推導以及特例中,我們可以發現:采樣計算得到的Metric和我們真實的Metric是不一樣的。采樣計算得到的Metric很多時候是不能反映真實的情況。情況十分糟糕,那么我們能不能設計一種方法,使得我們采樣計算得到的結果和真實的結果相似呢?
Rank的無偏估計
采樣的評估指標通常通過對采樣后觀測到的rank通過真實的評估計算得到,也就是說:
但很多時候是對于的一個很差的近似, 實際上經常低估,那么我們這個時候盡可能不基于進行估計,我們可以對的無偏估計, 在前面我們知道:,如果我們令,那么關于的無偏估計就是, 則, 所以 , 于是我們得到如下的糾正的指標:
最小Bias估計器
上面我們使用了對于rank的無偏估計,但是如果是非線性的, 那么其實其實就是有偏的, 我們平時經常會嘗試去優化平均偏差,
其中為我們的rank的先驗。
因為是從到的函數, 所以可以看作為是一個的向量,所以我們的目標就是尋找一個向量來最小化下面的式子:
402 Payment Required
402 Payment Required
上面這個等價于一個最小平方問題,它的解為:,其中:
, , , 。
當時,上面的問題時欠定的(under-determined),也就是說我們無法獲得一個無偏的估計對于所有的.
Bias-Variance Trade-off
最小偏差估計器的一個潛在問題在于它可能會帶來較大的方差,這個在實驗階段可以觀測到,那么如何降低方差呢?和很多傳統機器學習問題類似,加正則。于是此處我們加入一個方差項,得到:
402 Payment Required
其中是一個正數,這就是一個正則化的最小二乘問題,于是我們的解為:
其中, , 當時候,我們的解為:
402 Payment Required
在實際研究中,最終的評估指標是通過多個評估點上聚合得到,這也會降低整體的方差,一般一個更低的值會更好些。
實驗驗證
那么糾正之后的指標會不會更好呢?作者做了一個實驗,作者使用uniform的先驗,采樣的樣本,所有的商品的個數為,也就是說采樣的比例為,從Figure4中我們發現,越小的會帶來更大的波動,所以合適的是可以很好地降低方差的, 糾正之后的評估指標和真實的指標也更為接近。
樣本大小和數據集大小的影響
此處列出作者的一些核心觀點:
增加樣本的大小可以減少采樣的評估指標的bias;同時也可以降低糾正之后的評估指標;
增加數據集的大小,會帶來負向的效果;
增加評估點的個數,可以降低平均估計的方差,而這對于糾正之后的評估指標是更加友好的。因為沒有進行糾正的指標即使最終拿到了0方差,但是會存在非常大的偏差;
實驗
實驗主要驗證三個問題:
不同的推薦算法是否構建不同的排序分布;(例如有些推薦算法在頂部表現好,有些是整體好)
采樣計算得到的指標的結果和真實的結果是否存在不一致?
糾正的評估指標是否可以幫助我們緩解2中的問題?
排序分布
從上面的實驗看出,
Z算法在Top10中的表現是最好的;但是最終將超過1600個用戶放到了最壞的bucket;
X算法相對平衡,最壞的bucket中的商品最少;(低于300)
Y算法在Top10中的表現優于X,但是整體看,會趨向于將相關的商品放到更差的rank.
采樣指標
從上表中我們發現,
Z算法在真實情況下載指標Recall,NDCG以及AP上都是最好的,但是采樣之后的結果卻和真實情況不一致;在采樣指標計算得到的指標有時可能是效果最差的算法,例如X在采樣上計算得到的分是最高的,但是實際情況是最低的。
這些指標的方差很小,所以不是方差的問題,而是采樣帶來的偏差。
在AUC指標上,所有的算法是保持一致的;
所以如果實驗中最終的評估指標是采樣的Recall,AP,NDCG等,那么很可能結論是錯誤的.
糾正的指標
此處作者對比了之前提出的三種不同的糾正方案,同樣的從Table3中,我們發現:
糾正之后計算得到的指標和真實指標的Bias降低了.
那么糾正之后的指標和未糾正在樣本下的影響是什么樣的呢?
從上圖中,我們發現,未進行糾正的采樣指標需要超過1000的樣本(1/3的樣本),才能得到推薦算法Y比X好的結論,但是糾正之后的指標(BV的trade off + )只需要60個樣本即可達到同樣的效果;
我們發現確實糾正之后的指標得到的Bias下降了,那么方差呢?
從上面的實驗中,我們發現:
BV 0.1看上去是最好,基本在100次比較中都有90次是對的;
幾乎所有的糾正方案都可以獲得比未進行糾正的指標更為合理的效果;
小結 & 建議
小結
本文的研究顯示之前大多數論文采用采樣計算最終指標的方案其實是錯誤的,大概率會和真實的情況存在偏差,得到錯誤的結論。所以如果可以的話,我們應該盡量避免在最終評估時對樣本進行采樣,如果無法避免的話,那么糾正之后的方案可以拿到更為合理的結果(但是會增加方差)。
建議
從上面的分析以及實驗中,我們發現采樣之后計算的指標會帶來較大的偏差,使用糾正的策略,可以降低偏差,但是也會引入更高的方差。所以如果采樣時不可避免,那么有下面幾條建議:
使用本文中提出的糾正之后的指標并且使用不同的樣本重新運行試驗多次;
重復試驗N此(不同數據集,N-fold的交叉驗證),方差會由數據集的切分不同而被引入,也有可能會被推薦算法的初始化引入,對負樣本采樣的過程中,隨機種子也會帶來另外一種方差, 所以我們很難找到兩個不同的推薦算法"statistically significant"差異;但即便如此,我們計算得到的評估指標仍然是一個非常強的indicator,顯示我們算法在真實情況下的表現;偏差越小,indication就越強。
偏差只有在不采樣的情況下才可以較好地消除。
參考文獻
On Sampled Metrics for Item Recommendation:https://dl.acm.org/doi/pdf/10.1145/3394486.3403226
https://crossminds.ai/video/5f3375ac3a683f9107fc6bb8/
KDD2020最佳論文: 關于個性化排序任務評價指標的大討論:https://zhuanlan.zhihu.com/p/20682351
總結
以上是生活随笔為你收集整理的【机器学习】模型又线上线下不一致怎么办?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】使用 Python 构建电影
- 下一篇: Vue-cli 项目优化归纳(打包、源码