机器学习笔记 主成分分析(PCA)

今天看了关于主成分分析算法,然后加上自己的理解写成笔记,作为以后复习的资料。

主成分分析是通过减少一定的精度来减少数据的维度,而这里主要的目标是怎么在给定的需要减少的维度的条件下,使得精度下降的最少。主成分分析法是通过寻找数据的主要特征,减少维度。目前主要的方法有最大化方差法和最小化平方误差,这两种方法从不同的两种角度去分析这个问题,首先看最大化方差法:

最大化方差法的只要思想是最大化数据在某一个方向上的方差,而这个方向就是主成分对应的方向。为了便于计算,我们假设这个方向为单位方向向量w,假设我们有样本数据\small \{ {s_1},{s_2}, \cdots {s_n}\},都是列向量, 为了便于计算将样本进行中心化得到,\small \mu = \frac{1}{n}\sum\limits_{i = 1}^n {​{s_i}}\small \{ {x_1},{x_2}, \cdots {x_n}\} = \{ {s_1} - \mu ,{s_2} - \mu , \cdots ,{s_3} - \mu \} 。我们先算样本\small x_{i}在w上的投影长度,得到\small {l_i} = x_i^Tw,这样我们就能得到所有样本在w上投影的方差:

\small {\sigma ^2}(x) = \frac{1}{n}\sum\limits_{i = 1}^n {(x_i^T} w{)^2} = \frac{1}{n}\sum\limits_{i = 1}^n {(x_i^T} w{)^T}(x_i^Tw) = \frac{1}{n}\sum\limits_{i = 1}^n {​{w^T}} {x_i}x_i^Tw = {w^T}(\frac{1}{n}\sum\limits_{i = 1}^n {​{x_i}x_i^T)w}

这样问题就转化为带约束的优化问题: 

                                                  \small \left\{ {\begin{array}{*{20}{c}} {\max \{ {w^T}Cw\} }\\ {s.t.{w^T}w = 1} \end{array}} \right.

引入拉格朗日乘子得到:

                                                    \small L(w,C,\lambda ) = - {w^T}Cw + \lambda {w^T}w

对w求导得到\small Cw = \lambda w,所以\small {\sigma ^2}(x) = {w^T}Cw = \lambda {w^T}w = \lambda。通过分析,我们可以看出,我们寻找的最大主成分的方向向量为样本的协方差矩阵最大特征值对应的特征向量。如果我们需要将样本降到d维的空间,则可以求出样本协方差矩阵,然后将特征值进行排序,然后将前d个特征值对应的特征向量求出得到转化矩阵,这样就能得到降维后的样本。


下面是另一种方法,这种方法从另一个角度来分析这个问题,与上面寻找一个方向不同,然后根据所有方向确定绛维后的超平面,这种方法是直接寻找超平面,然后通过最小化样本到超平面的距离来得到最优的超平面。于是我们可以得到所有样本到超平面的距离为:

                                                                \small L = \sum\limits_{i = 1}^n {\left\| {​{x_i} - {​{\bar x}_i}} \right\|} 

这里的\small {\bar x_i}表示\small x_{i}在超平面上的投影向量,假设超平面有d个标准正交基组成\small W = \{ {w_1},w{}_2, \cdots {w_d}\},d为绛维后的维度。现在,我们需要求解出样本在超平面的投影向量\small {\bar x_i},可以通过求出\small x_{i}在每一个基上的投影,然后将这些投影相加就能得到\small x_{i}在由这些基组成的超平面的投影向量

                                                                \small {\bar x_i} = \sum\limits_{j = 1}^d {(w_j^{\rm{T}}{x_i}){w_j}}

跟上面方法一样,我们将问题转化为带约束的优化问题:

                                                              \small \left\{ {\begin{array}{*{20}{c}} {\mathop {​{\mathop{\rm argmin}\nolimits} }\limits_W \sum\limits_{i = 1}^n {​{​{\left\| {​{x_i} - {​{\bar x}_i}} \right\|}^2}} }\\ {s.t.{W^T}W = I} \end{array}} \right.

这里我们是最小化距离的平方,便于后面的计算。先来求解优化目标

                                        \small {\left\| {​{x_i} - {​{\bar x}_i}} \right\|^2} = {({x_i} - {\bar x_i})^T}({x_i} - {\bar x_i}) = {x_i}^T{x_i} - 2{x_i}^T{\bar x_i} + {\bar x_i}^T{\bar x_i}

通过上面的式子可以得到:

                                 \small x_i^T{\bar x_i} = x_i^T\sum\limits_{j= 1}^d {(w_j^T} {x_i}){w_j} = \sum\limits_{j = 1}^d ( w_j^T{x_i})x_i^T{w_j} = \sum\limits_{j = 1}^d {w_j^T} {x_i}x_i^T{w_j}= tr({W^T}{x_i}x_i^TW)

                                    \small \bar x_i^T{\bar x_i} = (\sum\limits_{j = 1}^d {(w_j^T} {x_i}){w_j}{)^T}(\sum\limits_{j = 1}^d {(w_j^T} {x_i}){w_j}) = \sum\limits_{j = 1}^d {\sum\limits_{k = 1}^d {((w_j^T} } {x_i}){w_j}{)^T}((w_k^T{x_j}){w_k})

因为当\small i\neq j时,\small {w_i}{w_j} = 1,当\small i=j时,\small {w_i}{w_j} = 0,所以上面的式子可以写成:

                                                                \small \bar x_i^T{\bar x_i} = \sum\limits_{j = 1}^d {w_j^T} {x_i}x_i^T{w_j} = tr({W^T}{x_i}x_i^TW)

结合上面的式子,可以得到:

                               \small \sum\limits_{i = 1}^n {​{​{\left\| {​{x_i} - {​{\bar x}_i}} \right\|}^2}} = \sum\limits_{i = 1}^n {( - tr({W^T}} {x_i}x_i^TW) + {x_i}x_i^T) = - tr({W^T}X{X^T}W) + X{X^T}

因为\small XX^{T}为一个常数,对优化结果没有影响,所以优化问题转化为:

                                                      \small \left\{ {\begin{array}{*{20}{c}} {\mathop {\arg \max }\limits_W tr({W^T}X{X^T}W)}\\ {​{W^T}W = I} \end{array}} \right.

最后就和前面第一种方法的求解达到一致,我们依次求解W中的每一个分量时,就是上面的最大化方差的方法,虽然两种方法考虑的角度不一样,但是最终的结果都化为求解带约束的优化问题。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值