首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >布尔数据的相似度计算

布尔数据的相似度计算
EN

Data Science用户
提问于 2017-12-04 15:12:58
回答 1查看 1.9K关注 0票数 2

我试图实现简单的推荐系统,并试图理解不同的方法来实现我的目标。

我的数据集由用户和他们购买的物品组成。我有关于什么项目的用户购买的信息和这些项目的描述形式的标题。

起初,我想我可以使用基于用户的协作过滤方法,但我仍然坚持这样做。我不太清楚如何计算布尔数据的相似性。

例如,当我有这样的数据时

代码语言:javascript
复制
   1  2  3  4
A  0  1  0  1
B  0  1  0  1
C  1  0  1  1
D  0  1  0  0
E  0  0  1  1

我想向用户E推荐项目,那么在这种情况下我应该如何计算相似性呢?例如,我从python中的scikit学习模块中选择了余弦相似性。但我不太清楚什么应该被视为投入。据我所读,它应该只是两个用户计算相似的项目的向量。

例如,如果我想计算用户E和C之间的相似性,我的输入应该是什么?因为如果我只输入他们共有的值,那就没有意义了,对吧?因为输入将是1,1和1,1,对于这种相似性是1。

然后我试着输入整个向量,像这样:

代码语言:javascript
复制
from sklearn.metrics.pairwise import cosine_similarity
from numpy import array, reshape

c = array([1, 0, 1, 1])
e = array([0, 0, 1, 1])

result = cosine_similarity(c.reshape(1, -1), e.reshape(1, -1))

>>> result is 0.81649658

我认为这种方法更有意义,但基于我对这类推荐的了解,我不确定它是否可以接受。

EN

回答 1

Data Science用户

发布于 2017-12-04 15:56:30

您应该查看贾卡德指数,这是项集之间的事实上的相似性,其中集合是使用布尔向量表示的。在这个布尔向量中,每个坐标表示一个项,1表示该项存在,否则为0。举个例子:香蕉,橘子和苹果。设置香蕉,橙色将代表(1,1,0)。Jaccard指数是集合上集合的交集,因此对于一个集( 1,1),它的值是1。

余弦相似度是针对实数向量的,但余弦相似度是否优于Jaccard指数,反之亦然,这取决于应用程序。您应该对您的数据进行测试并验证哪个更好,有关讨论请参见下面的问题

票数 5
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/25377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档