问题标签 [cosine-similarity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
22695 浏览

python - Python pandas:查找两列的余弦相似度

假设我在 python pandas.DataFrame 中有两列:

获取这两列的余弦相似度的最佳方法是什么?

0 投票
1 回答
1556 浏览

matrix - 两个不同矩阵的特征向量的余弦相似度

找出两个非常大的矩阵的特征向量的余弦相似度来比较它们的相似度是否有效?

我有两个非常大的矩阵 A 和 B。我发现:

-> 协方差矩阵 C A和 C B

-> C A和 C B的前 20 个特征向量,

-> 前 20 个特征向量之间的余弦相似度。

根据余弦值得出矩阵 A 和 B 相似/不同的结论是否正确?

0 投票
1 回答
1033 浏览

python - 余弦相似度python问题

嗨,我正在尝试计算我的查询与我用 python 中的信息检索程序返回的文档之间的余弦相似度。

对于余弦相似度,我使用这个实现:

我在这个网站上找到了这个解决方案,但我遇到了一些问题。I tf*idf 权重和每个文档的向量,这是文档向量和查询向量的示例:

好的,所以问题是有时我做余弦相似度,结果大于1,这怎么可能?余弦不能大于1?我的推理正确吗?在这种情况下做余弦相似度是否正确?请帮助我,谢谢

0 投票
1 回答
366 浏览

statistics - 我如何在这个用例中使用余弦相似度?

如果我有一个查询向量 A 和一个项目向量 B,如果有人可以指导我如何对向量进行加权/标准化(相同的策略),那就太好了。向量 A 将具有以下组件(property1(二进制)、property2(二进制)、property 3(从范围 0 到 50 的 int)、property4(从范围(0 到 10)

向量 B 将具有相同的属性

我知道使用余弦相似度的这两个向量之间的角度会给我两个向量之间的距离。我想根据相似性创建推荐。

但是我不清楚在这种情况下如何规范化属性和/或向量,因为它是 binary+binary_int range +int range。另外,如果我想赋予一个属性比另一个更高的权重,我该怎么做。我有什么选择。

我在文档中找到了在线余弦相似度的示例,但在这种情况下,向量 A 和 B 不是文档,所以在这种情况下我没有使用 TF-idf。

请指教,

谢谢

0 投票
1 回答
3846 浏览

neo4j - 余弦相似度 - 作为推荐引擎的缺点?

我已经看到在 K-Nearest Neighbor 算法中使用余弦相似度来根据用户偏好生成推荐。在这些模型中,给定产品的用户评分被视为向量,然后两个用户之间的相似度由两个向量之间的余弦相似度确定。(例如http://www.neo4j.org/graphgist?8173017

我的问题是: 任何人都可以解释使用余弦相似度的推荐引擎如何考虑并行用户偏好吗?在我看来,两个用户可以具有完全极性的评分偏好,但如果他们具有平行(但不同)的偏好,则生成的余弦相似度为 1。例如,如果一个用户将 5 部电影评为 1 颗星中的 1 颗星,而另一位用户将相同的 5 部电影评为 10 颗星中的 10 颗星,则他们的余弦相似度将为 1(在我看来,这似乎是一个不准确的衡量标准用户相似性)。

余弦相似度

问题示例:如果我们正在测量两个用户的用户偏好,并且我们正在测量他们对 3 个产品的偏好,我们可以将他们的偏好存储为两个向量:

a =(1,1,1) 和 b=(10,10,10)

然后我们可以使用余弦相似度来衡量它们彼此之间的相似程度。但在这种情况下,它们的余弦相似度将为 1,即使它们代表了截然相反的用户偏好。

0 投票
1 回答
821 浏览

vector - 推荐引擎:余弦相似度与测量每个向量分量之间的差异百分比

假设我有一个用户数据库,他们以 1-5 的等级对不同的产品进行评分。我们的推荐引擎根据高度相似的其他用户的偏好向用户推荐产品。我寻找相似用户的第一种方法是使用余弦相似度,并将用户评分视为向量分量。这种方法的主要问题是它只测量矢量角度而没有考虑评级规模或幅度。

我的问题是: 有人可以向我解释为什么余弦相似度比简单地测量两个向量(用户)的向量分量之间的百分比差异更适合判断用户相似度吗?

例如,为什么不这样做:

而不是余弦相似度:

0 投票
0 回答
163 浏览

ruby - 在 Sphinx 中计算文档相似度矩阵?

Sphinx 是否提供了一种预先计算文档相似度矩阵的方法?我看过 Sphinx/Solr/Lucene;似乎 Lucene 能够使用 Term Vectors Computing Document Similarity with Term Vectors间接地做到这一点。

目前我正在使用tf-idf-similarity gem来进行这些计算,但是随着数据集的增长,它的速度非常慢;类似 On^(n-1!)。

目前正试图找到一个更快的替代方案。Lucene 似乎是一个潜在的解决方案,但它在 Ruby 社区中没有那么多的支持,所以如果 Sphinx 有一个很好的方法来做到这一点,那将是理想的。

只是为了澄清;我没有尝试进行实时搜索相似度匹配,这似乎是 Lucene 和 Sphinx 最常见的用例,我正在尝试预先计算一个相似度矩阵,该矩阵将在所有文档与数据集之间创建相似度。这随后将用于不同类型用户分析的数据可视化。

还有任何有这方面经验的人我都对基准感到好奇。它在处理时间方面的外观以及您参考文档数量和文档大小平均值使用了多少计算能力和/或并行化。

目前,我处理大约 4000 份文件大约需要 40 分钟,处理 6400 条记录大约需要 2 小时。在此处提供 2 种不同的大小和时间以指示增长扩展,因此您可以看到对于非常大的数据集这将变得多么缓慢。

0 投票
1 回答
956 浏览

nlp - 使用潜在语义分析来衡量段落相似度

我目前正在开发一个程序来根据其语义(含义)比较两段文本。我知道有诸如 lingpipe 之类的库提供了比较字符串距离的有用方法,但是我听说 LSA 是测量文本相似度的最佳方法。

我只是对使用 LSA 来测量文本相似性感到困惑。我知道这个过程是,使用 LSA,

我只是想知道...

A. 在 SVD 中,矩阵被缩减为 3 个更小的矩阵。那么这些较小的矩阵中的哪一个用于余弦距离测量?

B. 余弦距离通常应用于向量。因此,在将它们应用于矩阵的情况下,我假设迭代矩阵并在每 2 个向量之间测量余弦距离。然后假设所有这些距离的平均值是这两个矩阵之间的最终余弦距离?

我知道这是一个非常小众的话题,但我希望对这两个问题有所了解。谢谢

0 投票
1 回答
908 浏览

python - 使用 scikit-learn 预测有趣的文章

我正在尝试构建一种算法,能够根据我以前喜欢的文章预测我是否会喜欢一篇文章。

例子:

  • 我读了 50 篇文章,我喜欢 10 篇。我告诉我的程序我喜欢它们。
  • 然后有 20 篇新文章来了。我的程序必须根据我之前喜欢的 10 篇文章为每篇新文章提供一个“喜欢百分比”。

我在这里找到了线索: Python: tf-idf-cosine: to find document similarity

然后,将数据集的第一个文档与数据集中的其他文档进行比较:

对于我的情况,我想我会做的是连接我的 10 篇文章的文本,运行 TfidfVectorizer,然后将新的大向量与每篇新文章进行比较。

但我想知道如何进行比较:

  • 大向量(10 篇文章)与小向量相比或
  • 小个子和大个子的比较

我不知道你是否明白我的意思,但在第一种情况下,大向量中 90% 的单词不会出现在小向量中。

所以我的问题是:余弦相似度是如何计算的?您认为我的项目有更好的方法吗?

0 投票
1 回答
1254 浏览

mapreduce - 使用 MapReduce 计算余弦相似度

我正在尝试使用 MapReduce 的余弦相似度进行基于项目的推荐。

这是输入集。

如何使用此输入数据进行设计?

要使用余弦相似度,我猜输入应该如下所示,

但是如何使用 MapReduce 比较每一行?

请帮忙。我已经厌倦了这个像一个星期..