PCA:相反符号的特征向量,并且无法在 R 中使用“solve”计算特征向量

机器算法验证 r 主成分分析 特征值
2022-03-21 10:57:44

我正在用 R 语言学习 PCA。我现在遇到了两个我不明白的问题。

  1. 我正在使用一些自定义代码在 R 中对 318×17 数据集执行 PCA 分析。我在 R 中使用特征函数来查找特征值和特征向量。但是我的第一个和第三个特征向量与我的手册的符号相反。我的第二个特征向量几乎相同。

  2. 我知道给定一个方阵 A,表征特征值的条件是存在一个非零向量使得这个方程可以改写如下:λxAx=λx(Aλ)x=0

    现在我计算我的数据的协方差并具有特征值。我想求解这个线性组合方程以找到并与初始特征向量进行比较。当我在 R 中使用求解函数时,我的向量始终为零。xx

这是我的问题:为什么标志不同?如何在 R 中使用求解函数来找到非零向量x

1个回答

1) 特征向量的定义是灵巧的。如果是特征向量,那么也是,因为Ax=λxxx

A(x)=Ax=λx=λ(x)

因此,本征基的定义是符号模糊的。

2) 很难确定,但我强烈怀疑这里发生了什么。你的方程式

(Aλ)x=0

在技​​术上是不正确的。正确的方程是

(AλI)x

第一个等式通常用作第二个等式的简写。一般来说,这是明确的,因为没有真正的数学方法可以从方阵中减去向量,但这对符号的滥用。虽然R,你有广播。所以如果你这样做

> M <- matrix(c(1, 1, 1, 1), nrow=2)
> M - .5
     [,1] [,2]
[1,]  0.5  0.5
[2,]  0.5  0.5

它不是你真正想要的。正确的方法是

> M - diag(.5, 2)
     [,1] [,2]
[1,]  0.5  1.0
[2,]  1.0  0.5

你得到零解的原因是你从开始的矩阵是可逆的。很可能(几乎可以肯定),通过从每个条目中减去相同的数字得到的矩阵也将是可逆的。的唯一解是零向量。AAx=0