主成分分析算法(PCA)
通过数据压缩(降维)可以减少特征数量,可以降低硬盘和内存的存储,加快算法的训练。
还可以把高维的数据压缩成二维或三维,这样方便做数据可视化。
数据压缩是通过相似或者相关度很高的特征来生成新的特征,减少特征数量。例如,上图x1是厘米,x2是英寸,这两个特征相关度很高,可以压缩成一个特征。
======================================
主成分分析(Principal Component Analysis, PCA)是常用的降维算法。
例如,要将二维数据压缩成一维数据,需要找到一个向量,使所有样本到该向量的投影误差(projection error)最小。
PCA不是线性回归,线性回归的差值是预测值和实际值的差,PCA的差值是样本到向量的投影误差。
线性回归需要用到标签,而PCA不需要用到标签。
======================================
在使用PCA算法前需要对数据进行预处理(每一个特征的均值要为0)。
首先需要计算协方差矩阵: sigma = (1/m) * X' * X
然后需要计算sigma的特征向量。 svd函数是奇异值分解(相关连接:https://www.cnblogs.com/pinard/p/6251584.html)
注意:每个特征的均值要为0,特征缩放是可选的。
svd返回的U是nxn维矩阵,前k列的矩阵称为Ureduce(nxk)。
Zi = Ureduce' * Xi
======================================
如何把压缩数据解压缩还原到原来的维度?
X(i)approx = Ureduce * Z(i)
======================================
如何选择合适的k值?即特征应该从n维降低到哪个维度?
1 - 投影误差的均方 / 总偏差 = 保留的样本差异(?% of variance is retained)
通常均方投影误差除以总偏差不大于0.01,0.05或0.10
在向别人描述降维结果的时候不是说从n维降低到了k维,而是说保留了多少百分比的样本差异。
======================================
注意:PCA不适合用于处理过拟合。
主成分分析算法(PCA)的更多相关文章
- 主成分分析(PCA)特征选择算法详解
1. 问题 真实的训练数据总是存在各种各样的问题: 1. 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余. 2. 拿到 ...
- 深入学习主成分分析(PCA)算法原理(Python实现)
一:引入问题 首先看一个表格,下表是某些学生的语文,数学,物理,化学成绩统计: 首先,假设这些科目成绩不相关,也就是说某一科目考多少分与其他科目没有关系,那么如何判断三个学生的优秀程度呢?首先我们一眼 ...
- 主成分分析(PCA)算法,K-L变换 角度
主成分分析(PCA)是多元统计分析中用来分析数据的一种方法,它是用一种较少数 量的特征对样本进行描述以达到降低特征空间维数的方法,它的本质实际上是K-L变换.PCA方法最著名的应用应该是在人脸识别中特 ...
- 【转】浅谈对主成分分析(PCA)算法的理解
以前对PCA算法有过一段时间的研究,但没整理成文章,最近项目又打算用到PCA算法,故趁热打铁整理下PCA算法的知识.本文观点旨在抛砖引玉,不是权威,更不能尽信,只是本人的一点体会. 主成分分析(PCA ...
- PCA主成分分析算法的数学原理推导
PCA(Principal Component Analysis)主成分分析法的数学原理推导1.主成分分析法PCA的特点与作用如下:(1)是一种非监督学习的机器学习算法(2)主要用于数据的降维(3)通 ...
- 主成分分析(PCA)原理总结
主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...
- 主成分分析(PCA)原理及R语言实现
原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及 ...
- A tutorial on Principal Components Analysis | 主成分分析(PCA)教程
A tutorial on Principal Components Analysis 原著:Lindsay I Smith, A tutorial on Principal Components A ...
- 主成分分析(PCA)原理及R语言实现 | dimension reduction降维
如果你的职业定位是数据分析师/计算生物学家,那么不懂PCA.t-SNE的原理就说不过去了吧.跑通软件没什么了不起的,网上那么多教程,copy一下就会.关键是要懂其数学原理,理解算法的假设,适合解决什么 ...
随机推荐
- gradle配置国内镜像
对单个项目生效,在项目中的build.gradle修改内容 buildscript { repositories { maven { url 'http://maven.aliyun.com/nexu ...
- 在C++中定义常量
在 C++ 中,有两种简单的定义常量的方式: 使用 #define 预处理器. 使用 const 关键字 使用 #define 预处理器: #define identifier value: #inc ...
- WordPress博客搭建与问题总结
一.WordPress博客搭建 1.安装Apache web服务器 yum install -y httpd systemctl restart httpd systemctl enable ht ...
- web开发中各种宽高
Gosper 曲线:https://www.cnblogs.com/tgzhu/p/8286616.html
- git总结三、关于分支下——团队合作中最重要的合并分支
合并分支是团队合作开发中常见的操作,这里涉及到两个命令:git merge 和 git rebase 下面来好好说一下git merge和git rebase都是怎样工作的 一. 1.新建一个空目录并 ...
- JQ倒计时,正计时
<p class="lastP">距离二维码过期还剩<strong></strong>秒,过期后自动刷新页面.</p><scr ...
- NodeJS脚本启动工具总结
1. 使用npm 2. 使用pm2 安装: npm install pm2 -g 启动: NODE_ENV=test pm2 start newsCrawler.js 停止: pm2 stop new ...
- LODOP打印当前日期时间的方法
JS方法直接获取.之前有个详细介绍的博文:LODOP打印用JS获取的当前日期本文也再演示一下,详细介绍见上面链接的博文,该方法此文不做详细介绍. 本文有三段:1.JS获取日期,2,.LODOP的FOR ...
- memcache+tp3.2实现消息队列
){)){ ){));} $this->unLock();$this->resetSide('A');$this->resetSide('B');return true;} /* * ...
- hdu-4635(tarjan缩点)
题意:先给你一个n个点,m条边的有向图,问你最多能够增加多少条边,使得这个图不是一个强连通图 解题思路:考虑最多要添加的边数,所以如果能把初始图划分成两个部分,每个部分都是完全图,这两个部分分别用单向 ...