引用:https://blog.csdn.net/program_developer/article/details/80632779

将n维特征映射到k维上,只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

PCA算法有两种实现方法:基于特征值分解协方差矩阵实现PCA算法、基于SVD分解协方差矩阵实现PCA算法。

针对第一种方案基于特征值分解协方差,步骤为:

1:对原始矩阵X进行去平均值

2:求原始矩阵的协方差

3:根据协方差矩阵计算特征值和对应的特征向量和标准化特征向量

4:根据特征值,将对应的标准化特征向量进行排序,每个特征向量写作行向量P

5:最终降维结果:Y=Pk*X

如计算:

1首先去平均值,每一位特征减去各自的平均值。平均值为0,减0仍为原值。

2之后计算协方差,。得协方差矩阵。

3然后根据0,求得(5/6-λ)^2=16/25。求得λ:。根据,得当λ=2,X1=X2。令X1=1,则X2=1,特征向量P1=[1;1],同理,P2=[1;-1].然后求出P1和P2的标准特征向量。组成P。

4根据特征值,进行排序并写作行向量:,降到1维,则取第一行

5最终降维

针对第二种方案基于SVD分解协方差:

1:对原始矩阵X进行去平均值

2:根据SVD计算特征值和对应的特征向量和标准化特征向量

3:根据特征值,将对应的标准化特征向量进行排序,每个特征向量写作行向量P

4:最终降维结果:Y=Pk*X

选择左奇异矩阵,进行使用,然后求得协方差矩阵的特征值与特征向量。

引用:https://link.zhihu.com/?target=https%3A//mp.weixin.qq.com/s/Dv51K8JETakIKe5dPBAPVg

SVD分解的算法过程为:

针对任意矩阵A,分解为:。U为A的行为参照的方阵,为左奇异矩阵。Σ和A的行列相同,除了对角线其它元素都为0。V为A的列为参照的方阵,为右奇异矩阵。

分解的步骤为:

1求出:,设为M,作为U的计算准备。,设为N作为V的计算准备。

2针对M矩阵求出特征值,特征向量。针对N矩阵求出特征值,特征向量。并将所求特征向量标准化为ui和vi。

3利用根据ui和vi求出σ的所有值。

4将所有值进行归并,求出表达式。并利用U获得原始A的特征值,特征向量。

例如:计算

使用MATLAB的算法:

clear all,clc;
A=[[-1,1];[-2,-1];[-3,-2];[1,1];[2,1];[3,2]];
A_mean=A-mean(A);#去平均值
A_div=A_mean;
M=A_div'*A_div;
N=A_div*A_div';
[M_vector,M_val]=eig(M);
[N_vector,N_val]=eig(N); M_vector=fliplr(M_vector);
N_vector=fliplr(N_vector);
%M_vector=flipud(M_vector)
%N_vector=flipud(N_vector) M_val=diag(M_val);
N_val=diag(N_val);
M_val=flipud(M_val)
N_val=flipud(N_val) theta1=sqrt(M_val(1));
theta2=sqrt(M_val(2));
cgma=zeros(size(A));
cgma(1,1)=theta1;
cgma(2,2)=theta2;
%-(N_vector*cgma*M_vector')
-N_vector*cgma

  取第一列即获得了降维哦!

主成分分析法详解(PCA)的更多相关文章

  1. RAII惯用法详解

    [1]什么是RAII惯用法? RAII是Resource Acquisition Is Initialization的缩写,意为“资源获取即初始化”. 它是C++之父Bjarne Stroustrup ...

  2. PCA (主成分分析)详解 (写给初学者) 结合matlab(转载)

    一.简介 PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法,大家知道,我们在处理有关数字图像处理方面的问题时,比如经常用的图像的查询问题 ...

  3. PCA (主成分分析)详解——转载 古剑寒

    转载地址:http://my.oschina.net/gujianhan/blog/225241 另外可以参考相关博文:http://blog.csdn.net/neal1991/article/de ...

  4. 【建模应用】PCA主成分分析原理详解

    原文载于此:http://blog.csdn.net/zhongkelee/article/details/44064401 一.PCA简介 1. 相关背景 上完陈恩红老师的<机器学习与知识发现 ...

  5. SLAM入门之视觉里程计(6):相机标定 张正友经典标定法详解

    想要从二维图像中获取到场景的三维信息,相机的内参数是必须的,在SLAM中,相机通常是提前标定好的.张正友于1998年在论文:"A Flexible New Technique fro Cam ...

  6. KKT条件和拉格朗日乘子法详解

    \(\frac{以梦为马}{晨凫追风}\) 最优化问题的最优性条件,最优化问题的解的必要条件和充分条件 无约束问题的解的必要条件 \(f(x)\)在\(x\)处的梯度向量是0 有约束问题的最优性条件 ...

  7. HS 光流法详解

    前言 本文较为详细地介绍了一种经典的光流法 - HS 光流法. 光流法简介 当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像信息不断 &quo ...

  8. 扩展欧几里得算法详解(exgcd)

    一.前言 本博客适合已经学会欧几里得算法的人食用~~~ 二.扩展欧几里得算法 为了更好的理解扩展欧几里得算法,首先你要知道一个叫做贝祖定理的玄学定理: 即如果a.b是整数,那么一定存在整数x.y使得$ ...

  9. 光流法详解之一(LK光流)

    Lucas–Kanade光流算法是一种两帧差分的光流估计算法.它由Bruce D. Lucas 和 Takeo Kanade提出 [1]. LK光流法有三个假设条件: 1. 亮度恒定:一个像素点随着时 ...

随机推荐

  1. mui 二维码扫描功能

    mui 扫一扫识别二维码 以及多次扫码后从结果页返回时黑屏问题解决  扫一扫页面全部代码 <!doctype html><html>     <head>      ...

  2. python学习之路(21)

    偏函数 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函数参数的时候,我们讲 ...

  3. C++入门经典-例3.21-goto语句实现循环

    1:代码如下: // 3.21.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...

  4. SpringBoot整合kafka(安装)

    项目路径:https://github.com/zhaopeng01/springboot-study/tree/master/study_14 序言 Kafka 是一种高吞吐的分布式发布订阅消息系统 ...

  5. hdjs---1、hdjs爬坑杂记

    hdjs---1.hdjs爬坑杂记 一.总结 一句话总结: 对hdjs这种文档和完善都不是很好的插件,应该先在项目的空页面试,成功后再用到用了框架的项目中 1.hdjs4.0.18引入select2? ...

  6. wls12C启用Gzip

    https://community.oracle.com/message/14109820 https://docs.oracle.com/middleware/1221/wls/NOTES/what ...

  7. loggin模块,错误日志模块

    # 记录用户行为或者报错信息 import logging # 配置错误日志有两种方法 # 方法1:通过basicconfig # 配置简单.但是能做的事情少,解决不了中文乱码,不能同时输出到屏幕和文 ...

  8. leetcode 17电话号码的字母组合

    与子集70?类似,子集每次两个分支,本题每次k个分支,子集是第一次不push第二次push元素,本题是每次都push元素,因此,本题答案的长度都为k,子集题目为各种组合: /** res,level, ...

  9. spring BeanUtils.copyProperties只拷贝不为null的属性

    在MVC的开发模式中经常需要将model与pojo的数据绑定,apache和spring的工具包中都有BeanUtils,使用其中的copyProperties方法可以非常方便的进行这些工作,但在实际 ...

  10. react-native 环境安装常见问题

    npm install react-native-cli -g react-native init yourproject npm install react-native run-ios 问题1:卡 ...