自适应滤波:奇异值分解SVD
作者:桂。
时间:2017-04-03 19:41:26
链接:http://www.cnblogs.com/xingshansi/p/6661230.html
【读书笔记10】
前言
广义逆矩阵可以借助SVD进行求解,这在上一篇文章已经分析。本文主要对SVD进行梳理,主要包括:
1)特征向量意义;
2)特征值分解与SVD;
3)PCA与SVD;
内容为自己的学习记录,其中多有借鉴他人之处,最后一并给出链接。
一、特征向量
第一反应是:啥是特征向量?为什么好好的一个矩阵,要拆成这个模样?先看定义
$Av = \lambda v$
矩阵对应线性变换,可以看到特征向量是这样:线性变换后,只伸缩,既不平移、也不旋转。如计算$A^5v$,可以直接用$\lambda^5 v$,省去多少计算?
维基百科有一张图很直观:

她的微笑是不是有熟悉的味道o(^▽^)o?不过这里不解读微笑,看红线→:矩阵线性变换后,方向也发生了改变,所以它不是特征向量; 蓝线→:线性变换之后,方向不变,所以是特征向量。由此也可见,特征向量是一个族,而不是独一无二的。
二、奇异值分解
A-特征值分解(EVD,Eigenvalues Decomposition)
这里分析酉矩阵,假设矩阵$\bf{B}$具有${\bf{B}} = {\bf{A}}{{\bf{A}}^H}$的形式,根据特征值定义:

根据酉矩阵特性:
${\bf{B}} = {\bf{U}}\Lambda {{\bf{U}}^H}$
这里仍然可以写成求和的形式,这也是显然的:酉矩阵张成的空间,就是每一个维度成分的叠加嘛。
B-奇异值分解(SVD,Singularly Valuable Decomposition)
根据矩阵变换特性:

其中$\bf{A}$是$m$x$n$的矩阵,$\bf{U_o}$为$m$x$m$,$\bf{V_o}$为$n$x$n$定义$\bf{B}$,并借助EVD进行分析:

因为是酉矩阵,从而${{\bf{U}}_o} = {\bf{U}}$。${\bf{\Sigma }}$为$m$x$n$,且,${s_i} = \sqrt {{\lambda _i}}, i=1,2,...min(m,n)$,至此完成$\bf{U_o}$和${\bf{\Sigma }}$的求解,还剩下$\bf{V_o}$。
对于${\bf{V_o}}$则有:
${\bf{AV_o}} = {\bf{U\Sigma }}$
即${{\bf{U}}^H}{\bf{A}} = {\bf{\Sigma }}{{\bf{V_o}}^H}$,因为有对角阵,转化为向量运算很方便,对于缺失的部分可以借助施密特正交化进行补全。
至此完成SVD分解。
总结SVD思路:
步骤一:利用$AA^H$求解矩阵$U$,并构造$S$;
步骤二:求解$V_o$,并借助施密特正交化构造完整的$V$。
特征值求解、施密特正交化,任何一本线性代数应该都有,所以这里假设特征值分解EVD、施密特正交化直接调用,给出SVD求解的代码(与svd指令等价):
a = [ 1 7 5
1 6 4
2 7 8
10 5 4]';
[E,D] = eig(a*a');
%预处理
[val,pos] = sort(diag(D),'descend');
E = E(:,pos);
D = diag(val);
mina = min(size(a));
%SVD分解
U = E; %完成U求解
S = zeros(size(a));
S(1:mina,1:mina) = diag(sqrt(val(1:mina)));%完成S求解
Vo = [U(:,1:mina)'*a]'./repmat(diag(S)',size(a,2),1);%求解Vo
V = [Vo null(Vo')];%完成V求解,补全正交基,可借助施密特正交化
三、PCA与SVD
根据上文分析,可以看出SVD或者EVD都可以分解出特征值以及特征向量。
再来回顾以前PCA一文的求解思路:
- 步骤一:数据中心化——去均值,根据需要,有的需要归一化——Normalized;
- 步骤二:求解协方差矩阵;
- 步骤三:利用特征值分解/奇异值分解 求解特征值以及特征向量;
- 步骤四:利用特征向量构造投影矩阵;
- 步骤五:利用投影矩阵,得出降维的数据。
PCA的核心就是根据特征值的大小/总的比例 确定对应特征向量的个数,从而构造投影矩阵。简而言之:有了特征值、特征向量,也就相当于有了PCA。
而EVD/SVD是得到特征值、特征向量的方式,可以说EVD/SVD是PCA的基础,PCA是二者的应用方式。
自适应滤波:奇异值分解SVD的更多相关文章
- 矩阵奇异值分解(SVD)及其应用
机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用(好文) [简化数据]奇异值分解(SVD) <数学之美> 第15章 矩阵运算和文本处理中的两个分类问题
- 转载:奇异值分解(SVD) --- 线性变换几何意义(下)
本文转载自他人: PS:一直以来对SVD分解似懂非懂,此文为译文,原文以细致的分析+大量的可视化图形演示了SVD的几何意义.能在有限的篇幅把这个问题讲解的如此清晰,实属不易.原文举了一个简单的图像处理 ...
- 特征值分解与奇异值分解(SVD)
1.使用QR分解获取特征值和特征向量 将矩阵A进行QR分解,得到正规正交矩阵Q与上三角形矩阵R.由上可知Ak为相似矩阵,当k增加时,Ak收敛到上三角矩阵,特征值为对角项. 2.奇异值分解(SVD) 其 ...
- 奇异值分解(SVD) --- 几何意义
原文:http://blog.sciencenet.cn/blog-696950-699432.html PS:一直以来对SVD分解似懂非懂,此文为译文,原文以细致的分析+大量的可视化图形演示了SVD ...
- 自适应滤波:最小均方误差滤波器(LMS、NLMS)
作者:桂. 时间:2017-04-02 08:08:31 链接:http://www.cnblogs.com/xingshansi/p/6658203.html 声明:欢迎被转载,不过记得注明出处哦 ...
- [机器学习笔记]奇异值分解SVD简介及其在推荐系统中的简单应用
本文先从几何意义上对奇异值分解SVD进行简单介绍,然后分析了特征值分解与奇异值分解的区别与联系,最后用python实现将SVD应用于推荐系统. 1.SVD详解 SVD(singular value d ...
- 【转载】奇异值分解(SVD)计算过程示例
原文链接:奇异值分解(SVD)的计算方法 奇异值分解是线性代数中一种重要的矩阵分解方法,这篇文章通过一个具体的例子来说明如何对一个矩阵A进行奇异值分解. 首先,对于一个m*n的矩阵,如果存在正交矩阵U ...
- 一步步教你轻松学奇异值分解SVD降维算法
一步步教你轻松学奇异值分解SVD降维算法 (白宁超 2018年10月24日09:04:56 ) 摘要:奇异值分解(singular value decomposition)是线性代数中一种重要的矩阵分 ...
- 机器学习实战(Machine Learning in Action)学习笔记————10.奇异值分解(SVD)原理、基于协同过滤的推荐引擎、数据降维
关键字:SVD.奇异值分解.降维.基于协同过滤的推荐引擎作者:米仓山下时间:2018-11-3机器学习实战(Machine Learning in Action,@author: Peter Harr ...
- 自适应滤波:维纳滤波器——FIR及IIR设计
作者:桂. 时间:2017-03-23 06:28:45 链接:http://www.cnblogs.com/xingshansi/p/6603263.html [读书笔记02] 前言 仍然是西蒙. ...
随机推荐
- Azure 基础:使用 powershell 创建虚拟网络
什么是虚拟网络 虚拟网络是您的网络在 Azure 云上的表示形式.您可以完全控制虚拟网络的 IP 地址.DNS 的设置.安全策略和路由表.您还可以更进一步,把虚拟网络划分为多个子网.然后用它们连接您的 ...
- $.each()遍历json数据
var json = [ {"id":"1","tagName":"apple"}, {"id":& ...
- 【java基础之jdk源码】Object
最新在整体回归下java基础薄弱环节,以下为自己整理笔记,若有理解错误,请批评指正,谢谢. java.lang.Object为java所有类的基类,所以一般的类都可用重写或直接使用Object下方法, ...
- android学习3——长宽的单位问题dp,px,dpi
android设备的单位px,pt,dp,sp 分辨率 先通俗说下分辨率的概念.可以把屏幕想想成一个个正方形格子组成的.如果横向有1280个格子,竖向有720个格子.那么分辨率就是1280*720.这 ...
- Windows内存管理简介:
1:连续的内存空间分配: (1)单一连续分配:只能单作业,单任务运行: 分为系统和用户区:用户区是指除了系统需外左右的内存,由于单用户,单任务,要不都被占用,要不全空 (2):固定空间分配:固定分 ...
- Redis实战与 Session缓存
C#操作Redis的库有很多,比如C# Redis Client就很好用, 在NuGet上搜索 ServiceStack.Redis 安装到项目中,将会添加以下引用 ServiceStack.Red ...
- 关于脚本化css
---恢复内容开始--- 想把自己认为的最重要的,最有用的几块写上,以后会边学边总结完善. 1.首先我们通过JavaScript可以获取到我们想要获取的元素的样式.而这个样式并非单独的哪一个部分的规则 ...
- c风格字符串,字符串字面值,c++字符串
C风格字符串:本质上就是以空字符null为结束符的数组 可以简单的理解为:有'\0'的是c风格字符串,无'\0'的是普通字符数组 字符串字面值:是一串常量字符,字符串字面值常量用双引号括起来的零个或多 ...
- H5移动端开发入门知识以及CSS的单位汇总与用法
说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...
- 微信小程序入门之构建一个简单TODOS应用
最近开始了解微信小程序,虽然小程序已经出了很久了,刚出的那段时间很火,看到很多关于小程序的技术文章,不过现在似乎没那么火了,anyway,我们还是可以学习下的. 一.了解微信小程序 1.理念:小程序开 ...