【发布时间】:2014-01-22 02:42:09
【问题描述】:
我正在阅读 Matrix decompositions and latent semantic indexing(在线版 © 2009 剑桥大学)
我试图了解您如何减少矩阵中的维数。第 13 页上有一个示例,我正在尝试使用 Python's numpy 进行复制。
我们称原始出现矩阵“a”和三个SVD(奇异值分解)分解的矩阵“U”、“S”和“V”。
我遇到的麻烦是,在我将“S”中较小的奇异值归零后,当我使用 numpy 将“U”、“S”和“V”相乘时,答案与给出的不同在pdf中。底部 3 行并非全为零。有趣的是,当我将“S”和“V”相乘时,我得到了正确的答案。
这有点令人惊讶,但是将“S”和“V”相乘实际上是 Manning 和 Schutze 的《统计自然语言处理基础》一书所说的你必须做的事情。但这不是 pdf 在第 10 页中所说的你必须做的事情。
那么这里发生了什么?
【问题讨论】:
-
减少维数是一个常见的应用数学问题,所以如果你能用简单的英语得到答案,你可能会在某个数学或编程网站上得到更好的答案。我个人永远无法理解矩阵。
-
@hippietrail 看到 Russell 的链接后,我猜截断 SVD 是一种数学运算,因此它应该与数学堆栈交换相关。
-
这个问题似乎离题了,因为它是关于作为 NLP 的辅助遇到的数学问题。它应该移动到数学或编程 SE 站点之一。我已投票关闭,但我不确定将其迁移到哪个站点最好。
-
@mtanti:如果不是矩阵乘法/分解问题,这听起来像是一个调试问题。在 SO 上,我看到了一些关于不同工具的其他问题,它们为 SVD 提供了不同的结果。可悲的是,尽管我是一名前专业程序员和当前的业余语言学家,但我无法遵循该 PDF \-:我只是想为您提供最佳答案,无论它是否是这里的主题(-:跨度>
-
我对 @hippietrail 没有意见
标签: nlp linear-algebra svd latent-semantic-analysis