如何从稀疏矩阵中提取有意义的因子?

机器算法验证 r 主成分分析 因子分析 矩阵分解
2022-04-03 11:02:10

我有兴趣找到一些实用的(并且相当被接受的)技术来寻找稀疏矩阵的潜在因素。

具体来说,我有一个非常大的稀疏矩阵,其单元格似乎是从近似几何分布中填充的。在其自然形式中,矩阵是正方形的。单元格中的值表示在对角线上的情况 1 下和对角线下的情况 2 下的项目 x 项目共现。如有必要,我可以将矩阵子集为特别有趣的项目,以使其成为矩形。我相信这种结构背后有一些有意义的因素。但是我的理解是,因为矩阵是稀疏的,因子分析不是一种合适的方法。我可以采取什么方法使我最有可能在数据中找到可解释的模式?

我看到还有另一个问题要求参考 PCA 的稀疏变体,但我想我正在寻找更类似于倾斜旋转因子解决方案的东西。我愿意深入研究建议的阅读材料,但我之前在因子分析(和相关技术)方面的经验有限,我更喜欢一个相对简单的答案(带有 R 代码的答案更好)。

4个回答

我可能会建议非负矩阵分解。Lee 和 Seung 的迭代算法易于实现,并且应该适用于稀疏矩阵(尽管它涉及 Hadamard 产品,一些稀疏矩阵包可能不支持。)。

人们必须小心稀疏这个词的含义。您的矩阵包含许多零,其中一个可能以稀疏的方式表示这样的矩阵(以节省存储空间)。但由于这些数字表示同时出现,这些零仍然被认为是信息性的(它们没有丢失;它们在结构上不是零),因此在对矩阵的内容进行建模时应该考虑到这些零。许多零点和偏度(近似几何)建议使用双线性模型的广义形式(参见 de Falguerolles/Gabriel:广义线性双线性模型)。R-package gnm 支持这种类型的模型。您所指的 PCA/SVD 的稀疏变体与阶乘表示的 L1 正则化有关,因此估计的载荷以稀疏的形式出现(许多零)。

我在 NLP 中的稀疏矩阵遇到了同样的问题,我们所做的是选择对分类行更有用的列(这为识别结果提供了更多信息),如果你愿意,我可以更详细地向你解释但这真的很简单,您可以弄清楚。但是您的问题似乎不是分类问题,实际上我对您在对角线上方和对角线下方所说的话感到有些困惑。但我在想你可以使用Apriori数据挖掘算法来发现任意数量的项目之间更重要的联盟。

我建议您查看 Leng 和 Wang 在 JCGS 中的 2009 年论文:http://pubs.amstat.org/toc/jcgs/18/1 如果 这是您想要的,作者在补充材料中提供了 R 代码。