【问题标题】:Scalability of Latent Semantic Analysis in WEKAWEKA 中潜在语义分析的可扩展性
【发布时间】:2014-05-28 20:50:08
【问题描述】:

我正在使用 Weka 进行文档分类研究。我需要设置一个基线,我将在该基线上表明我的贡献改进了分类。但是,在 Weka API 中使用默认的潜在语义分析会导致 OutOfMemory 错误。

执行一些预处理后,我的数据集包含 9,603 个实例中使用的 25,765 个属性。这是针对训练集的,对于测试集,我有相同数量的类和普通属性,但这里我有 3,299 个。

我有 8GB 的​​内存并且已经将 Java 堆大小设置为 4Gb,但我仍然收到 OutOfMemory 错误。这是错误消息:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at weka.core.matrix.Matrix.getArrayCopy(Matrix.java:301)
at weka.core.matrix.SingularValueDecomposition.<init>(SingularValueDecomposition.java:76)
at weka.core.matrix.Matrix.svd(Matrix.java:913)
at weka.attributeSelection.LatentSemanticAnalysis.buildAttributeConstructor(LatentSemanticAnalysis.java:511)
at weka.attributeSelection.LatentSemanticAnalysis.buildEvaluator(LatentSemanticAnalysis.java:416)
at weka.attributeSelection.AttributeSelection.SelectAttributes(AttributeSelection.java:596)
at weka.filters.supervised.attribute.AttributeSelection.batchFinished(AttributeSelection.java:455)
at weka.filters.Filter.useFilter(Filter.java:682)
at test.main(test.java:44)

我已经使用较小的数据集测试了我的代码,并且一切正常,因此这不是与代码相关的问题。有人可以解释我如何扩大 LSA 以满足我的要求吗?或者是否有其他类似的流程可以应用,但更具可扩展性?

【问题讨论】:

  • 如果你没有绑定到 Weka,gensim 有一个非常可靠/可扩展的 LSA 实现。
  • @RobNeuhaus 感谢您的意见,但不幸的是我与 WEKA 绑定了

标签: machine-learning nlp artificial-intelligence weka


【解决方案1】:

您不会喜欢这个答案,但 WEKA 无法处理。无论如何,该实现都使用完整的 SVD。因此,如果您有超过几千个数据点,仅执行完整的 SVD 将花费大量时间。

更不用说 WEKA 使用的内存比一般所需的要多得多。

除此之外,Weka 创建了一个密集矩阵来执行 SVD。您可能正在将它用于稀疏数据,这将破坏您将 Weka 用于 LSA 的任何希望。

事实上,您将必须使用 Weka 以外的其他工具来完成 LSA。

【讨论】:

  • 确实,我不喜欢这个答案,但它回答了我的问题!谢谢
猜你喜欢
  • 2019-02-11
  • 2011-10-26
  • 1970-01-01
  • 2014-10-08
  • 2017-08-05
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多