PCA 用于降维。我今天了解到,PCA 不能用于非线性数据。当非线性时,您必须使用内核 PCA (KPCA)。
似乎由于 KPCA 更适用于更多种类的数据,因此它似乎是一种更好的方法,除了它的计算时间更长。KPCA 是否真的优于 PCA,或者当数据是线性时使用 KPCA 是否有任何实际缺点?
似乎如果计算效率不是那么大的问题,我几乎总是可以天真地使用 KPCA。
PCA 用于降维。我今天了解到,PCA 不能用于非线性数据。当非线性时,您必须使用内核 PCA (KPCA)。
似乎由于 KPCA 更适用于更多种类的数据,因此它似乎是一种更好的方法,除了它的计算时间更长。KPCA 是否真的优于 PCA,或者当数据是线性时使用 KPCA 是否有任何实际缺点?
似乎如果计算效率不是那么大的问题,我几乎总是可以天真地使用 KPCA。
内核 PCA (kPCA) 实际上包括常规 PCA 作为特例——如果使用线性内核,它们是等价的。但是,它们通常具有不同的属性。以下是一些比较点:
线性与非线性结构。kPCA 可以捕获数据中的非线性结构(如果使用非线性内核),而 PCA 不能。这可能很重要。如果需要此功能,则根本不能选择 PCA,而必须使用 kPCA(或许多其他非线性降维技术之一)。如果数据真的存在于线性流形上,那么 kPCA 的表现不会比 PCA 好。事实上,使用非线性内核可能会由于过度拟合而导致性能更差。
可解释性。PCA 提供了一组权重,定义了从输入空间到低维嵌入空间的线性映射。这些权重可以提供有关数据结构的有用信息。具有非线性内核的 kPCA 不存在这样的权重,因为映射是非线性的。它也是非参数的。
逆映射。PCA 提供了从低维空间到输入空间的逆映射。因此,输入点可以从它们的低维图像中近似重建。kPCA 本身并不提供逆映射,尽管可以使用其他方法来估计一个(以额外的复杂性和计算资源为代价)。
超参数。这两种方法都需要选择维数。kPCA 还需要选择核函数和任何相关参数(例如,RBF 核的带宽,或多项式核的次数)。这种选择(以及用于实现它的方法/标准)取决于问题。通常,需要多次重新拟合 kPCA 以比较不同的内核/参数选择。
计算成本。PCA 通常比 kPCA 具有更低的内存和运行时要求,并且可以扩展到海量数据集。存在各种用于扩大 kPCA 的策略,但这需要进行近似(例如,参见 Nystroem 近似)。
像往常一样,适合工作的工具取决于问题。