问题标签 [average-precision]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
machine-learning - Google Auto ML , 平均精度
我们使用 auto ml 进行多标签文本分类。他们使用平均精度作为度量(精度召回曲线下的面积),但他们没有提到它是微观还是宏观或样本。有人知道他们如何计算谷歌汽车毫升中的平均精度吗?
keras - 平均平均精度 (mAP) 度量 keras
我正在训练一个 keras 模型,该模型将项目嵌入成对并输出二进制分类(接近 word2vec)。我需要在每个 epoch 之后为推荐系统找到模型的 mAP,以便能够进行比较。除了每次使用新嵌入从头开始计算之外,我真的找不到其他方法。如果有人有办法,我将不胜感激。
python - MAP@k 计算
在k处计算的平均精度(对于答案中的前 k 个元素),根据wiki,在 kaggle 的 ml 指标,以及这个答案:关于 (Mean) Average Precision 的混淆应该计算为 k 处的平均精度的平均值,其中平均值k 处的精度计算为:
其中: P(i) 是列表中截止 i 处的精度;rel(i) 是一个指示函数,如果排名 i 的项目是相关文档,则等于 1,否则为零。
分隔符min(k, number of relevant documents)
的含义是答案中相关条目的最大可能数量。
这种理解正确吗?
MAP@k 是否总是小于为所有排名列表计算的 MAP?
我担心的是,这不是 MAP@k 在许多作品中的计算方式。
通常,分隔符不是,而是top-kmin(k, number of relevant documents)
中相关文档的数量。这种方法将给出更高的 MAP@k 值。
HashNet:通过持续进行深度学习散列”(ICCV 2017)
代码: https ://github.com/thuml/HashNet/blob/master/pytorch/src/test.py#L42-L51
whererelevant_num
不是min(k, number of relevant documents)
,而是结果中相关文档的数量,与相关文档的总数或k不同。
我读错代码了吗?
代码:https ://github.com/caoyue10/cvpr17-dvsq/blob/master/util.py#L155-L178
其中 除数 是rel
,计算为np.sum(imatch)
, 其中imatch
是一个二进制向量,指示条目是否相关。问题是它只需要 first R
:imatch = np.sum(database_labels[idx[0: self.R], :] == label, 1) > 0
。所以np.sum(imatch)
会在返回的 size 列表中给出相关条目的数量R
,但不会min(R, number of relevant entries)
。请注意,R
论文中使用的值小于数据库中的条目数。
用于快速图像检索的二进制哈希码的深度学习 (CVPR 2015)
代码:https ://github.com/kevinlin311tw/caffe-cvprw15/blob/master/analysis/precision.m#L30-L55
这里的分隔符是sum(buffer_yes)
返回的大小为k的列表中的相关文档的数量的列表中的相关文档的数量,而不是min(k, number of relevant documents)
。
代码:https ://github.com/kevinlin311tw/Caffe-DeepBinaryCode/blob/master/analysis/precision.m
代码与上一篇论文中的相同。
使用无监督深度神经网络学习紧凑二进制描述符 (CVPR 2016)
相同的代码:https ://github.com/kevinlin311tw/cvpr16-deepbit/blob/master/analysis/precision.m#L32-L55
我错过了什么吗?上述论文中的代码是否正确?为什么它与https://github.com/benhamner/Metrics/blob/master/Python/ml_metrics/average_precision.py#L25-L39不一致?
更新
我发现了这个已关闭的问题,指的是同样的问题:https ://github.com/thuml/HashNet/issues/2
索赔以下索赔正确吗?
AP是一个排名指标。如果排名列表中的前 2 个检索是相关的(并且只有前 2 个),则 AP 为 100%。你说的是召回率,在这种情况下确实是 0.2%。
据我了解,如果我们将 AP 视为 PR 曲线下的面积,则上述说法是不正确的。
PS我怀疑这是否应该去Cross Validated或StackOverflow。如果您认为最好将其放置在交叉验证中,我不介意。我的理由是,这不是一个理论问题,而是参考实际代码的实现问题。
python - 如何解释:标签排名平均精度分数
我是数组编程的新手,发现很难解释 sklearn.metrics label_ranking_average_precision_score 函数。需要您的帮助来理解它的计算方式,并感谢任何学习 Numpy 数组编程的技巧。
一般来说,我知道精度是
((True Positive) / (True Positive + False Positive))
我之所以问这个问题是因为我偶然发现了 Kaggle Competition for Audio Tagging 并看到了这篇文章,说当响应中有多个正确标签时,他们正在使用 LWRAP 函数来计算分数。我开始阅读以了解该分数是如何计算的,但发现很难解释。我的两个困难是
1)从文档中解释 Math 函数,我不确定如何在分数计算中使用排名
2)从代码中解释 Numpy 数组操作
我正在阅读的函数来自Google Collab 文档,然后我尝试阅读文档在sklearn但无法正确理解。
一个样本计算的代码是
mask - 来自 Mask R-CNN utils.py 的 mAP 和来自 (MS)COCO 的 mAP 有什么区别?
我用自己的数据训练了我的 Mask R-CNN 网络,我将其转换为 COCO Style 用于我的论文,现在我想评估我的结果。我找到了两种方法来做到这一点。一种方法是来自 COCO 本身的评估。Mask R-CNN 本身在他们的 coco.py 文件中展示了如何使用 COCO Metric 进行评估: https ://github.com/matterport/Mask_RCNN/blob/master/samples/coco/coco.py
我基本上使用第evaluate_coco(...)
342 行中的函数。结果,我从 COCO 指标中获得了不同指标的平均精度和平均召回率的结果,请参见下图。对于参数 eval_type 我使用eval_type="segm"
.
对我来说,mAP 很有趣。我知道 mAP50 使用 0.5 作为 IuO(联合交叉点),它们的标准 mAP 是从 IuO = 0.5 到 0.95,步长为 0.05。
第二种方法来自 Mask R-CNN 本身在他们的 utils.py 中: https ://github.com/matterport/Mask_RCNN/blob/master/mrcnn/utils.py
函数的名称compute_ap(...)
在第 715 行,上面写着 IoU 是 0.5。该函数返回一个 mAP 值。
这就提出了compute_ap()
评估什么类型的问题。使用 COCO,您可以在“bbox”和“segm”之间进行选择。
我还想知道compute_ap(...)
函数的 mAP 值和 COCO 的 mAP50 之间的区别,因为使用相同的数据我得到不同的结果。不幸的是我现在不能上传更好的图片,因为我只能在周一到周五去我的大学,周五我很匆忙,没有检查就拍照,但是所有 AP 的平均值compute_ap()
是 0.91,我我很确定 COCO 的 AP50 是 0.81。
是不是因为maxDets=100这个参数?: 了解COCO评价“最大检测数” 我的图片只有4个类别,每张图片最多4个实例。
还是计算mAP的方式不同?
编辑:现在我对“Segm”类型和“BBox”类型的整个 COCO 度量有一个更好的图像,并将它与来自的结果进行compute_ap()
比较,即“mAP:0,41416 ...”顺便说一句,如果有COCO 结果中的“-1”,这是否意味着该类型没有?
excel - VBA(Excel)平均更精确,工作表函数或逐步
我写了一个宏,作为一个小任务,它还计算了大约 39000 个不同值的平均值。我注意到使用 WorksheetFunction.Average 并“逐步”计算平均值会产生不同的结果,但仅在小数点后的第 15 位。通过“逐步”计算,我的意思是将每个值加到一个 total_sum 变量中,计算另一个变量中值的数量,然后将前者除以后者。小数点后的第 15 位可能被认为可以忽略不计,但我仍然觉得它令人不安。这两个值不应该完全相同吗?它们是当我使用较少的值并且宏可能应用于远远超过 39000 (100k+) 的值时,我担心错误可能会增加。
所以我的问题是:什么可能导致差异,更重要的是哪种方法更精确?
我尝试将“逐步”计算中的所有变量声明为 Variant,以避免在任何这些步骤中使用错误的数据类型。
非常感谢您的帮助!
python - 使用随机森林时sklearn平均精度分数的参数
我一直在尝试摆弄 sklearn 指标,尤其是 average_precision_score。但是,我只能在 sklearn 文档中找到一个计算 average_precision_score 的示例,并且也可以使用 SVM。下面是代码片段以及作为参考的文档链接:
文档 - Precision Recall Sklearn 和代码参考
现在我的问题是在上面的例子中,y_score是来自 decision_function 的输出(它预测样本的置信度分数),而y_test是类。考虑到 RandomForests 没有与 SVM 一样的 decision_function 方法,如何计算y_score?
我已经尝试并看到人们使用 predict(self, X)(Predict class for X) 和 predict_proba(self, X)(Predict class probabilities for X) 方法来计算 average_precision_score。使用这两种方法,我的结果非常不同。使用 predict(self, X) 我得到0.74作为 average_precision_score 并使用 predict_proba 我得到0.94。我的 y_test 是具有值 (1, 0) 的类标签。我有点困惑什么是正确的。何时使用 predict 与 predict_proba,以及为什么它们会产生如此不同的平均精度分数。任何帮助将不胜感激。
machine-learning - 如何计算整个数据集的 mAP(平均精度)?
我是计算机视觉的新手,我有一个简单的问题,在网上找不到任何答案。我正在使用 Matterport 的 mask rcnn 实现对一些图像执行二进制分类,并且我有一些额外的代码行来计算每个图像的 mAP。现在我想知道,如果我可以将每个图像计算的 mAP 相加,然后除以该数字以获得整个数据集的 mAP,如果不能,我该如何计算整体 mAP?(最好使用 mask rcnn 模型的实用程序)