C#中的主成分分析

时间:2010-05-22 09:30:09

标签: c#

我目前正在处理文本文件中的数据。我需要使用称为主成分分析的算法,所以我在文本文件中计算了多次在文本文件中出现的单词,例如

关系发生时间
帮助发生了6次 在3次之间发生 分析发生了4次 组件发生5次
目前发生了6次

因此,通过计算上述不同的单词,我需要形成m×n的矩阵。我正在使用C#。

1 个答案:

答案 0 :(得分:2)

有几点:

  1. PCA很简单。但是,在使用之前,您确实需要了解它。遗憾的是,它不像黑盒工具,就像聚类算法一样。

  2. 在协方差矩阵(即X'* X,其中X的每一行是文本文档)上执行PCA。您可以看到无法在内存中存储# of words by # of words matrix。因此对于文本数据,您不能直接使用PCA。您需要使用SVD,此技术称为latent semantic analysis。当数据居中时,PCA和SVD是相同的。实际上,数据居中不适用于文本数据,因为居中导致稀疏到密集。

  3. PCA和SVD都很简单,有几行Matlab代码。如果你有一个用于特征分解或SVD的线性代数库,那么只有几行C#代码。我注意到的困难部分是你需要了解它们。

  4. 分析文本文档的一种比较流行的方法是probabilistic latent semantic analysis。在不使用任何矩阵分解的情况下,这很容易理解且易于编码。当然,你还需要学习一些数学知识。