机器学习笔记PCA

1 降维

1.1 高维数据

我们会经常看到很多高维数据,但是这些高维数据并不一定需要这么多维度来表示。

比如左图这样的图像并不一定要用三维向量表示,对其稍加修改,便可以用右图的二维向量表示了

 再举一个例子,我们知道MNIST数据集是28*28维的向量组成的,但实际上我们并不一定要用这么高维的向量来表示MNIST

举一个最极端的例子

如果一个数据集里面只有3,但是是不同方向的3,那么其实用一个维度表示就ok了:3的朝向

 1.2 降维

        降维的核心思想就是,输入原始数据X之后,通过降维的函数,得到数据Z。数据Z的维度比X小很多。且数据Z尽可能地保持原来X的信息

2  主成分分析PCA 

2.1 先考虑一维的情况

我们有一堆向量X,我们希望用一维表示这些X,那么这一维的坐标轴怎么找呢?

回顾一个线性代数的知识:假设我们找到了坐标轴向量w(w是单位向量),向量x在w上的投影 就是x和w的内积

 那么在这里,我们不希望降维之后的点靠得太近,希望他们尽量互相原理一些。

用数学的方式表达,就是希望方差Var(Z_1)=\sum_{z_1}(z_1-\bar{z_1})^2越大越好

 

 2.2 延伸到多维

        当然,现实生活中的数据可能维度更高,降至一维是不现实的。此时我们可能就需要多个单位向量w^i

        

        我们要求x在各个 w^i上的投影,方差都要越大越好。

        当然,如果只要求方差越大越好是不行的,因为这样的话会导致w^1=w^2=\cdots=w^n,于是我们希望不同的w^i之间两两正交。

——>主成分的标准

  • 互不相关
  • 方差尽可能地大

2.3 数学推导PCA

2.3.1 第一个w

然后我们看Var(z1),我们希望他越大越好

 再回顾一个线性代数的知识 :

  • 协方差矩阵 S=Cov(x)是一个对称+半正定的矩阵。
  • 对称+半正定的矩阵有非零特征值

——> 协方差矩阵有非零特征值

 我们的目标就是

使用拉格朗日乘子:

g(w^1)=(w^1)^TSw^1-\alpha[(w^1)^Tw^1-1]

求关于w^1的偏导:

\frac{\partial g(w^1)}{\partial w^1}=2Sw^1-2\alpha w^1=0

——>S w^1=\alpha w^1 ——>α是矩阵S的一个特征值

将上式带回到我们希望最大化的式子里,有:

(w^1)^TSw^1=(w^1)^T \alpha w=\alpha(w^1)^Tw=\alpha  【后两项的乘积为1】

所以最大化(w^1)^TSw^1 也就是最大化α,即找到S最大的特征值

所以w^1是协方差矩阵S最大的特征值λ1对应的特征向量

2.3.2  第二个w

和第一个w的约束方程类似,知识多了一个约束条件,就是w^1,w^2正交

 同样用拉格朗日算子,有:

g(w^2)=(w^2)^TSw^2-\alpha [(w^2)^Tw^2-1]-\beta[(w^2)^Tw^1-0]

w^2求偏导,有2Sw^2-2\alpha w^2-2\beta w^1=0

上式同时左乘一个(w^1)^T,有:

(w^1)^TSw^2-\alpha (w^1)^T w^2-\beta (w^1)^Tw^1=0

其中(w^1)^Tw^2=0,(w^1)^Tw^1=1

所以\beta=(w^1)^TSw^2

由于是标量,所以\beta=(w^1)^TSw^2=[(w^1)^TSw^2]^T=(w^2)^TS^Tw^1

S是对称矩阵,所以(w^2)^TS^Tw^1=(w^2)^TSw^1=(w^2)^T\lambda_1 w^1=\lambda_1(w^2)^Tw^1=0

所以β=0

也就是说Sw^2=\alpha w^2

为了让(w^2)^T Sw^2=(w^2)^T\alpha w^2=\alpha越大越好,所以w2对应的alpha是第二大的特征值(因为第一大的w1已经用掉了)

所以w^2是协方差矩阵S第二大的特征值λ2对应的特征向量

2.4 PCA:去关联性

通过PCA之后,z的协方差矩阵是一个对角阵。

 

2.4.1 去关联性推导

 2.5 从矩阵层面看PCA

假设我们一个向量x可以写成如下形式

那么我们可以用[c_1,c_2,\cdots,c_k]来表示向量x

转换一下,我们希望:

 也即:

 每一个x^i都是一列,所以我们可以转化成矩阵形式:

 用SVD求解U和C矩阵:(Σ矩阵放在那边都可以)

 效果和数学推导的PCA是一样的

2.6 从autoencoder层面看PCA

PCA可以看成是一个有一层隐藏层的神经网络(激活函数是线性的)

 如果我们降维后的K个基为\{w^1.\cdots,w^K\},那么我们希望 <->两边的内容相逼近

又这K个基\{w^1.\cdots,w^K\}两两正交,所以我们可以用如下方式求每个Ck

 

  • (x-\bar{x})的每一维看成是一个神经元,那么w^i就是权重,我们便得到了输入层——>隐藏层的部分 
  • 又有,所以我们得到了隐藏层——>输出层 。所以在一定程度上可以看成autoencoder (只不过PCA对应的autoencoder需要w^i两两正交)

3 一些应用

3.1 PCA+MNIST

MNIST 每一张图是一个28*28=784维的向量,我们用PCA,选择前30大特征值对应的特征向量,作为主成分,其可视化结果如下:

3.2  PCA+FACE

3.3 为什么3.2和3.1的主成分都不是某一个部分,而也是类数字/类人脸呢?

因为这边的a_i,w^i的元素没有限制,可正可负,所以可能出现“两个主成分都是人脸,然后正好相减抵消”的情况。

 3.3.1 一种解决方法 非负矩阵分解

一种解决方法是非负矩阵分解,加上约束条件:a_i,w^i元素均非负

 可以看到使用了NMF非负矩阵分解之后,主成分就是一个一个小组件了,而不是类数字/类人脸的东西

 

参考内容ML Lecture 13: Unsupervised Learning - Linear Methods - YouTube

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值