是否可以使用内核 PCA 进行特征选择?

机器算法验证 r 主成分分析 特征选择 内核技巧
2022-02-28 19:09:57

是否可以像使用 PCA 一样将内核主成分分析 (kPCA) 用于潜在语义索引 (LSI)?

我使用 PCA 函数在 R 中执行 LSI,prcomp并从第一个函数中提取负载最高的特征k组件。这样我就得到了最好的描述组件的特性。

我尝试使用该kpca函数(来自kernlib包),但看不到如何将特征的权重访问到主成分。使用内核方法时这是否可能?

2个回答

我认为你的问题的答案是否定的:这是不可能的。

标准 PCA 可用于特征选择,因为每个主成分都是原始特征的线性组合,因此可以看到哪些原始特征对最突出的主成分贡献最大,请参见此处:Using principal component analysis (PCA) for特征选择

但是在核 PCA 中,每个主成分都是目标空间中特征的线性组合,例如高斯核(经常使用),目标空间是无限维的。因此,“负载”的概念对于 kPCA 并没有真正意义,事实上,内核主成分是直接计算的,完全绕过了主轴的计算(对于标准 PCA,在 R by 中给出prcomp$rotation),这要归功于所谓的内核技巧参见例如:Kernel PCA with linear kernel 是否等同于标准 PCA?更多细节。

所以不,这是不可能的。至少没有简单的方法。

以下示例(取自 kernlab 参考手册)向您展示了如何访问内核 PCA 的各个组件:

data(iris)
test <- sample(1:50,20)
kpc <- kpca(~.,data=iris[-test,-5],kernel="rbfdot",kpar=list(sigma=0.2),features=2)

pcv(kpc)        # returns the principal component vectors
eig(kpc)        # returns the eigenvalues
rotated(kpc)    # returns the data projected in the (kernel) pca space
kernelf(kpc)    # returns the kernel used when kpca was performed

这回答了你的问题了吗?