标签: average-precision

MAP@k 计算

k 处计算的平均精度(对于答案中的前 k 个元素),根据wikikaggle 处的 ml 指标和这个答案:关于(平均)平均精度的混淆应该计算为 k 处平均精度的平均值,其中平均值k 处的精度计算如下:

在此处输入图片说明

其中: P(i) 是列表中截止点 i 处的精度;rel(i) 是一个指标函数,如果排名 i 的项目是相关文档,则等于 1,否则为零。

分隔符min(k, number of relevant documents)的含义是答案中相关条目的最大可能数量。

这种理解是否正确?

MAP@k 是否总是小于为所有排名列表计算的 MAP?

我担心的是,这不是在许多作品中计算 MAP@k 的方式。

通常,分隔符不是min(k, number of relevant documents),而是top-k中相关文档的数量。这种方法将提供更高的 MAP@k 值。


HashNet:通过继续深度学习哈希”(ICCV 2017)

代码:https : //github.com/thuml/HashNet/blob/master/pytorch/src/test.py#L42-L51

    for i in range(query_num):
        label = validation_labels[i, :]
        label[label == 0] = -1
        idx = ids[:, i]
        imatch = np.sum(database_labels[idx[0:R], :] == …
Run Code Online (Sandbox Code Playgroud)

python matlab information-retrieval average-precision precision-recall

10
推荐指数
1
解决办法
4672
查看次数

关于(平均)平均精度的混淆

这个问题中,我询问了关于精确回忆曲线的说明.

特别是,我问我们是否必须考虑固定数量的排名来绘制曲线,或者我们可以合理地选择自己.根据答案,第二个是正确的.

然而,现在我对平均精度(AP)值存在很大疑问:AP用于在数值上估计给定特定查询的算法有多好.平均平均精度(MAP)是多个查询的平均精度.

我的疑问是:如果AP根据我们检索的对象数量而变化,那么我们可以将此参数调整为我们的优势,因此我们可以显示最佳AP值.例如,假设pr曲线精确地执行直到10个元素然后可怕,我们可以"欺骗"计算(M)AP值,仅考虑前10个元素.

我知道这听起来很混乱,但我在任何地方都没有找到任何相关信息.

information-retrieval mean content-based-retrieval average-precision

6
推荐指数
2
解决办法
1166
查看次数

平均精度 (mAP) 指标 keras

我正在训练一个 keras 模型,该模型将项目嵌入作为对并输出二进制分类(接近 word2vec)。我需要在每个 epoch 之后找到推荐系统模型的 mAP,以便能够进行比较。除了每次使用新嵌入从头开始计算之外,我真的找不到其他方法。如果有人有办法,我将不胜感激。

precision average-precision precision-recall keras recommender-systems

6
推荐指数
0
解决办法
1404
查看次数

高精度计算平均值的最佳策略

我正在比较计算随机数平均值的两种算法.

  • 第一种算法将所有数字相加并除以最后的项目数
  • 第二种算法计算每次迭代的平均值,并在接收到新数据时重用结果

我想这里没有革命性的东西,我不是数学家,所以我不能在这两个算法上加上名字.

这是我的代码:

#include <iostream>
#include <iomanip>
#include <cstdlib>

class Average1
{
public:
    Average1() : total( 0 ), count( 0 ) {}

    void add( double value )
    {
        total += value;
        count++;
    }

    double average()
    {
        return total/count;
    }

private:
    double total;
    size_t count;
};

class Average2
{
public:
    Average2() : av( 0 ), count( 0 ) {}

    void add( double value )
    {
        av = (av*count + value)/(count+1);
        count++;
    }

    double average()
    {
        return av;
    }

private: …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm average average-precision

4
推荐指数
1
解决办法
489
查看次数

解释方法:标签排名平均准确度得分

我是阵列编程的新手,发现很难解释sklearn.metrics label_ranking_average_precision_score函数。需要您的帮助以了解其计算方式,并感谢您学习Numpy数组编程的任何技巧。

通常,我知道精度是
((正数)/(正数+误数))

我问这个问题的原因是,我偶然发现了Kaggle音频标记竞赛,并发现这篇帖子说,当响应中有多个正确的标签时,他们正在使用LWRAP函数计算分数。我开始阅读以了解该分数是如何计算的,并发现难以解释。我的两个困难是
1)从文档解释Math函数,我不确定分数计算中如何使用排名
2)从代码解释Numpy数组操作
我正在读取的函数来自Google Collab文档,然后尝试阅读文档在sklearn,但无法正确理解。

一个样本计算的代码是

# Core calculation of label precisions for one test sample.

def _one_sample_positive_class_precisions(scores, truth):
  """Calculate precisions for each true class for a single sample.

  Args:
    scores: np.array of (num_classes,) giving the individual classifier scores.
    truth: np.array of (num_classes,) bools indicating which classes are true.

  Returns:
    pos_class_indices: np.array of indices of the true classes for this sample.
    pos_class_precisions: np.array of precisions corresponding to each of those
      classes.
  """ …
Run Code Online (Sandbox Code Playgroud)

python numpy scikit-learn average-precision multilabel-classification

4
推荐指数
1
解决办法
427
查看次数

N处平均精度的更快R实现

优秀的Metrics包提供了计算平均精度的功能: apk.

问题是,它基于for循环,而且速度很慢:

require('Metrics')
require('rbenchmark')
actual <- 1:20000
predicted <- c(1:20, 200:600, 900:1522, 14000:32955)
benchmark(replications=10,
          apk(5000, actual, predicted),
          columns= c("test", "replications", "elapsed", "relative"))

                          test replications elapsed relative
1 apk(5000, actual, predicted)           10   53.68        1
Run Code Online (Sandbox Code Playgroud)

我对如何对这个函数进行矢量化感到困惑,但我想知道是否有更好的方法在R中实现它.

information-retrieval r average-precision

2
推荐指数
1
解决办法
720
查看次数