降维技术以最大限度地分离已知集群?

机器算法验证 聚类 主成分分析 降维 数据可视化
2022-03-30 13:40:08

所以假设我在 R^n 中有一堆数据点,其中 n 非常大(比如 50)。我知道这些数据分为 3 个集群,并且我知道每个数据点属于哪个集群。我想要做的就是在 2D 中可视化这些集群,以最大化我看到的可视集群间分离,目的是证明集群可以根据数据点在 R 中的位置轻松分离^n 一个人。

到目前为止,我一直在解决这个问题的方法是对数据点进行 PCA 转换,然后随机可视化成对的 PC,直到找到一个集群似乎完全分离的 PC。不过,这种方法似乎很特别,而且似乎应该有一种简单的方法来找到数据的 PCA 式旋转,而不是最大化整体方差,而是最大化集群间的分离。

有没有一种标准技术可以做到这一点?如果没有,关于如何创建这种转换的任何想法?

4个回答

我想到了两种你可能感兴趣的方法。第一种是利用已知的集群,被Goldberger 等人称为“邻域成分分析”

这个想法是你学习从高维空间到可视化空间的映射(例如仿射)。(例如)。如果使用 k-最近邻分类的变化,则通过最大化正确分类的平均数量来估计此映射。取得了一些令人印象深刻的结果:A:RnR2

葡萄酒、面孔和数字数据集上的 NCA

另一个是tSNE,它学习映射(例如)。此映射没有任何约束,但优化的损失(不是针对某些参数化,而是在本身中具有新点)是新空间反映了与原始空间相似的距离。类似的在这里相当复杂,它是基于假设空间中点的某些分布和相应的KL散度。A:RnR2R2

对于后者,您可以在给定的链接中找到 matlab 代码。这是 MNIST 数据集的可视化:

MNIST 上的 tSNE

“数据的 PCA 式旋转,不是最大化整体方差,而是最大化集群间分离”。判别分析正是这样一种技术。主成分使沿它的方差最大化。判别函数沿它最大化集群方差/池内集群方差之间的比率。

你可能想看看这篇论文:

G. Sanguinetti,聚类数据集的降维,IEEE Trans。模式分析和机器智能 (PAMI) 30(3), 535-540 (2008) (www)

它描述了线性判别分析的无监督版本,我已经看到了一些演示,它看起来像是一个非常有用的工具,可以放在一个工具箱中。

如果您已经知道每个样本属于哪些类,那么(正如 ttnphns 建议的那样)您想要线性判别分析,Andrew Webb 的统计模式识别书是这类事情的很好的参考书。

文章“PCA、PLS、MLR 和 CCA 的统一方法”(M Borga 等人)提供了关于包括 PCA 和 LDA 在内的各种线性投影方法的简洁描述。