• 奇异值分解
  • Moore-Penrose伪逆
  • PCA
  • python实现PCA
  • 参考资料

奇异值分解

A=UDVT

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的列向量称为左右奇异向量。
实际上对应特征值与奇异值有如下关系:

(ATA)νi=λiνi

(A^T A)\nu_i = \lambda_i\nu_i其中

σi=λi−−√

\sigma_i = \sqrt{\lambda_i}

μi=1σiAνi

\mu_i = \frac{1}{\sigma_i}A\nu_i σ\sigma是奇异值, μ\mu是左奇异向量, ν\nu是右奇异向量。
在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前 rr大的奇异值来近似描述矩阵。

Moore-Penrose伪逆

若有AA与其左逆 BB,有

Ax=y

Ax = y以及

x=By

x=By,则Moore-Penrose伪逆为

A+=VD+UT

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×FeatureVector

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  

参考资料

  1. 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
  2. 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
  3. 《深度学习》花书

【深度学习】奇异值分解与Moore-Penrose伪逆相关推荐

  1. 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 ...

  2. 机器学习及深度学习中的符号说明

    文章目录 数和数组 集合和图 索引 线性代数中的操作 微积分 概率和信息论 函数 数据集和分布 数和数组 a a a 标 量 ( 整 数 或 实 数 ) 标量(整数或实数) 标量(整数或实数) a \ ...

  3. 清华大学公开课线性代数2——第6讲:伪逆

    此博客停止更新,迁移至SnailDove's blog,查看本文请点击此处,清华大学线性代数2笔记汇总:线性代数总结 笔记源自:清华大学公开课:线性代数2--第6讲:伪逆 **提示:**如果文中图片看 ...

  4. 线性代数笔记34——左右逆和伪逆

    原文 | https://mp.weixin.qq.com/s/PRQQvSfmipxPBeF80aEQ1A 一个矩阵有逆矩阵的前提是该矩阵是一个满秩的方阵.然而很多时候遇到的都是长方矩阵,长方矩阵是 ...

  5. 学习笔记DL007:Moore-Penrose伪逆,迹运算,行列式,主成分分析PCA

    2019独角兽企业重金招聘Python工程师标准>>> Moore-Penrose伪逆(pseudoinverse). 非方矩阵,逆矩阵没有定义.矩阵A的左逆B求解线性方程Ax=y. ...

  6. 伪逆学习自动编码器射频干扰去除 Radio frequency interference mitigation using pseudo-inverse learning auto-encoders

    Radio frequency interference mitigation using pseudo-inverse learning auto-encoders [RAA 2020] [pdf] ...

  7. 单摄像头+深度学习实现伪激光雷达,代码已开源

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 上次介绍了双目摄像头如何估计深度的方案.老板表示两个摄像头还是有点贵呀,只用一个能不能做?嗯,没问题! ...

  8. 线性代数学习笔记10-4:左右逆、伪逆/M-P广义逆(从四个子空间和SVD角度理解)

    下面讨论m×nm\times nm×n的秩为rrr的矩阵 对于不同情况,讨论逆矩阵 两侧逆矩阵 2-sided inverse 这也是一般所说的"逆矩阵"的含义 方阵A\bolds ...

  9. 百度深度学习paddlepaddle7日打卡——Python小白逆袭大神学习心得

    百度深度学习paddlepaddle7日打卡--Python小白逆袭大神学习心得 7日学习总结 第一天作业 第二天作业 第三天作业 第四天作业 第五天作业 7日学习总结 通过这7日打卡课程的学习,从小 ...

最新文章

  1. NIPS改名为NeurIPS的原因
  2. Java集合源码学习(四)HashMap
  3. HANA数据库为何如此之快
  4. linux rc.d的作用,init.d,rc.d详解 Linux运行时详解
  5. 【渝粤教育】电大中专混凝土结构作业 题库
  6. STM32之端口复用与重映射
  7. ExtJS(MVC)+PHP(ThinkPHP)+MySql5.0 开发框架准备阶段--mySql篇
  8. Windows 底层驱动级 Anti-Rootkit 工具 ScDetective 源代码
  9. Docker 更新版本
  10. OpenCv中 width 和 widthStep的区别
  11. 踩坑录·CacheCloud无法启动
  12. 人脸识别活体检测技术探讨
  13. jsx怎么往js里传参数_JSX详解
  14. 淘宝获取商品历史价格API
  15. 树莓派自动连接WiFi
  16. 逆水寒2021最新服务器,【图片】《逆水寒》2021年4月29日更新公告【逆水寒ol吧】_百度贴吧...
  17. iThenticate查重系统的使用及如何去除参考文献
  18. 计算机无法识别苹果手机,如何解决电脑无法识别iphone的问题?
  19. 个人笔记,深入理解 JVM,很全!
  20. 3D Question Answering

热门文章

  1. Python - 两数相除 递进版
  2. 知识产权贯标,有那么重要吗?
  3. 一个好用 的API 管理工具
  4. 突然心有所感,记录一下每天的感受吧
  5. HTTP 返回码 400
  6. gflags学习笔记(一)gflags的介绍和安装(ubuntu环境)
  7. 第一天 区块链技术入门
  8. matlab函数_连通区域 bwareaopen bwarea
  9. 前端项目开发-部署上线过程
  10. RoboMaster机甲大师:裁判系统服务器搭建助手(RMServer Aid)