机器学习 - SVD分解算法的物理意义 (1)

机器学习-SVD分解算法的物理意义

奇异值分解(Singular Value Decomposition),以下简称SVD。

奇异值分解算法是一种在机器学习中经常使用到的一个算法,SVD主要用于数据压缩和数据降维,在图像压缩、推荐系统有着极其重要的作用,

本文将着重理解SVD分解算法的物理意义以及我们将用Python代码将这个过程可视化,数学推导将不是本文的重点,将在它文展示。

一.SVD分解介绍

任何一个形状的矩阵(图像)都可以转化从先旋转、再延伸、再旋转的形式。

svd1

公式如下

svd2

SVD分解就是将一个矩阵转变为这三个矩阵的表达形式,同时,这三个矩阵分别代表一个旋转、一个伸缩、一个旋转。

img

为什么呢?

提出问题就解决了一半的问题。为什么一个矩阵可以转变为一个旋转矩阵、一个伸缩矩阵、一个旋转矩阵相乘呢?

让我们来看一个简单的例子

img1
img2

Unit circle 要怎么转换才能转换成为下图中的A的形式呢?(这里要注意点的颜色!)

首先,我们先让Unit circle逆时针旋转135度。

img3

再让旋转后的图像在x轴上伸长6.70820393249937倍(为什么是这个倍数,先不用纠结,这是奇异值分解以后的一个奇异值数),在y轴上伸长2.2360679774997894倍

img4

然后我们再让图像旋转一次,即可得到和A同等的一个图像. U sigma Vt

img10

这样,原图到A的过程就可以转变为将原图先进行一个旋转、再进行一个伸缩、再进行一个旋转。

我们知道,任何的图像的变化都可以用线性代数里的一个矩阵来表示。

实际上,从原图到A的一个变换矩阵就是

A = ∣ 3 0 4 5 ∣ A = \left|\begin{matrix} 3 & 0 \\ 4 & 5 \end{matrix} \right| A=3405

我们将其拆解以后,第一个转换图像对应的旋转是逆时针旋转135度,我们可以将第一个旋转用矩阵表示为

V = ∣ − 0.71 − 0.71 − 0.71 0.71 ∣ V=\left|\begin{matrix} -0.71 & -0.71 \\ -0.71 & 0.71 \end{matrix} \right| V=0.710.710

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值