PCA在做数据处理,一般会有一个数据预处理,其中一个目标就是将取数据特征向相关性。

为什么要去特征的相关性?

因为数据如果有相关性,在学习的时候是冗余的,徒增学习成本;所以对于数据处理(也称之为白化,英文有的时候称之为sphering),白化的目的:1.实现特征之间的相关性较低;2.所有的特征具有相同的方差。

怎么去特征相关性,就是让他们的协方差为0,协方差,顾名思义,就是两组变量的协同性,如果两个变量的变化趋势是一致的,某个变量范围内,取值同样趋于增大、减少,这个时候,协方差就是正常,如果变化趋势相反,协方差就是正直;那么如果两个变量(函数)的变化趋势无关,协方差取值是0.

如果:E(X)=m,E(Y)=v,协方差公式如下:

cov(X,Y) = E((X-m)(Y-v)) = E(X*Y) - mv

如果E(X)和E(Y)两者独立,则协方差为0,这是因为:

E(X*Y) = E(X)E(Y) = mv

这里在深入讲一下,什么是期望?在学习概率的时候,前面几章都是在讲述分布(正态分布,0,1分布,T分布),分布讲述的数据的规律,期望讲述的一个值,用一个数来代表你的这些数集,这个就是期望,也称之为均值,我们看一下期望的公式:

 

你就会发现其实无论是离散的概率还是连续的期望都是计算求全平均,这就印证上面说的:找一个数来代表你的这个分布;在numpy的array里面有一个mean函数,就是计算期望的。

讲到期望,就要说一下中心化(centered),所谓中心化就是列之间的期望为0。或者说PCA认为各个点都是以原点为中心来进行分散的。

 

SVD:奇异值分解,Singular Value Decomposition.

他的思路就是将一个矩阵(无论多复杂)用三个矩阵相乘得来:

其中M就是原始矩阵,U是M.dot(M.T)的特征向量,V是M.T.dot(M)的向量,Sigma就是一个对角矩阵。里面的元素就是奇异值。

关于矩阵乘法和特征值

矩阵的乘法(dot)本质其实是将一个矩阵中的向量从长度(伸缩)到方向(旋转)进行转变;如果一个M.dot(N),只是有伸缩但是没有旋转,那么这个N就是M的特征向量。

那么回归本源,什么是特征值,特征向量?

对于矩阵A,如果存在数m以及向量x,满足Ax=mx,则成m为A的特征值,x是矩阵A对于m特征值的特征向量。

PCA中的核函数

很多时候,降维是为了减少数据量,提高运算速度;但是有的时候低维度的数据不好对数据进行划分,这个时候需要将数据提高维度,很多时候,高纬度数据反而更好找到super plane来对数据进行划分,那么核函数就是做这件事情的,通过提高维度来进行数据划分,将底维数据向高维数据做映射的函数,就是"核函数(kernel function)"。在sklearn里面就有KernelPCA用于为PCA指定核函数。

提到了PCA一定要提一下无偏估计。因为PCA的有一部分就是就协方差的。

方差嘛,本来应该是[X-E(X)]**2,但是主要,你现在出列都是矩阵,所以如果想要实现平方,是需要和他的转置矩阵相乘来处理的。

 

 

参考:

关于SVD很硬的一篇博客

https://www.cnblogs.com/lzllovesyl/p/5243370.html

PCA原理解释(二)的更多相关文章

  1. PCA原理解释

      上图讲述的两组数据,可以看到左图的数据离散度比较大,相关性比较弱,右图数据的相关性比较强:我们在使用PCA的时候,就是要将相关性强的数据进行降维,以减少处理的数据量. 那么怎么描述数据的相关性呢? ...

  2. PCA原理与实践

    在对数据进行预处理时,我们经常会遇到数据的维数非常之大,如果不进行相应的特征处理,那么算法的资源开销会很大,这在很多场景下是我们不能接受的.而对于数据的若干维度之间往往会存在较大的相关性,如果能将数据 ...

  3. Kernel PCA 原理和演示

    Kernel PCA 原理和演示 主成份(Principal Component Analysis)分析是降维(Dimension Reduction)的重要手段.每一个主成分都是数据在某一个方向上的 ...

  4. 主成分分析(PCA)原理与实现

    主成分分析原理与实现   主成分分析是一种矩阵的压缩算法,在减少矩阵维数的同时尽可能的保留原矩阵的信息,简单来说就是将 \(n×m\)的矩阵转换成\(n×k\)的矩阵,仅保留矩阵中所存在的主要特性,从 ...

  5. 降维算法----PCA原理推导

    1.从几何的角度去理解PCA降维 以平面坐标系为例,点的坐标是怎么来的? 图1                                                             ...

  6. 深入源码分析SpringMVC底层原理(二)

    原文链接:深入源码分析SpringMVC底层原理(二) 文章目录 深入分析SpringMVC请求处理过程 1. DispatcherServlet处理请求 1.1 寻找Handler 1.2 没有找到 ...

  7. JVM 内部原理(二)— 基本概念之字节码

    JVM 内部原理(二)- 基本概念之字节码 介绍 版本:Java SE 7 每位使用 Java 的程序员都知道 Java 字节码在 Java 运行时(JRE - Java Runtime Enviro ...

  8. Objective-C中,ARC下的 strong和weak指针原理解释

    Objective-C中,ARC下的 strong和weak指针原理解释 提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是& ...

  9. 机器学习之主成分分析PCA原理笔记

    1.    相关背景 在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律.多变量大数据集无疑会为研究和应用提供丰富的信息,但是也在一定程度上增加了数据采集的 ...

随机推荐

  1. JavaWeb:c3p0配置问题-----java.sql.SQLException: Connections could not be acquired from the underlying database!

    错误原因 c3p0的配置错误 错误显示 -classpath "D:\Program\Software\IntelliJIDEA\IntelliJ IDEA 2018.2.5\lib\ide ...

  2. Day14作业及默写

    1.整理今天所学内容,整理知识点,整理博客. pass 2.画好流程图. pass 3.都完成的做一下作业(下面题都是用内置函数或者和匿名函数结合做出): pass 4.用map来处理字符串列表,把列 ...

  3. 利用python实现电影推荐

    "协同过滤"是推荐系统中的常用技术,按照分析维度的不同可实现"基于用户"和"基于产品"的推荐. 以下是利用python实现电影推荐的具体方法 ...

  4. Tomcat jdk 项目搭建问题

    Tomcat 出现log4j未找到  是因为缺少servlet包 出现版本1.5及更高错误 是Java Compiler的版本错误 需重新导包Installed JRES.

  5. certbot自动在ubuntu16.04的nginx上部署let's encrypt免费ssl证书

    终结CA收费时代,让互联网更安全 Install On Ubuntu systems, the Certbot team maintains a PPA. Once you add it to you ...

  6. POJ 3461 Oulipo(KMP裸题)

    Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, without t ...

  7. iOS原生和React-Native之间的交互2

    今天看下iOS原生->RN: 这里有个问题: * 我这里只能通过rn->ios->rn来是实现* 如果想直接ios-rn 那个iOS中的CalendarManager的self.br ...

  8. XML Schema——笔记整理

    什么是 XML Schema? 定义可出现在文档中的元素 定义可出现在文档中的属性 定义哪个元素是子元素 定义子元素的次序 定义子元素的数目 定义元素是否为空,或者是否可包含文本 定义元素和属性的数据 ...

  9. [LeetCode&Python] Problem 746. Min Cost Climbing Stairs

    On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay ...

  10. CodeForces - 710F:String Set Queries (二进制分组 处理 在线AC自动机)

    ou should process m queries over a set D of strings. Each query is one of three kinds: Add a string ...