【问题标题】:jaccard (or any similarity) index on rows of a data.frame in RR中data.frame行的jaccard(或任何相似性)索引
【发布时间】:2015-10-16 09:58:59
【问题描述】:

我希望你能帮助我解决我正在思考的问题。

我有一个包含三列的 data.frame:applcodipc。 该数据集有多行具有相同的appl,每行对应一个cod,而cod 又与一个ipc 相关联。后者可以是一个或多个值的列表。 applcod 是整数值。 一个例子

row    appl   cod         ipc

11  |  1206 | 3857183   | 16
12  |  1220 | 1063002   | 29
13  |  1299 | 46437     | c("26", "31", "33")
14  |  1317 | 685895    | c("10", "13", "14", "16")
15  |  1317 | 790606    | c("10", "13", "14", "16")

我需要一个数字来告诉我,对于appl 的每个值,ipc 中列表的组成有多相似。 我发现 Jaccard 指数是一个合适的数学指数,但仅适用于几个集合。我想为每个 appl 值的每个唯一对 ipc 计算 Jaccard 指数,然后计算平均值。

我找到了 set_similarity 函数用于两个集合之间的 Jaccard 索引计算。

但是,我不知道如何实际实施此策略 - 或任何其他策略。

如何正确实现类似

for (each `appl`) 
{ put all `ipc` in a list, 
 take all possible unique combinations, 
 apply `set_similarity` on them,
 take the average }

?

我检查了很多次已经回答了有关该主题的问题,但我无法成功应用它们。

谢谢

【问题讨论】:

    标签: r similarity


    【解决方案1】:

    对于一个简单的jaccard,使用count(两个ipc集合的交集=公共元素)并除以count(两个集合的并集=两个ipc集合的所有元素)

    这给出了一个局部解决方案,这意味着测量两个给定集合之间的相似性。但是如果你想计算一个全局解决方案,你可以在全局空间中将每个苹果与另一个苹果进行比较,那么你应该首先为每个主题(例如苹果)收集所有可能的 ipc 代码,然后将其用作上述 jaccard 的分母计算。

    通过将每个 ipc 视为直方图,然后通过不同函数之一(地球移动器距离或 Jensen-Shannon 熵距离等)计算直方图距离,也可以解决每个项目上具有频率的更复杂的场景

    为此,假设两个 ipc 集合都是相似项目的集合,其中任何一个集合中每个不存在的项目的频率为 0

    【讨论】:

      猜你喜欢
      • 2011-10-05
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多