- 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/
我有一个如下所示的数据框: Samples GENE GEN1 GEN2 GEN3 GEN4 GEN5 Sample1 21.0 160 110 3.90 2.62 16.5 Sa
我有以下映射 posts":{ "properties":{ "prop1": { "type": "nested", "properties": { "item
我有两个维度相等的矩阵(p 和 e),我想在同名的列之间建立斯 PIL 曼相关。我想在矩阵 (M) 中输出对相关性 我使用了 Psych 库中的 corr.test() 函数,这是我所做的: libr
我有两个维度相等的矩阵(p 和 e),我想在同名的列之间建立斯 PIL 曼相关。我想在矩阵 (M) 中输出对相关性 我使用了 Psych 库中的 corr.test() 函数,这是我所做的: libr
我正在尝试使用 estpost 和 community-contributed 命令将 Spearman 相关矩阵导出到 rtf 或 Excel 文件中 esttab。 但是,我收到以下错误: inv
我在网上找到了以下查询: SELECT company_title FROM companies WHERE company_title like '%gge%' GROUP BY compa
我是 Sphinx 和 Lucene 的重度用户。Sphinx 只需要一个数据库,对其进行索引。然后您调用 Sphinx 获取 ID。 但是,如果我想创建一个非常微型 的搜索引擎怎么办?就几行数据,几
是否有我要在下面描述的模式/算法的名称?... 假设您有一棵像这样的相关数据树: IDEs Visual Studio Visual Studio 2008 Visual Studio 2010 Ec
早上好。这是我的问题:我有几个文件,如下所示: 104 0.1697 12.3513214 15.9136214 112 -0.3146 12.0517303 14.8027303 122 0.271
在尝试将function_score与boost_mode: "sum"一起使用时(因为这样可以更轻松地跟踪不同的贡献),我想归一化查询相关性对整体文档分数的影响,但是为此,我需要知道它可以取什么值。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
X,Y 的 spearmanr(Spearman 相关性)输出为我提供以下信息: 相关性:0.54542821980327882 P 值:2.3569040685361066e-65 其中 len(X
我有一个 Pandas 数据框,它有一个七年时间范围内的日期时间索引和 10 种不同 Assets 的价格数据。我想运行 dataframe.corr 函数来评估 Assets 之间的关系,我的问题是
我有相同数据(公司)的 2 个信息源,我可以通过唯一 ID(契约(Contract)号)将它们连接在一起。第二个不同来源的存在是由于这两个来源是手动独立更新的。所以我在 2 个表中有一个 ID 和一个
我正在尝试在php中实现两组数据之间人员相关系数的计算。我只是想做可以在这个 url 上找到的移植 python 脚本 http://answers.oreilly.com/topic/1066-ho
所以我使用 PHP Symfony 和 Ongr-Elasticsearch 包来查询我的文档并返回匹配的对象。结果似乎按相关性/分数排序,但实际相关性/分数不包含在对象本身中。 这可能吗?我想将分数
我想使用滚动窗口计算 DataFrame 两列之间的 Spearman 和/或 Pearson 相关性。 我试过df['corr'] = df['col1'].rolling(P).corr(df['
我正在处理一个大型数据集。不过,我将从一个小示例开始,以说明我要实现的目标。 我有以下向量: season %group_by(season, round, team)%>%dplyr::mutate
我正在使用 OIDC 的混合身份验证流程。 options.Events.OnRedirectToIdentityProvider = redirectContext =>
我正在尝试查询我的产品ElasticSearch索引并创建一个script_score,但我一直收到错误Variable [relevancy] is not defined. 我尝试只用一个数字替换
我是一名优秀的程序员,十分优秀!