按最大值或按总值标准化?

2024-01-08

我正在做一些涉及文档比较的工作。为此,我分析每个文档,并基本上计算某些关键字在每个文档中出现的次数。例如:

Document 1:                          Document 2:
    Book   -> 3                          Book   -> 9
    Work   -> 0                          Work   -> 2
    Dollar -> 5                          Dollar -> 1
    City   -> 18                         City   -> 6

因此,在计数过程之后,我将所有这些数字序列存储在一个向量中。该数字序列将代表每个文档的特征向量。

Document 1: [ 3,  0,  5, 18]
Document 2: [ 9,  2,  1,  6]

最后一步是将数据标准化在以下范围内[0 1]。但在这里我意识到这可以通过两种不同的方法来完成:

  1. 将每个数字序列除以重复总数
  2. 将每个数字序列除以最大重复次数

按照第一种方法,标准化的结果将是:

Document 1: [ 0.11538,  0.00000,  0.19231, 0.69231]   (divided by 26)
Document 2: [ 0.50000,  0.11111,  0.05556, 0.33333]   (divided by 18)

遵循第二种方法时,结果将是:

Document 1: [ 0.16667,  0.00000,  0.27778, 1.00000]   (divided by 18)
Document 2: [ 1.00000,  0.22222,  0.11111, 0.66667]   (divided by  9)

对于这个具体案例:

  • 这两种方法中哪一种会增强特征向量的表示和比较?
  • 结果会一样吗?
  • 这些方法中的任何一种在特定的相似性度量(欧几里得、余弦)下会更好地工作吗?

Notation

假设你有两个向量A and B, 你用x作为归一化常数A and y作为归一化常数B。由于您正在计算单词出现次数,我们可以假设x > 0 and y > 0.

余弦距离

对于如下所示的余弦距离,归一化常数将被抵消。很容易看出,你最终会得到一个常数1/(xy)在枚举器上,以及一个相同的常数1/(xy)在分母处。所以你可以取消1/(xy).

欧氏距离

对于欧几里得距离,情况并非如此。我在下面列出了一个例子,假设A and B是二维向量。 n 维向量只是其简单的扩展。A' and B'是归一化向量A and B分别。

比较非标准化版本dist(A,B)与规范化版本dist(A',B'),您可以看到:您选择的归一化常数(最大值或总和)决定了权重x1^2+x2^2, y1^2+y2^2和相互作用的术语。因此,不同的归一化常数会产生不同的距离。

特征向量

如果这是出于某种信息检索目的或主题提取,您尝试过吗TF-IDF http://en.wikipedia.org/wiki/Tf-idf?这可能是比纯粹计算术语出现次数更好的衡量标准。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按最大值或按总值标准化? 的相关文章

  • Scala 模式匹配引用

    当模式匹配案例类时 您实际上如何引用它所匹配的类 这是一个例子来说明我的意思 sealed trait Value case class A n Int extends Value v match case A x gt doSomethi
  • 隐式参数在 unapply 时不起作用。如何从提取器中隐藏普遍存在的参数?

    显然 提取器对象中的 unapply unapplySeq 不支持隐式参数 假设这里有一个有趣的参数 a 以及一个令人不安的普遍存在的参数 b 在提取 c 时最好将其隐藏起来 EDIT 看来我的 intellij scala plugin
  • 通过匹配模式过滤日志 - log4j

    我的 log4j xml 文件中有以下布局模式 d ISO8601 c p t x 9 5 4 RC12 m n 我想要的是 每当我收到包含消息的日志时process proc completed 应该跳过 我的意思是除了包含此消息的日志之
  • Ruby String#scan 相当于返回 MatchData

    正如问题标题中基本上所述 Ruby 字符串上是否有一种方法相当于字符串 扫描 http ruby doc org core String html method i scan但它不是只返回每个匹配的列表 而是返回一个数组MatchData是
  • 将关系 R 分解为 1NF 后最少存在多少张表?

    考虑具有以下属性类型的关系 R A B C D E F G 键总数 1 A 一组简单 或 原子 或 单值属性 B C 多值属性集 D E 复合属性集 F G 将关系 R 分解为 1NF 后 存在的表的最小数量是多少 A 3 B 2 C 4
  • Mathematica 的模式匹配优化不佳?

    我最近询问了为什么PatternTest引起了大量不必要的评估 PatternTest 未优化 https stackoverflow com questions 8484299 patterntest not optimized列昂尼德回
  • Haskell 错误:“非详尽模式”

    所以我有这个功能 当我尝试像这样使用它时 合并排序列表 1 1 1 1 它给了我一个错误 1 1 例外 SortFunctions hs 86 1 91 89 非详尽 函数 mergeSortedLists 中的模式 85 mergeSor
  • PostgreSQL 中的字符串匹配

    我需要在 PostgreSQL 8 4 中实现正则表达式 据我理解 匹配 似乎正则表达式匹配仅在 9 0 中可用 我的需求是 当我给出输入时14 1我需要得到这些结果 14 1 1 14 1 2 14 1 Z 但排除 14 1 1 1 14
  • 我在 Python 中查找重复循环的正则表达式模式有什么问题?

    我想匹配任何具有重复循环的字符串 就像这个数据一样 3333333333333333333333333333333333333333 1 digit cycle 3 1666666666666666666666666666666666666
  • PostgreSQL 对 string\varchar 的各种清理

    我必须通过以下方式清理一些 varchar 删除特殊字符 例如 来自封闭列表 我已经成功地通过大量使用replace regexp replace来做到这一点 但我正在寻找类似于SQL Server中的东西 删除以下数字但不删除相邻的数字含
  • Haskell / GHC - 是否有“警告不完整模式”的中缀标签/编译指示

    我正在寻找一个可以对特定的不完整模式发出警告的编译指示 它会使编译器失败并显示以下 假设的 代码 FAILIF incomplete patterns f Int gt Int f 0 0 我正在尝试使用 Arrows 编写一个 编译器 并
  • R- 将某些列从 0 标准化为 1,其值等于 0

    我最近开始使用 are 我想扩展我的数据矩阵 我在这里找到了一种方法在两点之间缩放系列 https stackoverflow com questions 5468280 scale a series between two points
  • 匹配没有周围字符列表的单词列表

    我有这个正则表达式 one common word or another 除非这两个单词相邻 否则它匹配得很好 One one s more word word common word or another word more anothe
  • 基于Java模式分割字符串

    您好 我有以下模式的日志文件 2014 03 06 03 21 45 432 ERROR mfs pool 3 thread 19 dispatcher StatusNotification Error processing notific
  • 在模式匹配期间防止移动语义

    我这里有一个愚蠢的例子 只是为了演示我在另一个库和模式匹配中遇到的问题 struct Person name String age i32 choice Choices derive Debug enum Choices Good Neut
  • Elixir:模式匹配对于元组和映射的工作方式不同

    在 Elixir 中 如果我尝试模式匹配以下两个元组 a 1 2 我收到匹配错误 但如果我对两张地图做同样的事情 x a x 1 y 2 它工作正常 并且a绑定到 1 我可以明白为什么匹配两个元组会出错 但为什么匹配映射不会出错 在第一个示
  • 对于神经网络来说,拥有正态分布的数据重要吗?

    因此 与数据相关的标准操作之一就是对其进行归一化 并将其标准化为均值为 0 标准差为 1 的正态分布数据 对吧 但是 如果数据不是正态分布怎么办 另外 所需的输出也必须呈正态分布吗 如果我希望我的前馈网络在两个类 1 和 1 之间进行分类
  • 匹配拉丁脚本中包含少于 10 个单词的两个字符串的最佳算法是什么

    我正在比较歌曲标题 使用拉丁字母 尽管并不总是 我的目标是一种算法 如果两个歌曲标题看起来相同 则给出高分 如果它们没有任何共同点 则给出很低的分数 现在我已经必须使用 Lucene 和 RAMDirectory 编写代码 Java 来编写
  • OpenCV 完美识别物体

    我有一个应用程序 我想一次跟踪 2 个在图片中相当小的对象 该应用程序应该在 Android 和 iPhone 上运行 因此算法应该是高效的 对于我的客户来说 如果我们提供一些模式以及附加到要跟踪的对象的软件 以获得易于识别的目标 那就完全
  • 逐对计算行相似度百分比并将其添加为新列

    我有一个像这个示例一样的日期框架 我想找到相似的行 不重复 并逐个计算相似度 我发现这个解决方案 https stackoverflow com questions 52650932 how to calculate the similar

随机推荐