主成分分析算法(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一下就会.关键是要懂其数学原理,理解算法的假设,适合解决什么 ...
随机推荐
- Trie树(字典树)推荐文章
Trie树也被称为字典树,通过这个名字,可以明显知道这种树的结构:像字典一样进行查找的树(想想采用拼音法查找汉字的时候的过程,实质上就是一个逐字母匹配的过程).Trie树就是利用了这种思想构造出来的多 ...
- java.util.NoSuchElementException错误原因及解决方案
1.原因:没有控制语句导致的迭代器的越界,使得map中的数据无法传入reduce,从而无法把结果传入目标文件中. 在进行Mapreduce实例——WordCount实验时遇到的错误,开始以为是lib包 ...
- web 应用常见安全漏洞
1. SQL 注入 SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令. SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化. 原因 当使用外部不可 ...
- Linux(Ubuntu)使用日记------Mongodb的安装与使用
1.安装 Linux下安装mongodb还是比较容易的 直接使用apt-get安装即可,命令如下: sudo apt-get install mongodb 安装完成之后进行检验, “mongo sh ...
- python高级编程笔记一 正则表达式
事例
- 在中断服务函数中使用FreeRTOS系统延时函数vTaskDelay导致看门狗复位的情况
@2019-04-09 [问题] 控制程序工作一段时间异常重启 [分析] 经定位分析重启原因为看门狗复位导致 [解决] 经排查发现在中断服务函数中使用了FreeRTOS的系统时延函数vTaskDela ...
- openflow packet_out和packet_in分析
任务目的 1. 掌握OpenFlow交换机发送Packet-in消息过程及其消息格式. 2. 掌握OpenFlow控制器发送Packet-out消息过程及其消息格式. 实验原理 Packet-In 使 ...
- (转)spring异常抛出触发事务回滚策略
背景:在面试时候问到事务方法在调用过程中出现异常,是否会传递的问题,平时接触的比较少,有些懵逼. spring异常抛出触发事务回滚策略 Spring.EJB的声明式事务默认情况下都是在抛出unchec ...
- 互相关(cross-correlation)及其在Python中的实现
互相关(cross-correlation)及其在Python中的实现 在这里我想探讨一下“互相关”中的一些概念.正如卷积有线性卷积(linear convolution)和循环卷积(circular ...
- Python菜鸟快乐游戏编程_pygame(4)
Python菜鸟快乐游戏编程_pygame(博主录制,2K分辨率,超高清) https://study.163.com/course/courseMain.htm?courseId=100618802 ...