1. 程式人生 > >簡易說人工智慧(三) 細數《美團機器學習實戰》裡的錯誤 2:解釋NDCG

簡易說人工智慧(三) 細數《美團機器學習實戰》裡的錯誤 2:解釋NDCG

一、書中第10頁的錯誤1
在這裡插入圖片描述
二、什麼是NDCG

美團的小夥伴應該有是金融領域背景,詞典翻譯出來的四個詞兩個用了經濟學相關的詞。如果作者對這個演算法的真正本意有了解,恐怕也不會這麼翻譯。

首先,讀者要知道NDCG是用來評估一個推薦演算法的推薦結果的優劣的。就像《美團機器學習實戰》第一章的內容,評估指標。用這個指標來計算你的演算法的到底有多好。如果這個演算法的用處和目的不明確,請先回去讀上篇文章中提到的日本人的那本書。

三、先弄明白CG(cumulative gain)

對一個名詞,例如籃球進行搜尋之後,我們得到一個結果列表:A、B、C、D。

這四個詞都與“籃球”相關,那麼如何評估整個搜尋結果的質量呢?

後臺一定用很多詞計算了與“籃球”的相關度,之後得到了相關度最好的四個詞,由低到高排序得到的。

這裡先用一個最簡單的方法,將相關度最好的四個詞的相關度疊加,就是整個搜尋演算法的相關度結果。也就是CG演算法,翻譯可叫"積累增益"。有些晦澀,其實的確有些詞還是意會下最好。

公式:
在這裡插入圖片描述
其中:
p代表推薦得到的結果中共p個元素;
rel其實就是relation,相關性的縮寫;i表示p中的第i個元素;

大家到這裡能理解吧?

四、CG的問題與DCG

直接用CG演算法對這樣的推薦結果做評估其實有點問題,例如:如果令一個演算法的推薦結果是:A、C、D、B。那麼這兩個演算法的CG評估結果是不是一樣的?

但是A、B、C、D四個詞本身與“籃球”的相關度應該是又大小之分的。因此就有了一個改進措施。給排列順序增加權重,讓排名越靠前的結果越能影響最後的結果。增加的方法只要能體現出排在前面的權重更大即可,只是這個公式選擇了醬紫做:

第i個位置權重是 1/log2(i+1),那麼第i個結果產生的效益就是 reli * 1/log2(i+1),所以:
在這裡插入圖片描述
注意不要被推導嚇到,其實自己最討厭這樣的變形,不就是把第一個元素計算值拿出來了,讓人還以為做了很大的簡化一樣。

但是有人會說美團原書的公式是:
在這裡插入圖片描述
我的解釋是,DCG的重點目的在於造一個能體現排在前面的元素的有一個更大權重的結果,所以用哪個公式都行(這是記憶公式的一種簡單方法,具體選擇該引數更深的妙處,可以查詢相關的資料)。

學習人工智慧的公式一定要記住一點,公式只是設計出來嫩滿足某種計算要求的演算法,你完全可以用1/n來表示權重,只是他們選的公式在計算邊界值時比你的1/n更合理而已

所以我們現在有了公式DCG(Discounted Cumulative Gain),進行了折減(Discounted )的CG演算法。解決了最初的問題。

五、DCG仍需要優化

先看NDCG,Normalized Discounted cumulative gain。Normalized,正常化,數學領域叫歸一化的DCG。

1、為何要對資料進行歸一化?

我們上面不同演算法計算的結果,可能有不同數目與“籃球”類似的返回值。那麼不同演算法的DCG結果相差會很大。具有多個返回結果的演算法當然比只有一個犯規結果的算法佔優勢。

所以需要把這種由於演算法數目導致的差異消除,就是對DCG進行歸一化。

2、歸一化方法

歸一化一般都是用資料除以自身所在的最大數值範圍,例如:將一個取值在[0,100]的陣列歸一化,方法便是將該陣列所有元素都除以100。歸一化到[0,1]區間。那麼取值在[0,500]的陣列歸一化便是除以500。

這樣變化後,兩組資料處於同一量綱,就可以做對比了。

那DCG演算法的最大取值該是多少呢?

答案是:idealization DCG,理想化DCG,其實理想的就是最大的。
在這裡插入圖片描述
該公式與DCG形式完全一樣,只是relk的取值略有差別。

|REL| 表示,將結果按照相關性從大到小的順序排序,也就是按照最優的方式對結果進行排序。

看例子:假設一個演算法最終得到5個搜尋結果,其相關性分數分別是 3、2、3、0、1、2。結果進行排序後應該為3、3、2、2、1、0。

即排序前:rel序列為3、2、3、0、1、2;
排序後rel序列為3、3、2、2、1、0。

3、分別計算DCG與IDCG

DCG計算:
搜尋結果
DCG=(2**3-1)
DCG = 3+1.26+1.5+0+0.38+0.71 = 6.86

安裝reli對搜尋結果進行排序
IDCG計算:
在這裡插入圖片描述
IDCG = 3+1.89+1.5+0.86+0.77+0.35 = 8.37

六、求解NDCG

這裡只寫一句話:
NDCG = DCG/IDCG
[email protected] = 6.86/8.37 = 81.96%
之後不同的搜尋結果就可以採用自己的NDCG進行對比了。

寫到這裡,可以去看美團原書中的計算錯誤了,請讀者自己先去檢視,下篇博文看答案!

七、結束語

麻煩轉告美團的該書第十頁作者,NDCG如果非要用中文說,或許可以叫“歸一化折損累計增益”,你的翻譯真的拉低了作品的水平。

參考:
搜尋評價指標——NDCG
理解NDCG