SVD的简介和主要应用领域以及原理与几何意义

1 简介
svd 全称:singular value decomposition。svd 是一种提取信息的强大工具,它提供了一种非常便捷的矩阵分解方式,能够发现数据中十分有意思的潜在模式。
主要应用领域包括:
隐性语义分析 (latent semantic analysis, lsa) 或隐性语义索引 (latent semantic indexing, lsi);
推荐系统 (recommender system),可以说是最有价值的应用点;
矩阵形式数据(主要是图像数据)的压缩。
2 线性变换
在做 svd 推导之前,先了解一下线性变换,以 2*2 的线性变换矩阵为例,先看简单的对角矩阵:
从集合上讲, m 是将二维平面上的点(x,y) 经过线性变换到另一个点的变换矩阵,如下所示:
该变换的几何效果是,变换后的平面沿着x水平方向进行了3倍拉伸,垂直方向没有发生变化。
3 svd 推导
该部分的推导从几何层面上去理解二维的svd,总体的思想是:借助 svd 可以将一个相互垂直的网格 (orthogonal grid) 变换到另外一个互相垂直的网格。
可以通过二维空间中的向量来描述这件事情。
首先,选择两个互相正交的单位向量v1和v2(也可称为一组正交基)。
m 是一个变换矩阵。
向量mv1 , mv2也是一组正交向量(也就是v1和v2经过m变换得到的)。
u1, u2分别是mv1, mv2的单位向量(即另一组正交基),且有:
则,σ1,σ2分别为mv1 , mv2的模(也称为m的奇异值)。
设任意向量x,有:
根据线代知识,向量的内积可用向量的转置来表示:
至此,svd 使用几何意义的形式推导完毕,其中:
关于 svd 的一些重要的结论性总结:
任意的矩阵m是可以分解成三个矩阵;
v表示了原始域的标准正交基;
u表示经过m变换后的新标准正交基;
∑表示了v中的向量与u中相对应向量之间的比例(伸缩)关系;
∑中的每个σ会按从大到小排好顺序,值越大代表该维度重要性越高;
在利用 svd 做数据信息提取或压缩时,往往依据一些启发式策略,如直接设定只提取∑ 中的前k项,或者另一种较常用的做法是保留矩阵中一定百分比的能量信息,一般可设定为 90%,能量信息比例的计算可先求得所有奇异值平方总和,然后将奇异值的平方依次累加到总值的 90% 为止,形如:
# -*- coding: utf-8 -*-
import numpy as np
import numpy.linalg as la
import matplotlib.pyplot as plt
from sklearn import datasets
from skimage import io
def getimgasmat(index):
ds = datasets.fetch_olivetti_faces()
return np.mat(ds.images[index])
def getimgasmatfromfile(filename):
img = io.imread(filename, as_grey=true)
return np.mat(img)
def plotimg(imgmat):
plt.imshow(imgmat, cmap=plt.cm.gray)
plt.show()
def recoverbysvd(imgmat, k):
# singular value decomposition
u, s, v = la.svd(imgmat)
# choose top k important singular values (or eigens)
uk = u[:, 0:k]
sk = np.diag(s[0:k])
vk = v[0:k, :]
# recover the image
imgmat_new = uk * sk * vk
return imgmat_new
# -------------------- main --------------------- #
#a = getimgasmat(0)
#plotimg(a)
#a_new = recoverbysvd(a, 20)
#plotimg(a_new)
a = getimgasmatfromfile('d:/pic.jpg')
plotimg(a)
a_new = recoverbysvd(a, 30)
plotimg(a_new)

一位从实施工程师到研发工程师的自述
基于控制器局域网络CAN实现高压开关柜故障检测系统的设计
当VR/AR遇上5G技术将会带来怎样的改变呢
土壤中农药残留检测仪HM-NC10的用途
总投资75亿!又一半导体项目落户湖北仙桃
SVD的简介和主要应用领域以及原理与几何意义
蓝海将至?安防机器人几大痛点尚未解决
基于SpringBoot+Redis的转盘抽奖
高级工程师职业生涯的下一步是什么
负荷开关能直接代替断路器吗
贸易战对中国发展集成电路产业影响较小
智能门锁存在哪些风险
特朗普:加征关税主要将由中国支付,美国消费者并不受影响
比例电磁铁驱动电路
Google与NASA合作 将利用模拟和机器学习技术搜索外星生命
TriQuint携多种产品亮相IWS2013
C++之函数模板的概念及意义
LT3012 具停机功能的 5V 电源
沃尔沃与Veoneer合作 获准在瑞典公路进行自动驾驶测试
Multisim在MAXl6823新元器件建立及LED驱动电路仿真中的应用