通过数据压缩(降维)可以减少特征数量,可以降低硬盘和内存的存储,加快算法的训练。

还可以把高维的数据压缩成二维或三维,这样方便做数据可视化。

数据压缩是通过相似或者相关度很高的特征来生成新的特征,减少特征数量。例如,上图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)的更多相关文章

  1. 主成分分析(PCA)特征选择算法详解

    1. 问题 真实的训练数据总是存在各种各样的问题: 1. 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余. 2. 拿到 ...

  2. 深入学习主成分分析(PCA)算法原理(Python实现)

    一:引入问题 首先看一个表格,下表是某些学生的语文,数学,物理,化学成绩统计: 首先,假设这些科目成绩不相关,也就是说某一科目考多少分与其他科目没有关系,那么如何判断三个学生的优秀程度呢?首先我们一眼 ...

  3. 主成分分析(PCA)算法,K-L变换 角度

    主成分分析(PCA)是多元统计分析中用来分析数据的一种方法,它是用一种较少数 量的特征对样本进行描述以达到降低特征空间维数的方法,它的本质实际上是K-L变换.PCA方法最著名的应用应该是在人脸识别中特 ...

  4. 【转】浅谈对主成分分析(PCA)算法的理解

    以前对PCA算法有过一段时间的研究,但没整理成文章,最近项目又打算用到PCA算法,故趁热打铁整理下PCA算法的知识.本文观点旨在抛砖引玉,不是权威,更不能尽信,只是本人的一点体会. 主成分分析(PCA ...

  5. PCA主成分分析算法的数学原理推导

    PCA(Principal Component Analysis)主成分分析法的数学原理推导1.主成分分析法PCA的特点与作用如下:(1)是一种非监督学习的机器学习算法(2)主要用于数据的降维(3)通 ...

  6. 主成分分析(PCA)原理总结

    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...

  7. 主成分分析(PCA)原理及R语言实现

    原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及 ...

  8. A tutorial on Principal Components Analysis | 主成分分析(PCA)教程

    A tutorial on Principal Components Analysis 原著:Lindsay I Smith, A tutorial on Principal Components A ...

  9. 主成分分析(PCA)原理及R语言实现 | dimension reduction降维

    如果你的职业定位是数据分析师/计算生物学家,那么不懂PCA.t-SNE的原理就说不过去了吧.跑通软件没什么了不起的,网上那么多教程,copy一下就会.关键是要懂其数学原理,理解算法的假设,适合解决什么 ...

随机推荐

  1. 关于SSH的那些事

    SSH: Secure Shell Protocol  (安全外壳协议) Secure Shell,又可记为安全外壳协议(SSH) Secure Shell,又可记为安全外壳协议(SSH),最初是UN ...

  2. win10x64 批处理自动安装打印机

    系统版本:Windows 10企业版 64位(10.0 ,版本17134)- 中文(简体) 话不多说,直接上脚本: REM 提升管理员权限 @echo off chcp 65001 >nul s ...

  3. 关于微信小程序分享提示{"errMsg":"config:ok"}

    提示 {"errMsg":"config:ok"} {errMsg: "onMenuShareTimeline:ok"} {errMsg: ...

  4. Python——SQL——将查询的数据列表化

    sql = 'select paihao from yang1.cailiaopai' data = datebase.shujuku.sj_select(sql) #将获得的数据进行列表化 data ...

  5. Java 写 Log

    . 一个最基本的例子 使用Logging框架写Log基本上就三个步骤 引入loggerg类和logger工厂类 声明logger 记录日志 下面看一个例子 //1. 引入slf4j接口的Logger和 ...

  6. 【NLP】选择目标序列:贪心搜索和Beam search

    构建seq2seq模型,并训练完成后,我们只要将源句子输入进训练好的模型,执行一次前向传播就能得到目标句子,但是值得注意的是: seq2seq模型的decoder部分实际上相当于一个语言模型,相比于R ...

  7. python的局部变量,全局变量,类变量,实例变量

    定义: a.全局变量:在模块内.在所有函数外面.在class外面,这就是全局变量. b.局部变量:在函数内.在class的方法内(未加self修饰的),这就是局部变量. c. 静态变量:在class内 ...

  8. 使用Excel批量提取文件名

    Excel中如何快速选择所有奇数行或偶数行? 方法3:=MOD(ROW(),2) 总结:方法1和方法2的区别主要在ctrl键的使用 轻松将一个文件夹里所有的文件名提取出来,放到Excel表格里 &qu ...

  9. P1744 采购特价商品

    原题链接 https://www.luogu.org/problemnew/show/P1744 一道最短路的模板题.....很简单吧 求最短路的方法有很多,但是对于刚学完Floyd的我,只会用这个. ...

  10. Luogu4494 [HAOI2018]反色游戏 【割顶】

    首先发现对于一个联通块有奇数个黑点,那么总体来说答案无解.这个很容易想,因为对每个边进行操作会同时改变两个点的颜色,异或值不变. 然后一个朴素的想法是写出异或方程进行高斯消元. 可以发现高斯消元的过程 ...