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. 2019-02-25 EST 科技文翻译

    The Definition of Theme and Rheme The point of departure is equally presented to the speaker and to ...

  2. 五、LCD屏填充纯色

    废话不说,直接上代码: lcd.c #include "lcd.h" static int PEN_COLOR = LCD_RED; /* 定义画笔(前景)颜色 */ static ...

  3. linux下关于PCL(point cloud library)库的安装,三行命令错误的问题

    最近想再看看PCL,所以进行了安装,在之前的接触的过程中,由于之前的网络存在问题,导致以下三个命令: sudo add-apt-repository ppa:v-launchpad-jochen-sp ...

  4. Python 面向对象和面向过程对比

    # 大象装冰箱 # 脚本, 此时代码是最简单的. 不需要构思整个程序的概况 print("开门") print("装大象") print("关门&qu ...

  5. 【Python】socket编程-2

    #练习3:TCP协议+while循环 服务端: import socket #socket模块 import sys reload(sys) sys.setdefaultencoding(" ...

  6. 2017常见的50道java基础面试题整理(附答案)

    1.作用域public,private,protected,以及不写时的区别 答: 区别如下: 2.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是 ...

  7. React Natived打包报错java.io.IOException: Could not delete path '...\android\support\v7'解决

    问题详情 React Native打包apk时在第二次编译时候报错: java.io.IOException: Could not delete path 'D:\mycode\reactnative ...

  8. JAVA中日期和时间的格式化选项

    一.使用printf方法 import java.util.Date; import java.util.Scanner; public class Test { public static void ...

  9. BT原理分析

    BT全名為BitTorrent,是一個p2p軟件,你在下載download的同時,也在為其他用戶提供上傳upload,因為大家是「互相幫助」,所以不會隨著用戶數的增加而降低下載速度. 其實跟ED也十分 ...

  10. python 和 matlab的caffe读数据细节

    (1).prototxt中的输入表示一样,如 dim: 10 dim: 3 dim: 227 dim: 227 (2)代码喂入数据不一样: python:     input_blob = np.ze ...