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

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

数据压缩是通过相似或者相关度很高的特征来生成新的特征,减少特征数量。例如,上图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. Elastic Stack-Elasticsearch使用介绍(二)

    一.前言     写博客,更要努力写博客! 二.Mapping介绍 Mapping类似于数据库中的表结构的定义:这里我们试想一下表结构定义需要那些: 1.字段和字段类型,在Elasticsearch中 ...

  2. 揽货最短路径解决方案算法 - V2(增加了时间维度-客户允许的服务时间段,C#/JAVA同步实现,带python作图)

    继上篇,这里改进增加了客户允许服务的时间范围这个维度,并且把C#版本翻译成java,加强了更加形象的图表展示路径(继续是用python的matplotlib作图). 这里的时间范围维度是指:每个客户都 ...

  3. iview table内渲染proptip组件

    渲染proptip组件 columns: [{ title: '产品图', key: 'pic', sortable: true, render: function(h, para){ return ...

  4. redis 开启远程访问权限

    1 开启redis端口访问权限 redis默认的端口是6379,要远程访问redis服务,确保服务器上的6379端口打开. 1.1 查看打开的端口 /etc/init.d/iptables statu ...

  5. Ajax设置自定义请求头的两种方法

    用自定义请求头token为例 方法一 $.ajax({ type: "post", url:"http://127.0.0.1:4564/bsky-app/templat ...

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

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

  7. nuxt npm run dev 报错Solution to the "Error: listen EADDRINUSE 127.0.0.1:8080"

    Solution to the "Error: listen EADDRINUSE 127.0.0.1:8080" Hello, Just sharing a solution t ...

  8. postman随机生成数

    postman做重复测试时,随机数就有很大的作用,不用每次都输入 在postman的Params中,输入一个左大括号,会显示三种随机数: 也可以在body中设置 随机数如下: {{$guid}}:添加 ...

  9. unittest 框架-待优化

    模块1 :getdata.py 读取测试用例test_case.xlsx,返回测试用例结果 import json from openpyxl import load_workbook class D ...

  10. [面试]synchronized

    synchronized 把面试中遇到的问题进行了整理. 本篇文章copy+整理自: 1. http://www.cnblogs.com/lingepeiyong/archive/2012/10/30 ...