在分類任務中,不知道是不是多標籤分類,看完本文就知道了。
【MAP常用於檢測識別,是先(檢測)分割,然後(分類)識別,是連續的過程】
除了常見的評價指標外,還有一個能裝逼的指標,因爲知道的人少了一些。
這是來自github搜索到的版本,感覺很高大上啊。
每一個類別的AP,最後得到MAP,太好看了。
當前py file的絕對路徑爲
os.path.abspath(__file__)
切換工作文件夾到path
os.chdir(path)
當前工作路徑
os.getcwd()
由於MAP是由PR值求得的,因此必然有PR值,公式爲:來源於網絡,沒有仔細考究
1-先計算一版PR值曲線,隨着P值單調遞減;
2-通過數值積分計算曲線下的面積,就是AP;
這個MAP在目標檢測中用的多,如果沒有做過Object Detection可能沒有接觸過。
glob.glob的用法比查找該文件夾下的內容方便。
glob.glob(Dir + '/*.txt')
mlists=os.listdir(Dir)
mlists=[os.path.join(Dir,m) for m in mlists]
>>> [0]*12
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
這個版本給出的有點繁瑣,沒必要讀寫文件,直接舉個例子不就好了,讓別人自己整輸入輸出的數據,真是。
這裏面不得不提的一些名詞:
miss rates未命中率,這個與召回中的hit rates 是對應的,mr = (1 - precision)
fppi——false positives per image每個圖的假陽性率
log-average miss rate——0.01到1之間對數均分成9個數
先求每個類的AP,再進行mean即可。但是我發現似乎不能從圖像裏摳出來,因爲有用到圖像的hw(IoU等)這就尷尬了。如果不是行人檢測或者圖像領域的MAP怎麼求啊??also see the issue in Object Detection.
推倒重來,前面的基本上對推薦中的評價指標沒有任何幫助,只能用於目標檢測中。
在Youtube2016的推薦中,訓練的模型是預測下一個要點擊的item,那麼ground truth自然就只有一個,如果召回50個(因爲maxlen最大爲50,自然是召回的越多,命中率越高,這是不是有點作弊啊),50個其中有命中的,知道該命中的index即可
那麼該用戶的AP爲AP=1/(index+1)
所有用戶(個數num)則直接平均即是最後的MAP
如果按照這種觀點及Youtube的召回策略的話,那麼想要獲得paper中12%的最佳,每個用戶的命中要排在前10,這是很難的啊
難道我忽略了關鍵詞holdout ??
計算出來了,最後是MAP 0.02738781194642735
你不相信我也不信,這也太低了吧。想達到每個預測都在前10 是不可能的。
加了embedding維度,增加了神經元units後,果然MAP明顯提高了。
MAP 0.04145623609805117
如果用paper中的2048——1024——512——256效果估計會更好點,這都是4層了,目前是三層的。再說了只用了觀看記錄,也沒搜索特徵,沒有Example age 特徵(再說我也不知道怎麼設置這個特徵,有點懵逼)
但MAP沒多大提高了。。。
MAP 0.04185865920044647(召回100個)
MAP 0.041563724899291395(召回50個)
我覺得這個指標與paper已經很接近了,如果這個指標沒有理解錯誤的話。
item的特徵是很稀疏的,user的看起來還好,因爲item就是隻有item之間的關聯特徵。
加了一層1024,最後到128,效果反而沒多大差別,實話說,反而低了MAP
MAP 0.041369691113114775
又調了下參數,三層512-256-128
MAP似乎不變了吧:MAP 0.041820710448671826
這些參數/指標沒人會回到你的問題,羣裏也沒人告訴你,都是自己搞,人生艱難啊!那就多看點內容吧,防止理解偏或錯了。
其他待續吧。。。
For Video Recommendation in Deep learning QQ Group 277356808
For Speech, Image, Video in deep learning QQ Group 868373192
I'm here waiting for you