主成分分析Principal Component Analysis

降维除了便于计算,另一个作用就是便于可视化。

主成分分析-->降维-->

方差:描述样本整体分布的疏密,方差越大->样本越稀疏,方差越小->样本越紧密

所以问题转化成了 -->

与线性回归对比,似乎有些类似。但它们是不同的!

不仅是公式上有区别,且对于线性回归来说,其纵轴轴 对应的是输出标记。而PCA中其两个轴都是表示特征。

且这些点是垂直于特征轴,而不是红线轴


PCA第一步:将样例的均值归为0(demean),即在每个维度上的均值为0,如下图,

因此,可化为

对于该式,X(i) 是所有样本点已经映射到新的坐标轴上之后,得到的新的样本,蓝点。

步骤-->

1. 对所有样本进行demean处理

2. 求一个轴的方向 w = (w1, w2)

3. 使得所有样本映射到w以后,有:

 最大

映射后样本方差 = (映射后每一个样本 i 的值 - 映射后整体均值)的平方和 / m

注意: 对X可能有n个维度,即使对于二维,每一个样本本身也是包含有2个数的向量。所以,该式更应该表示成以下形式:

 (双杠 表示 模)

Xproject_bar = X_bar (他俩平均值其实是一样的)

又因为我们已经进行了demean处理,其平均值为0,有,

 ----------(1)


假设红线代表我们要找的方向 w = (w1, w2), 蓝色的样本点对应X中的第 i 行 X(i) = (X1(i) , X2(i)), X(i) 此时也是一个向量。 X(i) 映射到 w 上, 即向w表示的轴做一个垂线,有交点,交点位置的这一点即

要求模的平方,其实就是求蓝色轴的长度对应的平方

也可理解成,把一个向量映射到另一个向量上,对应的映射长度是多少。实际上这种映射就是点乘的定义。,两个红线的夹角即 西塔。

由于要找的 w 是一个轴,它是一个方向,可用方向向量来表示,即 w 的模 为 1. 因此上式可化简为,

此时X(i) 的模 是 表示X(i) 的向量 对应的长度, 再乘以 cos西塔, 得到的就是蓝色向量的长度。即,

因此(1)式可化简为,

由于两个向量点乘是一个数,所以可以不用取模的符号了,即


梯度上升法求解PCA问题

与线性回归中推导的公式很像,可化成,

这个矩阵相乘,即,

注,Xw 本身是(m* n) * (n*1) = m * 1 的列向量。在这里我们写成行向量的形式,所以做了一个转置。又因为得到的结果 (1*m) * (m*n) = 1 * n 的行向量,而我们其实想要的是 n*1 的梯度。所以我们再对整个结果做一个转置,即,

 (注: (A*B) 的 转置 = B的转置乘以A的转置)

铛铛! 得到向量化的结果啦!


求数据的前n个主成分

主成分分析:一组坐标系 转移到 另一组坐标系,进行重新排列。 原先n维特征n个轴,转移后仍然是n个轴。使得其在第一个轴上方差最大,第二个轴次之,以此类推。

求出第一主成分后,如何求出下一个主成分?


高维数据向低维数据映射

第一个样本X(1)和w(1)相乘,就是第一个数据在第一个主成分上的映射。W(1)也有n维,是因为原来的X中每个样本都是n维,所以转换后也还是在一个n维的空间中。

但我们将原来m*n 维 降到了 m*k维,k 表示前k个主成分。(k<n)。完成了高维数据到低维数据的映射。

也可完成从低维恢复到高维,用Xk中每一行 乘以 Wk 每一列。 (m*k) * (k*n) = m*n

但这也是不可能恢复的和原数据一样,因为降维的过程中丢失了一些数据。

最新文章

  1. 和Java相关的书籍,想成为架构师的请收藏一下啊
  2. opecv获取图像轮廓
  3. at 常用命令
  4. Hash与Map
  5. 利用WinHEX,重构狂牛加密视频1.0.0.1【只适合RIFF(AVI)】
  6. java常见类型的转化以及风险
  7. JavaWeb学习记录(十四)——商城购物之字符串拼接实现最近浏览商品和购物车的功能
  8. mysql安装过程中出现的错误问题解决方案
  9. hdoj 1564 Play a game
  10. Android中SharedPreferences使用方法介绍
  11. pyqt tabliwdget表头属性修改
  12. Storm集群中执行的各种组件及其并行
  13. ThinkPHP3.2.3版本验证码异步第二次验证时失败的问题解决
  14. android用户信息保存
  15. 【Java】-NO.16.EBook.4.Java.1.004-【疯狂Java讲义第3版 李刚】- 内部类
  16. 使用Base64格式的图片制作ICON
  17. CentOS 修改时区的方法
  18. percona-Toolkit
  19. 23种设计模式之模板方法(Template Method)
  20. React server rendering —— 网易美学主站同构实录

热门文章

  1. python正则表达式提取中文
  2. 167 Two Sum II - Input array is sorted 两数之和 II - 输入有序数组
  3. C. Molly&#39;s Chemicals 暴力 + 统计技巧
  4. placeholder字体样式及兼容
  5. viewport实现html页面动态缩放/meta viewport/viewport
  6. php 缓存工具类 实现网页缓存
  7. mac下iterm2配置安装,通过expact实现保存账号,及通过跳板登陆配置
  8. Unity3D_最简单的开始界面_结束界面
  9. dircolors - 设置‘ls&#39;显示结果的颜色
  10. window Chrome 下允许跨域访问服务端接口设置