主成分分析技术
全称是Principal component analysis (PCA)。将原始数据从p个特征维度降低到d个维度。
原理
对原始特征空间进行重构。需要最大投影方差,尽可能保留数据在原空间的信息。投影就是 x T w x^Tw xTw,我们必须规定 ∣ w ∣ = 1 |w| = 1 ∣w∣=1,否则可以通过增大 w w w来增大投影方差,失去了意义。具体可以参见损失函数部分。
从另外一个角度理解,就是需要最小化重构数据和原数据之间的距离。
输入
训练集数据 D = ( x 1 , y 1 ) . . . ( x M , y M ) D = {(x_1,y_1) ... (x_M,y_M)} D=(x1,y1)...(xM,yM), x i ∈ X ⊆ R p x_i \in \mathcal{X} \subseteq R^p xi∈X⊆Rp, y i ∈ R y_i \in R yi∈R
X = ( x 1 x 2 . . . x M ) T ∈ R M ∗ p X = (x_1\ x_2\ ...\ x_M)^T \in R^{M*p} X=(x1 x2 ... xM)T∈RM∗p
同时,我们可以得到数据均值和方差。让我们用 1 M 1_M 1M表示一个长度为M,值全为1的列向量。用 H H H表示中心矩阵。 H = I M − 1 M 1 M 1 M T H = I_M - \frac 1 M 1_M 1_M^T H=IM−M11M1MT。通过计算我们可以得到 H n = H H^n = H Hn=H。
x ˉ = 1 M ∑ i = 1 M x i = 1 M X T 1 M \bar x = \frac{1}{M} \sum_{i=1}^M x_i = \frac{1}{M} X^T 1_M xˉ=M1∑i=1Mxi=M1XT1M
S = 1 M ∑ i = 1 M ( x i − x ˉ ) T ( x i − x ˉ ) = 1 M X T H X S = \frac{1}{M} \sum_{i=1}^M (x_i - \bar x)^T(x_i - \bar x) = \frac{1}{M} X^T H X S=M1∑i=1M(xi−xˉ)T(xi−xˉ)=M1XTHX
输出
X ′ = ( x 1 ′ x 2 ′ . . . x M ′ ) T ∈ R M ∗ d X' = (x_1'\ x_2'\ ...\ x_M')^T \in R^{M*d} X′=(x1′ x2′ ... xM′)T∈RM∗d
损失函数
因为数据是 p p p维的,我们让 u i u_i ui当作每一个维度上的 w w w,仍然满足 ∣ u i ∣ = 1 |u_i| = 1 ∣ui∣=1。我们的目标是根据投影方差定义的。
J = 1 M ∑ i = 1 M ( ( x i − x ˉ ) u 1 ) 2 = 1 M ∑ i = 1 M u 1 T ( x i − x ˉ ) ( x i − x ˉ ) T u 1 = u 1 T 1 M ∑ i = 1 M ( x i − x ˉ ) ( x i − x ˉ ) T u 1 = u 1 T S u 1 J = \frac 1 M \sum_{i=1}^M ((x_i - \bar x)u_1)^2 \\\\ = \frac 1 M \sum_{i=1}^M u_1^T (x_i - \bar x) (x_i - \bar x)^T u_1\\\\ = u_1^T \frac 1 M \sum_{i=1}^M (x_i - \bar x) (x_i - \bar x)^T u_1\\\\ = u_1^T S u_1 J=M1i=1∑M((xi−xˉ)u1)2=M1i=1∑Mu1T(xi−xˉ)(xi−xˉ)Tu1=u1TM1i=1∑M(xi−xˉ)(xi−xˉ)Tu1=u1TSu1
那么我们可以得到 u 1 ∗ = a r g m a x u u 1 T S u 1 u_1^* = argmax_u\ u_1^T S u_1 u1∗=argmaxu u1TSu1且满足 ∣ u i ∣ = 1 |u_i| = 1 ∣ui∣=1。
为了体现出 ∣ u i ∣ = 1 |u_i| = 1 ∣ui∣=1的特点,我们对损失函数进行重构。
L ( u 1 , λ ) = u 1 T S u 1 + λ ( 1 − u 1 T u 1 ) L(u_1, \lambda) = u_1^T S u_1 + \lambda(1 - u_1^T u_1) L(u1,λ)=u1TSu1+λ(1−u1Tu1)
接下来对 u i u_i ui进行求导,
∂ L ∂ u 1 = 2 S u 1 − 2 λ u 1 = 0 S u 1 = λ u 1 \frac {\partial L} {\partial u_1} = 2Su_1 - 2\lambda u_1 = 0 \\\\ Su_1 = \lambda u_1 ∂u1∂L=2Su1−2λu1=0Su1=λu1
这里我们可以发现 u 1 u_1 u1是S的eigen vector, λ \lambda λ是对应的eigen value。
其他 u i u_i ui通过相同过程求解,只需要满足 u i u_i ui之间是互相垂直的即可。
步骤
(1)将样本矩阵中心化得到 X ′ X' X′,即每一维度减去该维度的均值,使维度上的均值为0
(2)计算样本协方差矩阵 S = 1 M − 1 X ′ T X ′ S = \frac{1}{M-1} X^{'T}X' S=M−11X′TX′
(3)寻找协方差矩阵的eigen values和eigen vectors
降维之后对原始数据进行还原
X ^ = ∑ j = 1 d ( X ′ T u j ) u j \hat X = \sum_{j=1}^d (X'^T u_j)u_j X^=∑j=1d(X′Tuj)uj
适用场景
原始数据特征过于庞大且特征有明显的相关性。
优点
- 计算简单,容易实现
- 在一定程度上起到降噪效果
- 无参数限制
缺点
- 降维之后的数据缺乏解释性
Reference
- CS540 Intro to AI, UW Madison, Jerry Zhu
- 白板推导系列,shuhuai007