- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基于 tf-idf 矩阵计算皮尔逊相关系数以查看哪些项与其他项组合出现是否有意义?它在数学上是正确的吗?
我的输出是一个相关矩阵,每个单元格中的每个术语都有相关系数。
最佳答案
这取决于您对“与其他术语结合发生”的定义。为了澄清这一点,还有几点:
进行皮尔逊均值相关时,idf 无关紧要。同一术语的所有 tf 值将乘以相同的 idf 值,产生最终的 tf-idf。 PMC 相对于输入的缩放是不变的,因此这里取消了 idf。因此,您提出的想法中最重要的是 tf.如果您甚至不计算 idf,您可能会节省一些计算,但如果您这样做,则不会有太大影响。
现在关于 tf.让我们举一个例子来弄清楚你可能需要什么:
让我们说 TermA
出现在 Document1
经常和一点在 Document2
. TermB
另一方面出现在Document1
很少而且经常在 Document2
.你说这两个词是否一起出现?它们出现在同一个文档中,但频率不同。如果您使用 tf-idf 的 PMC,那么结果将是它们不会同时出现(因为频率不同)。
此时,您还应该注意到 PMC 的值从 -1 变为 1。 IE。你可以有同时出现(PMC=1)独立(PMC=0)的词和相反(PMC=-1)的词。这是否适合您正在建模的领域?如果没有,只需将 1 添加到 PMC。
另一种选择是使用余弦相似度,它与 PMC 非常相似,但具有一些不同的特性。此外,在其他一些情况下,您可能只对实际的共现感兴趣,而不关心频率。
可以这么说,所有这些方法都是“正确的”。更重要的问题是,这些方法中的哪一种最适合您正在建模的问题。在许多情况下,这无法从理论上确定,而只能通过尝试不同的替代方案并测试哪一种最适合您的问题域来确定。
编辑(关于下面评论的一些评论) :
余弦相似度确实有帮助,但在这种情况下你必须以不同的方式思考。您当然可以为文档中的术语生成词频向量,然后计算这些文档词频向量的余弦相似度。您指出正确,这将使您的帖子彼此相似。但这不是我的意思。如果您有完整的词频矩阵,您还可以生成向量,这些向量描述单个词条在每个文档中出现的频率。您还可以计算这些向量的余弦相似度。这将为您提供基于文档共现的术语的相似性。
这样想一下(但首先我们需要一些符号):
让 f_{i,j}
表示项i
的次数出现在文档j
(请注意,我在这里忽略了 idf,因为它会在处理条款而不是文档时取消)。也让F=(f_{i,j})_{i=1...N,j=1...M}
表示整个文档-术语矩阵(术语在列中,文档在行中)。然后最后我们会打电话|F|_c
矩阵 F
其中每个列都根据 l^2
归一化规范和 |F|_r
矩阵 F
其中每一行都根据 l^2
进行规范化规范。当然和往常一样 A^T
表示 A
的转置.在这种情况下,您将基于术语的所有文档之间的正常余弦距离为
(|F|_r)*(|F|_r)^T
MxM
描述文档相似度的矩阵。
(|F|_c)^T*(|F|_c)
NxN
基于文档中的共现描述术语相似度的矩阵。
termA
的可能性有多大。出现在文档中,即
termB
也出现在同一文档中。或者正式说
p(termB | termA)
哪里
p(termX)
表示
termX
的概率出现在文档中。那是完全不同的野兽,但计算起来也很简单:
1. Count the number of documents in which `termA` appears (call it num_termA)
2. Count the number of documents in which both `termA` and `termB` appear (call it num_termA_termB)
then p(termB | termA)=num_termA_termB/num_termA
p(termB | termA ) == p(termA | termB)
将不成立,因此这种共现度量根本无法用于通过 MDS 进行聚类,这很可能(没有双关语意图)。
关于correlation - 根据 tf-idf 值计算相关性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10212722/
我有一个单词列表 L1,还有像 B1、B2..、Bn 这样的候选列表,所有列表的长度都相同。但它们没有相同的元素。列表不包含重复元素。 L1 仅与 B1、B2...Bn 中的一个最相似。我可以应用哪种
我有两个按出现次数排序的单词列表 排序是通过计算在不同时间点采样的两个文件中的每个单词生成的。 我想计算 spearman 以查看在第二个文件中找到第一个文件的顺序。 例如: 文件 a:1) 是 2)
我正在尝试绘制一个巨大的相关系数矩阵,目前,我的图如下所示: 请注意,某些单元格缺少相关系数(暂时忽略绘图缺乏对称性,除非您也恰好知道为什么会出现这种情况)。我相信这些值实际上并没有缺失,只是太小而无
假设我有 2 个字符串: AACCCGGAAATTTGGAATTTTCCCCAAATACG CGATGATCGATGAATTTTAGCGGATACGATTC 我想知道应该将第二个字符串移动多少,以便它
我需要在java中克隆excel correl()函数,我发现apache math commons库在org.apache.commons.math.stat.correlation包中有一些函数,
我正在尝试使用 Python 查看天文光谱,并且我正在使用 numpy.correlate 尝试找到径向速度偏移。我正在将我拥有的每个光谱与一个模板光谱进行比较。我遇到的问题是,无论我使用哪个光谱,
假设我销售的商品是互补品。我正在尝试找出不同销售日期的商品销售之间的相关性。 (因为我认为 item01 在 d-day 的销量可能会影响 item02~99 在 d+30 的销量) datafram
假设我有一个类似于下面的数据框,我将如何获得 2 个特定列之间的相关性,然后按“ID”列分组?我相信 Pandas 'corr' 方法可以找到所有列之间的相关性。如果可能的话,我还想知道如何使用 .a
当它重定向到我的应用程序时,在身份服务器身份验证之后,它给出 异常(exception):关联失败。 位置不明 现在因为我正在使用SPA。这条路线绝对没有。但问题是我如何定义一个。我应该在那里做什么。
我正在调整 PerformanceAnalytic 的 chart.Correlation() 函数。 chart.Corr = function (R, histogram = TRUE, meth
基于 tf-idf 矩阵计算皮尔逊相关系数以查看哪些项与其他项组合出现是否有意义?它在数学上是正确的吗? 我的输出是一个相关矩阵,每个单元格中的每个术语都有相关系数。 -------term1 ter
我在数据集中有两个 char 变量。我想计算两者之间的典型相关性。我的意思是我想从两个分类变量创建一些虚拟变量,并以这种方式计算规范相关性。在查看 proc cancorr 之后,如果不首先手动将分类
我有 2 组 x,y 坐标,我正在尝试确定它们的相关系数。一种方法是分别计算 x 值和 y 值的相关系数。然后取这些单独相关系数的算术平均值来估计 x,y 对的相关系数是否公平? 最佳答案 采用个体相
这是我的数据框。 df store_1 store_2 store_3 store_4 0 banana banana
在 Oracle SQL 中,您可以轻松地根据相关子查询中的 NOT EXISTS 条件进行更新。这对于根据另一个查询或 ID 列表进行更新很有用。 子查询机制在 Postgres 中是不同的...我
我想选择 N 个条件匹配关联表的记录。 我目前正在尝试这样完成 select v.id, name from visitors v left join trackings t on t.visitor
这个问题在这里已经有了答案: How to find the correlation between a group of values in a pandas dataframe column (
Matlab 的互相关函数 xcorr(x,y,maxlags) 有一个选项 maxlag,它返回滞后范围内的互相关序列 [ -maxlags:maxlags]。 Numpy 的 numpy.corr
是否有包含反函数的库? 作为项目的一部分,我目前正在研究测向算法。我正在使用巴特利特相关性。在 Bartlett 相关性中,我需要将已经是 3 次矩阵乘法(包括 Hermitian 转置)的分子除以作
我正在使用以下代码对 data_1 和 data_2 进行自动关联: result = numpy.correlate(data_1, data_2, mode='full') 结果也是时间序列。我还
我是一名优秀的程序员,十分优秀!