我们可以从关于非线性数据的 PCA 中学到什么?

数据挖掘 机器学习 主成分分析 降维
2022-03-11 11:53:45

假设我们有包含 10 个非线性特征的数据集:

import numpy as np
from sklearn.decomposition import PCA
import matplotlib
import matplotlib.pyplot as plt

v1 = np.random.rand(100)

print (type(v1))

v2 = 2**v1
v3 = 3**v1 + np.matmul(v1, v1)
v4 = 4**v1 + np.matmul(v2, v3)
v5 = 5**v1 + np.matmul(v1, v3)
v6 = 6**v1 + np.matmul(v1, v4)
v7 = 7**v1 + np.matmul(v2, v2)
v8 = 8**v1 + np.matmul(v4, v5)
v9 = 9**v1
v10 = 10**v1

v = [v1,v2, v3, v4,v5, v6,v7, v8, v9,v10]

pca = PCA()
pca.fit(v)
pca.explained_variance_ratio_

PC_values = np.arange(pca.n_components_) + 1
plt.plot(PC_values, pca.explained_variance_ratio_, 'ro-', linewidth=2)
plt.title('Scree Plot')
plt.xlabel('Principal Component')
plt.ylabel('Proportion of Variance Explained')
plt.show()

在此处输入图像描述

  • 我知道 PCA 用于找到线性相关性。但是我们可以从这个例子中学到什么?
  • 我们可以使用 PCA 结果并仅使用 PCA 的第一个组件来训练预测我们的模型吗?
  • 此处显示的结果是否有效(对进一步处理正确)?
1个回答

不完全是答案,只是说,PCA 不是处理特征中非线性关系的好方法。想象一下,尝试将线性回归拟合到非线性分布的数据中,如下例所示(唯一的区别是 PCA 尝试最小化距离平方和,与残差平方和相反):

在此处输入图像描述

尽管如此,PCA 仍有可能帮助测量一些数据方差,但请记住,即使您的数据集中不存在相关性,PCA 也会返回按每个特征的方差顺序排列的 PC。

我建议使用内核 PCA,特别是如果您知道您的功能中存在非线性关系。