【问题标题】:Comparing Ranked List in Python比较 Python 中的排名列表
【发布时间】:2016-11-25 18:41:54
【问题描述】:

我有 50 种产品。对于每个产品,我想使用相似性度量来识别以下四个相关产品。

  • 1 最相关
  • 2 部分相关
  • 1 不相关

我想将我的模型生成的排名列表(预测)与领域专家指定的排名列表(ground truth)进行比较。

通过阅读,我发现我可以使用基于排名相关性的方法,例如 Kendall Tau/Spearmen 来比较排名列表。但是,我不确定这些方法是否合适,因为我的样本数量很少(4)。如果我错了,请纠正我。

另一种方法是使用Jaccard相似度(set intersection)来量化两个排序列表之间的相似度。然后,我可以从 setbased_list 中绘制直方图(见下文)

for index, row in evaluate.iterrows():
    d= row['Id']
    y_pred = [3,2,1,0]
    y_true = [row['A'],row['B'],row['C'],row['D']]
    sim = jaccard_similarity_score(y_true, y_pred)
    setbased_list.append(sim)
  1. 我解决上述问题的方法正确吗?

  2. 如果我想考虑列表中元素的位置(基于权重),我可以使用哪些其他方法?

【问题讨论】:

  • 您为什么要识别出一种相关的产品?
  • 这就像“控制”数据,以确保用户相应排名..

标签: python correlation ranking


【解决方案1】:

从您描述问题的方式来看,听起来您还不如为列表中的每个项目分配一个任意分数 - 例如与“培训”列表中排名相同的相同项目 3 分,相同项目但排名不同的项目 1 分,或类似的东西。

不过,我不清楚“不相关”项目的作用 - 其他 45 个项目是否都与目标项目同样“不相关”,如果是的话,你选择哪一个有关系吗?如果“不相关”项目出现在“相关”位置之一,也许您需要从分数中扣分?标准的非参数相关性度量可能无法捕捉到这种微妙之处。

如果出于某种原因使用基于统计的标准度量很重要,那么您最好在Cross Validated 上提问。

【讨论】:

  • 感谢 nekomatic,我会将问题发布到 Cross Validated。
猜你喜欢
  • 1970-01-01
  • 2018-06-03
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
相关资源
最近更新 更多