文章目录
PCA——用 SVD 实现 PCA
PCA 优化算法
PCA的优化算法目的是优化它的目标函数:
算法一,拉格朗日乘子法:
令:
然后对W求导,并令导函数为0可得:
这是一个标准的特征方程求解问题,只需要对协方差矩阵 X X T XX^T XXT进行特征值分解,将求得的特征值排序: λ 1 ≥ λ 2 ≥ . . . ≥ λ d \lambda_1\ge\lambda_2\ge...\ge\lambda_d λ1≥λ2≥...≥λd,再取前 d ′ d' d′个特征对应的特征向量构成 W = ( w 1 , w 2 , . . . , w d ′ ) W=(w_1,w_2,...,w_{d'}) W=(w1,w2,...,wd′)即可。这样就求出了W,即为主成分分析的解。
算法描述:
【输入】:
- d维空间中n个样本数据的集和D={ x ( 1 ) , x ( 2 ) , . . . , x ( n ) x^{(1)},x^{(2)},...,x^{(n)} x(1),x(2),...,x(n)}
- 低维空间的维数 d ′ d' d′,这个数值通常由用户指定。
【过程】:
- 对所有原始样本做中心话: x ( i ) : = x ( i ) − 1 n ∑ i = 1 n x ( i ) x^{(i)}:=x^{(i)}-\frac{1}{n}\sum_{i=1}^{n}{x^{(i)}} x(i):=x(i)−n1∑i=1nx(i)
- 计算样本的协方差矩阵: X X T XX^T XXT
- 协方差矩阵 X X T XX^T XXT进行特征值分解;
- 取最大的 d ′ d' d′个特征值对应的特征向量 w ( 1 ) , w ( 2 ) , . . . , w ( d ′ ) w^{(1)},w^{(2)},...,w^{(d')} w(1),w(2),...,w(d′)
【输出】:
W = ( w ( 1 ) , w ( 2 ) , . . . , w ( d ′ ) ) W=(w^{(1)},w^{(2)},...,w^{(d')}) W=(w