【深度学习】奇异值分解与Moore-Penrose伪逆
- 奇异值分解
- Moore-Penrose伪逆
- PCA
- python实现PCA
- 参考资料
奇异值分解
A = U D V^T
其中 AA是一个m×nm \times n的矩阵, UU是一个m×mm \times m矩阵, DD是一个m×nm \times n的矩阵, VV是一个n×nn \times n矩阵。 UU和VV是正交矩阵, DD是对角矩阵。D的对角线元素就是奇异值。UU和 VV的列向量称为左右奇异向量。
实际上对应特征值与奇异值有如下关系:
(A^T A)\nu_i = \lambda_i\nu_i其中
\sigma_i = \sqrt{\lambda_i}
\mu_i = \frac{1}{\sigma_i}A\nu_i σ\sigma是奇异值, μ\mu是左奇异向量, ν\nu是右奇异向量。
在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前 rr大的奇异值来近似描述矩阵。
Moore-Penrose伪逆
若有AA与其左逆 BB,有
Ax = y以及
x=By,则Moore-Penrose伪逆为
A^+ = VD^+U^T DD的伪逆为非零元素取倒数之后再转置得到。
AA的列数大于行数,得到就是所有可行解中 L2L_2范数最小的一个,如果相反,就是 L2(Ax−y)L_2(Ax - y)最小。
PCA
计算步骤
1. 计算均值并减去均值
2. 计算协方差矩阵
3. 求协方差的特征值和特征向量
4. 将特征值按照从大到小的顺序排序,选择其中最大的kk个,然后将其对应的kk个特征向量分别作为列向量组成特征向量矩阵
5. 将样本点投影到选取的特征向量上
reconMat = dataMat \times FeatureVector
python实现PCA
import numpy as npdef calMean(dataMat):"""dataMat: 原数据return:mean: 均值newData: 原数据 - 均值"""mean = np.mean(dataMat,axis = 0)newData = dataMat - meanreturn newData, meandef getK(eigVals, percentage):"""确定选择k多少"""sortEigvals = np.sort(eigvals)sortEigvals = sortEigvals[-1::-1]sum = sum(sortEigvals)temSum = 0for k, eigval in enumerate(sortEigvals):temSum += eigvalif temSum >= sum * percentage:return kdef pca(dataMat,percentage=0.99): newData,mean=calMean(dataMat) covMat=np.cov(newData,rowvar=0) #求协方差矩阵,return ndarray;若rowvar非0,一列代表一个样本,为0,一行代表一个样本 eigVals,eigVects=np.linalg.eig(np.mat(covMat))#求特征值和特征向量,特征向量是按列放的,即一列代表一个特征向量 k=getK(eigVals,percentage) #要达到percent的方差百分比,需要前n个特征向量 eigValIndice=np.argsort(eigVals) #对特征值从小到大排序 k_eigValIndice=eigValIndice[-1:-(k+1):-1] #最大的n个特征值的下标 k_eigVect=eigVects[:,k_eigValIndice] #最大的n个特征值对应的特征向量 lowDataMat=newData*k_eigVect #低维特征空间的数据 reconMat=(lowDataMat*k_eigVect.T)+meanVal #重构数据 return lowDataMat,reconMat
参考资料
- 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- 《深度学习》花书
【深度学习】奇异值分解与Moore-Penrose伪逆相关推荐
- Moore–Penrose伪逆
设A∈Cm×n\mathbf{A}\in\mathbb{C}^{m\times n}A∈Cm×n,若存在n×mn\times mn×m的矩阵G\mathbf{G}G,同时满足 (1)AGA=A\mat ...
- 机器学习及深度学习中的符号说明
文章目录 数和数组 集合和图 索引 线性代数中的操作 微积分 概率和信息论 函数 数据集和分布 数和数组 a a a 标 量 ( 整 数 或 实 数 ) 标量(整数或实数) 标量(整数或实数) a \ ...
- 清华大学公开课线性代数2——第6讲:伪逆
此博客停止更新,迁移至SnailDove's blog,查看本文请点击此处,清华大学线性代数2笔记汇总:线性代数总结 笔记源自:清华大学公开课:线性代数2--第6讲:伪逆 **提示:**如果文中图片看 ...
- 线性代数笔记34——左右逆和伪逆
原文 | https://mp.weixin.qq.com/s/PRQQvSfmipxPBeF80aEQ1A 一个矩阵有逆矩阵的前提是该矩阵是一个满秩的方阵.然而很多时候遇到的都是长方矩阵,长方矩阵是 ...
- 学习笔记DL007:Moore-Penrose伪逆,迹运算,行列式,主成分分析PCA
2019独角兽企业重金招聘Python工程师标准>>> Moore-Penrose伪逆(pseudoinverse). 非方矩阵,逆矩阵没有定义.矩阵A的左逆B求解线性方程Ax=y. ...
- 伪逆学习自动编码器射频干扰去除 Radio frequency interference mitigation using pseudo-inverse learning auto-encoders
Radio frequency interference mitigation using pseudo-inverse learning auto-encoders [RAA 2020] [pdf] ...
- 单摄像头+深度学习实现伪激光雷达,代码已开源
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 上次介绍了双目摄像头如何估计深度的方案.老板表示两个摄像头还是有点贵呀,只用一个能不能做?嗯,没问题! ...
- 线性代数学习笔记10-4:左右逆、伪逆/M-P广义逆(从四个子空间和SVD角度理解)
下面讨论m×nm\times nm×n的秩为rrr的矩阵 对于不同情况,讨论逆矩阵 两侧逆矩阵 2-sided inverse 这也是一般所说的"逆矩阵"的含义 方阵A\bolds ...
- 百度深度学习paddlepaddle7日打卡——Python小白逆袭大神学习心得
百度深度学习paddlepaddle7日打卡--Python小白逆袭大神学习心得 7日学习总结 第一天作业 第二天作业 第三天作业 第四天作业 第五天作业 7日学习总结 通过这7日打卡课程的学习,从小 ...
最新文章
- NIPS改名为NeurIPS的原因
- Java集合源码学习(四)HashMap
- HANA数据库为何如此之快
- linux rc.d的作用,init.d,rc.d详解 Linux运行时详解
- 【渝粤教育】电大中专混凝土结构作业 题库
- STM32之端口复用与重映射
- ExtJS(MVC)+PHP(ThinkPHP)+MySql5.0 开发框架准备阶段--mySql篇
- Windows 底层驱动级 Anti-Rootkit 工具 ScDetective 源代码
- Docker 更新版本
- OpenCv中 width 和 widthStep的区别
- 踩坑录·CacheCloud无法启动
- 人脸识别活体检测技术探讨
- jsx怎么往js里传参数_JSX详解
- 淘宝获取商品历史价格API
- 树莓派自动连接WiFi
- 逆水寒2021最新服务器,【图片】《逆水寒》2021年4月29日更新公告【逆水寒ol吧】_百度贴吧...
- iThenticate查重系统的使用及如何去除参考文献
- 计算机无法识别苹果手机,如何解决电脑无法识别iphone的问题?
- 个人笔记,深入理解 JVM,很全!
- 3D Question Answering