假设有一组二维数据点,对应的数据矩阵为 X
质心的位置为
μ=nX⊤
将数据中心化(去均值)
Xc=X−μ⊤
Σ=n−1Xc⊤Xc=σ1cov(x2,x1)⋮cov(x1,x2)σ2⋮⋯⋯⋱
如果不同特征的标准差差异过大,需要先对数据标准化,不再依赖原本的度量单位。
Z=XcD−1=(X−μ⊤)D−1,D=diag(σ1,σ2,⋯)
经过标准化处理后,数据均值变为 0,标准差变为 1.
协方差矩阵的主对角线为方差 σ1,σ2,⋯,非对角线元素为协方差 cov(x1,x2),cov(x2,x1),⋯
线性相关系数为
ρ1,2=σ1σ2cov(x1,x2)
线性相关性系数矩阵为
P=1ρ1,2⋮ρ1,21⋮⋯⋯⋱
每个元素表示两个特征之间的相关性 [−1,1],对角线上恒为 1,表示和自身完全正相关。
P=ΣZ=n−1Z⊤Z
从正交投影的角度看,Z 在 e1 方向的投影 z1 的方差为
var(z1)=n−1z1⊤z1=n−1(Ze1)⊤(Ze1)=n−1e1⊤Z⊤Ze1=e1⊤Pe1=1
z1,z2 的协方差为
cov(z1,z2)=cov(z2,z1)=n−1z2⊤z1=n−1(Ze2)⊤(Ze1)=n−1e2⊤Z⊤Ze1=e2⊤Pe1=ρ1,2
将线性相关性系数矩阵进行特征分解,得到
P=VΛV⊤
Z 在特征向量 v1 方向的投影为
y=Zv
则 y1 的方差为
var(y)=n−1y⊤y=n−1(Zv)⊤(Zv)=n−1v⊤Z⊤Zv=v⊤Pv
Z 朝 V 正交投影得到 Y,
ΣY=n−1Y⊤Y=n−1V⊤Z⊤ZV=V⊤PV=Λ
特征值越大,表示该方向上数据的方差越大,信息越丰富(椭圆/球越长)。
把数据看作一个旋转的椭圆,主成分分析就是找到合适的方向将椭圆摆正。
如果仅用第一主元信息还原 Z,对应的运算为
Z^=Z1=y1v1⊤=Z(v1v1⊤)
误差为
Z−Z1=Z(I−v1v1⊤)
然后用 Z1 近似还原 X,进一步缩放和平移
X^=Z1D+μ⊤=Z(v1v1⊤)D+μ⊤
类似地,用前两个主元信息还原 X,对应的运算为
X^=(Z1+Z2)D+μ⊤=Z(v1v1⊤+v2v2⊤)D+μ⊤
参考资料·
Visualize-ML/Linear-Algebra-Made-Easy—Learn-with-Python-and-Visualization
讨论
评论