讀完分類與迴歸算法的評估指標之後,你已經知道了機器學習中分類與迴歸算法的評估指標。在這篇給大家介紹一些機器學習中排序算法相關的評估指標。
生活中的排序問題
直接說排序這個名詞很多人可能覺得很陌生,但實際上它與你的生活密切相關。這裏我們以搜索功能來說明下。
比如你想學習機器學習,但是不知道如何入門,但是你想到有谷歌爸爸,所以就在谷歌中輸入了關鍵詞:機器學習入門,接下來你就看到了一個結果頁,結果頁裏包含了一大堆與入門機器學習相關的鏈接。
可以看到,每個鏈接對應的內容不一樣,位置也分前後,對於你來說,你當然是希望前幾個鏈接的內容就能解決你的問題,這樣你就不用花時間去查看靠後的鏈接,甚至不用去翻頁,也就是說你希望越靠前的位置的內容與你搜索的關鍵詞越相關。
換個角度來想,你所看到的這麼多鏈接其實就是一個模型產生的排序列表,這個列表裏的每個元素就是一個鏈接。這裏的鏈接用行話來說就是“文檔” 。那麼,如何衡量這個排序列表的好壞呢?也就是說每個文檔到底排在第幾位纔是比較合適的呢?接下來我們來看幾個衡量排序質量的評估指標。
MAP
MAP(Mean Average Precision,平均準確率均值)計算時分爲兩部分,第一部分是計算一次查詢後的排序結果的平均準確率(AP),第二部分是計算總體的平均準確率均值(MAP)。一般評估MAP時會限定要評估的排序結果個數,也就是會指定要選取的前K個文檔。
其中,AP@K表示計算前K個結果的平均準確率,M表示每次排序的文檔總數,P(k)表示前k個結果的準確率,
。rel(k)表示第k個結果是否是相關文檔,相關取值爲1,不相關取值爲0。
上面得到的就是一次查詢的平均準確率,接下來對多次查詢的AP求出均值即可得到MAP。
其中,Q表示查詢的次數,
表示第q次查詢的AP@K的結果。
MRR
MAP沒有考慮位置的影響,這裏介紹一個新的評估指標:MRR(Mean Reciprocal Rank,平均排序倒數)計算時先求出每一個查詢的第一個相關文檔位置的倒數,然後將所有倒數值求平均。
假如說有三次查詢,每次查詢的前5條結果的相關性如下:
query1 | query2 | query3 |
---|---|---|
0 | 1 | 0 |
1 | 0 | 0 |
0 | 0 | 1 |
1 | 0 | 0 |
其中,0表示文檔不相關,1表示文檔相關。
可以看到,第一次查詢中第一個相關文檔的順序是2,第二次查詢中第一個相關文檔的順序是1,第三次查詢中第一個相關文檔的順序是3,那麼
NDCG
NDCG(Normalized Discounted Cumulative Gain,歸一化折損累積增益)是另一個衡量排序質量的評估指標。MAP衡量相關性時只考慮兩種情況:1和0,而NDCG可以將相關性分爲更多的等級,正式介紹NDCG之前,先來介紹下CG(Cummulative Gain,累積增益)。
其中,CG@K表示計算前K個結果的累計增益,
表示第k個位置的文檔的相關性得分。
CG的一個缺點是沒有考慮不同位置的影響,我們總是希望相關性高的結果排在前面,如果相關性高的結果排在後面,我們應該進行懲罰,所以引入了DCG(Discounted Cummulative Gain,折扣累積增益),也就是對排名靠後的結果進行“打折處理”。
其中,分子表示相關性越高,DCG越大,分母表示位置越靠後,DCG越小。
雖然DCG考慮了位置的影響,但是DCG也會受到結果數量的影響,爲了使得具有可比性,需要對DCG進行歸一化處理,這樣就得到了NDCG。
其中,
表示前k個排序返回結果集能得到的最佳排序結果,即當越相關的文檔排放的位置越靠前時計算得到DCG即爲IDCG。
練習題
看完這篇文章,我們來做幾道練習題來檢驗下學習成果:
1. 假定我進行了兩次查詢,得到的結果如下(1表示相關,0表示不相關),求MAP@5。
query1 | query2 |
---|---|
1 | 0 |
0 | 1 |
1 | 0 |
0 | 1 |
1 | 0 |
2. 假定相關性等級爲3級(0-2),模型對4個文檔的排序結果如下,求NDCG@4。
文檔 | 模型排序 | 相關性 | 最佳排序 |
---|---|---|---|
d2 | 1 | 1 | 2 |
d3 | 2 | 1 | 3 |
d1 | 3 | 2 | 1 |
d4 | 4 | 0 | 4 |
以上所有的練習題答案我都會公佈在我的知識星球中,方便後續做一個知識沉澱;另外,關於文章有任何疑問或者要深入學習與交流,都可以加入我的知識星球來交流