逻辑数组的降维

数据挖掘 降维
2022-02-12 20:19:08

我在两个不同的时间点测量了 4 台设备。测量基本上由对应于相应位置的位值的 1 和 0 数组组成:

whos measurement1_dev1_time1

Name                         Size               Bytes  Class      Attributes

measurement1_dev1_time1      4096x8             32768  logical

我假设对于特定设备,测量时间 1 和 2 之间的变化是唯一的。但是,由于我在不同位置处理 32768 位,因此很难想象是否存在某种依赖关系。

由于位置的每一位都x可以被视为观察的一个维度,我认为使用 PCA 来减少维度的数量。

因此,对于 5 个设备中的每一个:

  1. 我随机抽样n测量点t1t2分开
  2. pca()我准备了一个数组作为m*n 列的输入(m< 32768;它是所有观察到的位的子集,因为原始数据对于 pca 可能太大)和 4 行(每个设备一行)。
  3. 在这个数组上A,我计算 pca:`[coeff score latent] = pca(zscore(A))```
  4. 然后我尝试使用以下方法将其可视化biplotbiplot(coeff(:,1:2), 'score', score(:,1:2))

然而,这给了我非常奇怪的结果。也许 PCA 不是解决这个问题的正确方法?我还修改了输入数据以不在逻辑位数组本身上执行 PCA。相反,我创建了一个向量,它保存原始测量数组中存在“1”的索引。这也会产生奇怪的结果。

由于我对 PCA 完全陌生,我想问您是否发现过程中存在缺陷,或者 PCA 是否不是我目标的正确方法,我最好寻找其他降维方法或聚类算法。

1个回答

标准 PCA 仅将您的数据视为真实值,因此并不能真正提供最佳的低秩近似值。存在为布尔数据类型设计的 PCA 版本。就我个人而言,我认为涵盖广义 PCA 整个广泛主题的最佳论文是广义低秩模型在第 5.2 节中,它们专门介绍了布尔 PCA。