Principal Component Analysis: 用公式来描述我们想要PCA做什么
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是寻找一个低维的平面,对数据进行投影,以便最小化投影误差的平方
最新文章
- Bootstrap之字体图标
- openssl之rsa
- Codeforces Round #232 (Div. 2) D. On Sum of Fractions
- Node.js的net模块
- QEMU-KVM中的多线程压缩迁移技术
- Cassandra 技术选型的问题
- 新建线程与UI线程间的通信
- JDK源码阅读(一) ArrayList
- BZOJ 1034 [ZJOI2008]泡泡堂BNB
- Mysql动态多条件查询
- 如何解决KEIL 5 编KEIL4同RTX系统的project解
- 阿里消息队列中间件 RocketMQ源码解析:Message发送&;接收
- mysql并发控制之MVCC
- 栈->;栈的基本定义
- go标准库的学习-errors
- Python生成随机验证码,大乐透号码
- Linux在bash history当中添加timestamp
- linux screen 多任务后台执行
- Codeforces Round #505
- Web Api - HttpMessageHandler 学习
热门文章
- Instance Variable Hiding in Java
- pytest_02-用例运行规则
- 【题解】Luogu P5400 [CTS2019]随机立方体
- GreenPlum 最佳实践
- nginx+lua+storm的热点缓存的流量分发策略自动降级
- 神奇的外部嵌套(使用ROW_NUMBER()查询带条件的时候提示列名无效)
- idea忽略并隐藏.idea文件夹.iml文件不提交到svn
- Java 单例类
- 大数据系列文章-Hadoop基础介绍(一)
- Jupyter Notebook修改默认的工作目录