为什么不将 t-SNE 用作聚类或分类的降维技术?

机器算法验证 分类 聚类 主成分分析 降维 特纳
2022-01-24 14:49:46

在最近的一项任务中,我们被告知在 MNIST 数字上使用 PCA 将维度从 64(8 x 8 图像)减少到 2。然后我们必须使用高斯混合模型对数字进行聚类。仅使用 2 个主成分的 PCA 不会产生不同的集群,因此该模型无法产生有用的分组。

然而,使用具有 2 个分量的 t-SNE,聚类分离得更好。当应用于 t-SNE 分量时,高斯混合模型会产生更多不同的簇。

具有 2 个分量的 PCA 和具有 2 个分量的 t-SNE 的差异可以在以下一对图像中看到,其中转换已应用于 MNIST 数据集。

MNIST 上的 PCA

MNIST 上的 t-SNE

我已经读到 t-SNE 仅用于高维数据的可视化,例如在这个答案中,但鉴于它产生的不同集群,为什么它不用作然后用于分类模型或作为降维技术一个独立的聚类方法?

3个回答

分类模型中不使用 -SNE的主要原因是它没有从原始空间学习一个函数到新的(较低的)维度。因此,当我们尝试对新的/看不见的数据使用我们的分类器时,我们将无法根据之前的 -SNE 结果映射/预处理这些新数据。tt

有工作在训练深度神经网络以逼近 -SNE 结果(例如,“参数” -SN​​E论文),但这项工作已被(深度)自动编码器的存在部分取代自动编码器开始被用作分类器(尤其是 DNN)的输入/预处理器,正是因为它们在训练中获得了非常好的性能,并且可以自然地泛化到新数据。tt

t如果我们使用基于非距离的聚类技术,如 FMM(有限混合模型)或DBSCAN基于密度的模型),则可能会 -SNE 正如您正确指出的那样,在这种情况下, -SNE 输出非常有用。这些用例中的问题是,有些人可能会尝试读取集群位置,而不仅仅是集群成员。随着全局距离的丢失,从集群放置中得出结论可能会导致错误的见解。请注意,如果不能说出它们远非如此,仅仅说:“嘿,我们发现所有的s 簇在一起”并没有太大的价值。如果我们只是想找到t11's 我们不妨一开始就使用分类(这让我们回到了使用自动编码器)。

t-SNE 不保留距离,但它基本上估计概率分布。理论上,t-SNE 算法将输入映射到 2 或 3 维的映射空间。假设输入空间为高斯分布,映射空间为 t 分布。使用的损失函数是使用梯度下降最小化的两个分布之间的 KL Divergence。

根据 t-SNE 的合著者 Laurens van der Maaten 的说法

t-SNE 不保留距离而是保留概率,因此在高维和低维中测量欧几里得距离之间的一些误差是没有用的。

参考:

https://lvdmaaten.github.io/tsne/

https://www.oreilly.com/learning/an-illustrated-introduction-to-the-t-sne-algorithm

作为一般性陈述:给定一个足够强大(/合适)的分类器或聚类器,永远不会应用任何降维。

降维会丢失信息。

由于这样的聚类器或分类器(尤其是分类器,较少的聚类器)在内部已经将某种形式的投影合并到了有意义的空间中。降维也是对(希望)有意义的空间的投影。

但是降维必须以一种不知情的方式进行——它不知道你要降低什么任务。这对于分类尤其如此,因为您拥有完全监督的信息。但它也适用于聚类,其中一个想要投射到聚类的空间被更好地定义(对于这个算法),而不是仅仅“有更少的维度)。@usεr11852 的回答谈到了这个。正如我所说的降维不知道什么您正在减少的任务 - 您在选择使用哪种降维算法时通知它。

因此,与其在聚类/分类之前添加降维步骤作为预处理,不如使用包含有用投影的不同分类器/聚类器。

在这方面,维度减少确实有其作用的一件事是它在创建到(希望)有意义的空间的投影时的无监督性质。如果您的标签数据很少,这很有用。但是通常还有其他与您的分类器密切相关的方法(例如,对于神经网络,使用自动编码器,例如深度信念网络预训练)会更好地工作,因为它们的设计考虑了最终任务。不是更一般的降维任务。