我不确定我是否正确使用PCA!我有p个特征和n个观察(实例)。我将它们放在一个nxp矩阵X中。我执行均值归一化,得到归一化矩阵B.我计算pxp协方差矩阵的特征值和特征向量C =(1 /(n-1))B * .B其中*表示共轭转置。
对应于递减有序的特征值的特征向量在pxp矩阵E中。假设我想减少从p到k的属性数量。我使用公式X_new = B.E_reduced,其中E_reduced是通过选择E的前k列产生的。这是我的问题:
1)应该是X_new = B.E_reduced还是X_new = X.E_reduced?
2)我应该在测试阶段重复上述计算吗?如果测试阶段类似于训练阶段,则不会获得加速,因为我必须在测试阶段计算每个实例的所有p特征,并且由于特征向量计算开销,PCA使算法变慢。
3)应用PCA后,我注意到准确度下降了。这与数字k(我设置k = p / 2)或我使用线性PCA而不是内核PCA的事实有关吗?选择数字k的最佳方法是什么?我读到我可以找到k个特征值的总和与所有特征值的总和之比,并根据这个比率做出决定。
答案 0 :(得分:0)
通常将乘法应用于居中数据,因此您的投影数据也会居中。
测试期间不要重新运行PCA 。仅用于训练数据,保持移位向量和投影矩阵。您需要将完全应用于训练期间的相同投影,而不是重新计算新投影。
性能下降可能有很多原因。例如。你是否也使用特征值的根来应用缩放?你首先使用了什么方法?