我有一个图像数据集,我想对其进行非线性降维。要决定使用多少个输出维度,我需要能够找到保留的方差(或解释的方差,我相信它们是相似的)。Scikit learn似乎拥有迄今为止最好的流形学习算法选择,但我看不出有任何方法可以获得保留的方差统计。我是否缺少scikit-learn API的一部分,或者计算保留方差的简单方法?
我认为没有一种干净的方法可以像PCA一样推导大多数非线性维度技术的"解释方差"。对于PCA来说,这是微不足道的:你只需取特征分解中主分量的权重(即其特征值),并将用于线性降维的权重相加。当然,如果你保留了所有的特征向量,那么你就已经"解释"了100%的方差(即完美地重建了协方差矩阵)。
现在,人们可以尝试用类似于其他技术的方式来定义解释方差的概念,但它可能没有相同的含义。例如,一些降维方法可能会主动尝试分开更多不同的点,最终产生比我们开始时更多的方差。如果它选择将一些点紧密地聚集在一起,则更少。
然而,在许多非线性降维技术中,还有其他度量给出了"拟合优度"的概念。例如,在scikit learn中,isomap有重建误差,tsne可以返回其KL散度,MDS可以返回重建应力。