【发布时间】:2020-09-20 05:09:57
【问题描述】:
我有一个如下所示的数据集:
它显示了哪家商店出售了哪本书。
df <- tribble(
~shop, ~book_id,
"A", 1,
"B", 1,
"C", 2,
"D", 3,
"E", 3,
"A", 3,
"B", 4,
"C", 5,
"D", 1,
)
在数据集中,
- 店铺A卖1、3
- 店铺B卖1、4
- 店铺C卖2、5
- 店铺D卖3、1
- 店铺E只卖3个
所以现在,我想在这里计算 Jaccard 指数。例如,我们以 shop A 和 shop B 为例。 A 和 B 出售 三本 不同的书(书 1、书 3、书 4)。但是,两家商店只出售 一种 产品(这是产品 1)。所以,这里的Jaccard index应该是33.3% (1/3)。
这是所需数据的示例:
df <- tribble(
~shop_1, ~shop_2, ~similarity,
"A", "B", 33.3,
"B", "A", 33.33,
"A", "C", 0,
"C", "A", 0,
"A", "D", 100,
"D", "A", 100,
"A", "E", 50,
"E", "A", 50,
)
非常感谢任何 cmets/协助!提前致谢。
【问题讨论】:
-
这个问题是关于如何进行比较的数学和/或理论。为此,我建议Cross Validated 或Data Science,但SO 不是问如何做到这一点的地方。如果你对一个你已经知道的函数有问题,那是一回事,但不是这个。
-
感谢您的评论@r2evans。我想有人可能知道一个 R 包来做这个比较。这就是为什么我想写一个帖子来获得建议。如果你能暂时放下它,我会很高兴。
-
一些问题 (1) 对于这个问题,ID 和 Type 之间的区别重要吗?例如,如果 A 店卖 1X,B 店卖 1Y,是否应该算作有些相似,而完全匹配(1X 到 1X)会更相似?您的文字说“基于
book_id的商店之间的相似性”,这表明type与这个问题无关。如果是这种情况,我建议从您的示例数据中删除type。 (2) 我们需要更多关于“相似性”的细节——你在这个度量中寻找什么。一些值得思考的例子...... -
我明白,但也请注意 StackOverflow 明确尝试不成为推荐引擎,根据其 off-topic 的列表,包括 “询问我们推荐或查找书籍、工具、软件库、教程”.
-
(a) 两家书店售出的图书数量如何?这确实是一个数据操作问题。那会做你想要的吗?为什么或者为什么不? (b) 或者可能是百分比重叠 - 商店 B 销售的商店 A 书籍的百分比是多少? (c) 是否需要对称? - 也就是说,每对一个分数?如果 A 店卖 5 本书,B 店卖 50 本书,包括 A 卖的所有书,你想要 A 和 B 之间的相似度一个分数,或者 A,B 得一分,B,A 得不同的分数?
标签: r machine-learning dplyr statistics