本文是《機器學習寶典》第 4 篇,讀完本文你可以掌握機器學習中排序算法相關的評估指標。算法
讀完分類與迴歸算法的評估指標以後,你已經知道了機器學習中分類與迴歸算法的評估指標。在這篇給你們介紹一些機器學習中排序算法相關的評估指標。機器學習
直接說排序這個名詞不少人可能以爲很陌生,但實際上它與你的生活密切相關。這裏咱們以搜索功能來講明下。學習
好比你想學習機器學習,可是不知道如何入門,可是你想到有谷歌爸爸,因此就在谷歌中輸入了關鍵詞:機器學習入門,接下來你就看到了一個結果頁,結果頁裏包含了一大堆與入門機器學習相關的連接。lua
能夠看到,每一個連接對應的內容不同,位置也分先後,對於你來講,你固然是但願前幾個連接的內容就能解決你的問題,這樣你就不用花時間去查看靠後的連接,甚至不用去翻頁,也就是說你但願越靠前的位置的內容與你搜索的關鍵詞越相關。.net
換個角度來想,你所看到的這麼多連接其實就是一個模型產生的排序列表,這個列表裏的每一個元素就是一個連接。這裏的連接用行話來講就是「文檔」 。那麼,如何衡量這個排序列表的好壞呢?也就是說每一個文檔到底排在第幾位纔是比較合適的呢?接下來咱們來看幾個衡量排序質量的評估指標。3d
MAP(Mean Average Precision,平均準確率均值)計算時分爲兩部分,第一部分是計算一次查詢後的排序結果的平均準確率(AP),第二部分是計算整體的平均準確率均值(MAP)。通常評估MAP時會限定要評估的排序結果個數,也就是會指定要選取的前K個文檔。orm
其中,AP@K表示計算前K個結果的平均準確率,M表示每次排序的文檔總數,P(k)表示前k個結果的準確率,。rel(k)表示第k個結果是不是相關文檔,相關取值爲1,不相關取值爲0。cdn
上面獲得的就是一次查詢的平均準確率,接下來對屢次查詢的AP求出均值便可獲得MAP。blog
其中,Q表示查詢的次數,表示第q次查詢的AP@K的結果。排序
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(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 |
參考:
[1] 美團算法團隊.美團機器學習實戰.第一章第一節(評估指標)[2] https://blog.csdn.net/simple_the_best/article/details/52296608?utm_source=blogxgwz2[3] http://www.infoq.com/cn/articles/cyw-evaluate-seachengine-result-quality