推薦系統遇上深度學習(十六)--詳解推薦系統中的常用評測指標
最近閱讀論文的過程中,發現推薦系統中的評價指標真的是五花八門,今天我們就來系統的總結一下,這些指標有的適用於二分類問題,有的適用於對推薦列表topk的評價。
1、精確率、召回率、F1值
我們首先來看一下混淆矩陣,對於二分類問題,真實的樣本標籤有兩類,我們學習器預測的類別有兩類,那麼根據二者的類別組合可以劃分為四組,如下表所示:
上表即為混淆矩陣,其中,行表示預測的label值,列表示真實label值。TP,FP,FN,TN分別表示如下意思:
TP(true positive):表示樣本的真實類別為正,最後預測得到的結果也為正;
FP(false positive):表示樣本的真實類別為負,最後預測得到的結果卻為正;
FN(false negative)
TN(true negative):表示樣本的真實類別為負,最後預測得到的結果也為負.
可以看到,TP和TN是我們預測準確的樣本,而FP和FN為我們預測錯誤的樣本。
基於混淆矩陣,我們可以得到如下的評測指標:
準確率
準確率表示的是分類正確的樣本數佔樣本總數的比例,假設我們預測了10條樣本,有8條的預測正確,那麼準確率即為80%。
用混淆矩陣計算的話,準確率可以表示為:
精確率/召回率
精確率表示預測結果中,預測為正樣本的樣本中,正確預測為正樣本的概率;
召回率表示在原始樣本的正樣本中,最後被正確預測為正樣本的概率;
二者用混淆矩陣計算如下:
F1值
為了折中精確率和召回率的結果,我們又引入了F-1 Score,計算公式如下:
2、AUC
AUC定義為ROC曲線下方的面積:
ROC曲線的橫軸為“假正例率”(True Positive Rate,TPR),又稱為“假陽率”;縱軸為“真正例率”(False Positive Rate,FPR),又稱為“真陽率”,
假陽率,簡單通俗來理解就是預測為正樣本但是預測錯了的可能性,顯然,我們不希望該指標太高。
真陽率,則是代表預測為正樣本但是預測對了的可能性,當然,我們希望真陽率越高越好。
下圖就是我們繪製的一張ROC曲線圖,曲線下方的面積即為AUC的值:
AUC還有另一種解釋,就是測試任意給一個正類樣本和一個負類樣本,正類樣本的score有多大的概率大於負類樣本的score。
3、Hit Ratio(HR)
在top-K推薦中,HR是一種常用的衡量召回率的指標,其計算公式如下:
分母是所有的測試集合,分子式每個使用者top-K推薦列表中屬於測試集合的個數的總和。舉個簡單的例子,三個使用者在測試集中的商品個數分別是10,12,8,模型得到的top-10推薦列表中,分別有6個,5個,4個在測試集中,那麼此時HR的值是 (6+5+4)/(10+12+8) = 0.5。
4、Mean Average Precision(MAP)
在瞭解MAP(Mean Average Precision)之前,先來看一下AP(Average Precision), 即為平均準確率。
對於AP可以用這種方式理解: 假使當我們使用google搜尋某個關鍵詞,返回了10個結果。當然最好的情況是這10個結果都是我們想要的相關資訊。但是假如只有部分是相關的,比如5個,那麼這5個結果如果被顯示的比較靠前也是一個相對不錯的結果。但是如果這個5個相關資訊從第6個返回結果才開始出現,那麼這種情況便是比較差的。這便是AP所反映的指標,與recall的概念有些類似,不過是“順序敏感的recall”。
比如對於使用者 u, 我們給他推薦一些物品,那麼 u 的平均準確率定義為:
用一個例子來解釋AP的計算過程:
因此該user的AP為(1 + 0.66 + 0.5) / 3 = 0.72
那麼對於MAP(Mean Average Precision),就很容易知道即為所有使用者 u 的AP再取均值(mean)而已。那麼計算公式如下:
5、Normalized Discounted Cummulative Gain(NDCG)
對於NDCG,我們需要一步步揭開其神祕的面紗,先從CG說起:
CG
我們先從CG(Cummulative Gain)說起, 直接翻譯的話叫做“累計增益”。 在推薦系統中,CG即將每個推薦結果相關性(relevance)的分值累加後作為整個推薦列表(list)的得分。即
這裡, rel-i 表示處於位置 i 的推薦結果的相關性,k 表示所要考察的推薦列表的大小。
DCG
CG的一個缺點是沒有考慮每個推薦結果處於不同位置對整個推薦效果的影響,例如我們總是希望相關性高的結果應排在前面。顯然,如果相關性低的結果排在靠前的位置會嚴重影響使用者體驗, 所以在CG的基礎上引入位置影響因素,即DCG(Discounted Cummulative Gain), “Discounted”有打折,折扣的意思,這裡指的是對於排名靠後推薦結果的推薦效果進行“打折處理”:
從上面的式子可以得到兩個結論:
1)推薦結果的相關性越大,DCG越大。
2)相關性好的排在推薦列表的前面的話,推薦效果越好,DCG越大。
NDCG
DCG仍然有其侷限之處,即不同的推薦列表之間,很難進行橫向的評估。而我們評估一個推薦系統,不可能僅使用一個使用者的推薦列表及相應結果進行評估, 而是對整個測試集中的使用者及其推薦列表結果進行評估。 那麼不同使用者的推薦列表的評估分數就需要進行歸一化,也即NDCG(Normalized Discounted Cummulative Gain)。
在介紹NDCG之前,還需要了解一個概念:IDCG. IDCG, 即Ideal DCG, 指推薦系統為某一使用者返回的最好推薦結果列表, 即假設返回結果按照相關性排序, 最相關的結果放在最前面, 此序列的DCG為IDCG。因此DCG的值介於 (0,IDCG] ,故NDCG的值介於(0,1],那麼使用者u的[email protected]定義為:
因此,平均NDCG計算為:
NDCG的完整案例
看了上面的介紹,是不是感覺還是一頭霧水,不要緊張,我們通過一個案例來具體介紹一下。
假設在Baidu搜尋到一個詞,得到5個結果。我們對這些結果進行3個等級的分割槽,對應的分值分別是3、2、1,等級越高,表示相關性越高。假設這5個結果的分值分別是3、1、2、3、2。
因此CG的計算結果為3+1+2+3+2 = 11。DCG的值為6.69,具體見下表:
理想狀況下,我們的IDCG排序結果的相關性應該是3,3,2,2,1,因此IDCG為7.14(具體過程不再給出),因此NDCG結果為6.69/7.14 = 0.94。
6、Mean Reciprocal Rank (MRR)
MRR計算公式如下:
其中|Q|是使用者的個數,ranki是對於第i個使用者,推薦列表中第一個在ground-truth結果中的item所在的排列位置。
舉個例子,有三個使用者,推薦列表中正例的最小rank值分別為3,2,1,那麼MRR=(1 + 0.5 + 0.33) / 3 = 0.61
7、ILS
ILS是衡量推薦列表多樣性的指標,計算公式如下:
如果S(bi,bj)計算的是i和j兩個物品的相似性,如果推薦列表中物品越不相似,ILS越小,那麼推薦結果的多樣性越好。
8、程式碼實踐
參考目錄為: