PCA要做什么?

     

我们想将数据从二维降到一维,那么怎么找到这条好的直线对数据进行投影呢?

上图中红色的那条直线是个不错的选择,因为点到投影到这条直线上的点之间的距离(蓝色的线)非常小;反之那条粉红色的线,数据投影到这条线上的距离非常大,所以PCA会选择红色的那条线而不是粉色的那条线。

PCA要做的就是寻找一个低维的面(本例中为直线),数据投影到上面,使得这些蓝色小线段的平方和达到最小值

这些蓝色线段的长度称为投影误差(projection error)

在应用PCA之前,通常进行features scaling(按比例缩放) 和mean normalization(均值归一化),使features的均值为0,使它们的数值在可比较的范围之内

正式的表达PCA要做什么?

对于从2维降到1维,就是要寻找一个向量(向量是2维的),将数据投影到这个向量决定的直线上,使得投影误差最小.至于向量是正的还是负的都可以,因为它们决定的是同一条直线

对于从n维到k维,就是寻找k个向量(向量属于Rn),使得将数据投影到这k个向量决定的子空间上,使得投影误差最小

PCA与linear regression之间的区别

PCA虽然与linear regression看出去很像,但是它们有很大的差别

左图是linear regression,它是要拟合一条直线,使得图中蓝色线段的距离和最小(这个距离是和x轴垂直的),即实际的值与预测的值之间的距离

右图是PCA,它是要使点到红色直线的距离和(这个距离是与红色直线垂直的而不是x轴)最小,即实际的点到要降维的直线上的点的距离(走到那儿经过的距离,即将二维的点降维到一维的直线上去)

还有一点不同是,linear regression通过x值来预测y值,而PCA中只有x1,x2,......xn,没有y值

例如(右图):将三维空间的点约简到二维,即找到二个方向(u(1)和u(2)),将数据投影到上面,即原来我有三个features:x1,x2,x3(这些都是被同等对待,没有特殊的变量y需要预测),因此PCA与linear regression有很大的不同

总结

PCA是寻找一个低维的平面,对数据进行投影,以便最小化投影误差的平方

最新文章

  1. Bootstrap之字体图标
  2. openssl之rsa
  3. Codeforces Round #232 (Div. 2) D. On Sum of Fractions
  4. Node.js的net模块
  5. QEMU-KVM中的多线程压缩迁移技术
  6. Cassandra 技术选型的问题
  7. 新建线程与UI线程间的通信
  8. JDK源码阅读(一) ArrayList
  9. BZOJ 1034 [ZJOI2008]泡泡堂BNB
  10. Mysql动态多条件查询
  11. 如何解决KEIL 5 编KEIL4同RTX系统的project解
  12. 阿里消息队列中间件 RocketMQ源码解析:Message发送&接收
  13. mysql并发控制之MVCC
  14. 栈->栈的基本定义
  15. go标准库的学习-errors
  16. Python生成随机验证码,大乐透号码
  17. Linux在bash history当中添加timestamp
  18. linux screen 多任务后台执行
  19. Codeforces Round #505
  20. Web Api - HttpMessageHandler 学习

热门文章

  1. Instance Variable Hiding in Java
  2. pytest_02-用例运行规则
  3. 【题解】Luogu P5400 [CTS2019]随机立方体
  4. GreenPlum 最佳实践
  5. nginx+lua+storm的热点缓存的流量分发策略自动降级
  6. 神奇的外部嵌套(使用ROW_NUMBER()查询带条件的时候提示列名无效)
  7. idea忽略并隐藏.idea文件夹.iml文件不提交到svn
  8. Java 单例类
  9. 大数据系列文章-Hadoop基础介绍(一)
  10. Jupyter Notebook修改默认的工作目录