在分类任务中,不知道是不是多标签分类,看完本文就知道了。
【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