如何选择要保留在内核 PCA 中的多个组件?

机器算法验证 r 主成分分析 内核技巧
2022-03-30 16:58:54

我正在使用kpca函数kernlab并尝试获取每个组件解释的方差比例,如标准 PCA 中一样。我没有先验选择特征的数量,因为我想检查它们的贡献。但是,我得到了 124 个组件,这比具有 10 个协变量的原始数据集要多得多。另一方面,没有大的特征值可以让我在某个水平上进行切割。有没有其他选择来选择一些功能?

这是我的特征值:

     0.040155876 0.031142483 0.029499281 0.024417995 0.023562053 0.021718055
     0.020310953 0.018984183 0.017789973 0.017311123 0.015484136 0.015346860 
     0.015005007 0.013791102 0.013291260 0.012670090 0.012180261 0.011882593 
     0.011523336 0.011107896 0.011045174 0.010477924 0.010251907 0.009882142 
     0.009606943 0.009529857 0.009362611 0.009340580 0.009062668 0.008987593 
     0.008699146 0.008670243 0.008549814 0.008398879 0.008214842 0.008091366 
     0.008029260 0.007924718 0.007857977 0.007771030 0.007691762 0.007657295 
     0.007582320 0.007510590 0.007470620 0.007404477 0.007285695 0.007246443 
     0.007134445 0.007087406 0.006956178 0.006935525 0.006898103 0.006864934 
     0.006653101 0.006605607 0.006585557 0.006513107 0.006395417 0.006207376 
     0.006171564 0.006043939 0.006023738 0.005955121 0.005894706 0.005788706 
     0.005714630 0.005700367 0.005601950 0.005550044 0.005441031 0.005410300 
     0.005367971 0.005246899 0.005161450 0.005093251 0.005026677 0.004984414 
     0.004866770 0.004674961 0.004655324 0.004644769 0.004529852 0.004447371 
     0.004411176 0.004338879 0.004258299 0.004135511 0.004078752 0.003985330 
     0.003902527 0.003838939 0.003734150 0.003582305 0.003547204 0.003485095 
     0.003440328 0.003397815 0.003363152 0.003246147 0.003223031 0.003184239
     0.003091351 0.002938476 0.002868938 0.002765338 0.002645138 0.002572225 
     0.002544704 0.002466896 0.002419687 0.002298704 0.002187789 0.002089151 
     0.002019031 0.001957721 0.001908535 0.001887064 0.001760442 0.001705021
     0.001587056 0.001536336 0.001228544 0.001079629
2个回答

即使您只有 10 个原始特征,您得到 124 个组件的原因是(可能)因为您有 124 个样本。在内核 PCA 中,数据被映射到一个非常高维的空间(超过 10 维),因此 PC 的数量仅受样本数量的限制。

现在,您的特征值实际上并不像您想象的那么统一。这是您的数据图:

在此处输入图像描述

有人可能会争辩说,在 15 个分量附近存在某种“弯头”,并且在大约 20 个分量之后,频谱变得非常单调。因此,仅基于特征值, 15-20 个分量似乎是一个合理的数字

但是,如果您想使用 kPCA 作为某些分类或解码算法的第一步,那么通过交叉验证选择要保留的组件数量总是一个更好的主意。

这是解释的方差图i=1kλii=1124λi. 在此处输入图像描述

你需要 90 台电脑来解释 90% 的方差。在我看来,你的内核不是很好。也许你应该尝试其他内核,看看这个图是否更像下图,来自这篇论文:Williams,Christopher KI。“关于内核 PCA 和度量多维缩放之间的联系。” 机器学习 46.1-3 (2002): 11-19。

当解释的方差在左侧非常陡峭时,这很好。

在此处输入图像描述