svd 算法_分类算法的应用场景

svd 算法_分类算法的应用场景​ML之DR之SVD:SVD算法的简介、场景实现、案例应用之详细攻略目录SVD算法的简介SVD算法的应用场景SVD的使用方法SVD算法的简介1、SVD算法的概述奇异值分解SingularValu

ML之DR之SVD:SVD算法的简介、场景实现、案例应用之详细攻略

目录

SVD算法的简介

1、SVD算法的概述

《Cool Linear Algebra: Singular Value Decomposition》翻译与解读

2、SVD算法过程

(1)、SVD的数学定义

(2)、公式的推导

(3)、SVD算法两步过程

(4)、理解SVD

3、SVD和子空间的关系

SVD算法的应用场景

1、图像领域的图片压缩案例

2、推荐领域的产品推荐案例

第一步,进行SVD分解并提取前2个特征

(1)、产品矩阵的压缩、用户矩阵的压缩

第二步,利用SVD进行新用户的个性化推荐

SVD的使用方法

1、SVD的python代码实现


SVD算法的简介

1、SVD算法的概述

奇异值分解Singular Value Decomposition:简称SVD,特征分解的广义化,是一种提取特征信息的方法。

《Cool Linear Algebra: Singular Value Decomposition》翻译与解读

地址

论文地址:Cool Linear Algebra: Singular Value Decomposition – Andrew Gibiansky

时间

2013年5月29日

作者

Andrew Gibiansky

解读 这篇文章主要论述了矩阵奇异值分解(Singular Value Decomposition, SVD)的理论与应用。
其主要点总结如下:
>> 介绍了矩阵对角化的概念,对角化是对对称矩阵有效,且矩阵必须是方阵
>> SVD能对任意形状的矩阵进行分解,是一种更普遍的对角化方法。它适用于所有矩阵,因此更具应用价值。
>> SVD将一个矩阵A分解为三个矩阵的乘积:A = UΣV^T。其中U和V的列向量正交,Σ为对角矩阵。Σ上的元素称为奇异值
>> SVD从物理意义上可以解释为:任何矩阵变换都可以看作先旋转,然后缩放,最后再旋转
>> 文章给出了 SVD在数据压缩、低秩矩阵近似和解线性方程组等多个应用场景的实例,说明其广泛应用价值。
>> 作者总结 SVD几乎应用在所有学科地,如果在线性代数中记住一个概念,那应该就是奇异值分解。它被广泛应用,是很强大的工具。
本文系统而清晰地介绍了SVD的定义、理论基础以及其在数学、计算机科学等多个应用场景中的实用性,强调了SVD作为一种强大而通用的矩阵分解方法的重要性。

2、SVD算法过程

(1)、SVD的数学定义

svd 算法_分类算法的应用场景

假设我们的矩阵A是一个m×n的矩阵,那么我们定义矩阵A的SVD:

svd 算法_分类算法的应用场景

(1)、通常将奇异值由大而小排列。这样,Σ便能由A唯一确定了。

(2)、与特征值、特征向量的概念相对应:
U的列(columns),组成一套对M的正交”输入”或”分析”的基向量。这些向量是MM*的特征向量。
V的列(columns),组成一套对M的正交”输出”的基向量。这些向量是M*M的特征向量。
Σ对角线上的元素是奇异值,可视为是在输入与输出间进行的标量的”膨胀控制“。这些是M*M及MM*的奇异值,并与U和V的列向量相对应。

(3)、因为U 和V 向量都是单位化的向量, 我们知道U的列向量u1,…,um组成了K空间的一组标准正交基。同样,V的列向量v1,…,vn也组成了K空间的一组标准正交基。

SVD和特征分解的关系

SVD和特征分解的关系:SVD也是对矩阵进行分解,但是和特征分解不同,SVD并不要求分解的矩阵为方阵

svd 算法_分类算法的应用场景

SVD求伪逆

SVD求伪逆:奇异值分解可以被用来计算矩阵的伪逆。若矩阵A的奇异值分解为A=UΣVT ,那么A的伪逆为A伪逆=VΣ伪逆UT

其中Σ伪逆是Σ的伪逆,是将主对角线上每个非零元素都求倒数之后再转置得到的。

(1)、求伪逆通常可以用来求解最小二乘法问题。

(2)、公式的推导

svd 算法_分类算法的应用场景

svd 算法_分类算法的应用场景

(3)、SVD算法两步过程

第一步,先将原始数据表示成一个矩阵A_m*n;

第二步,SVD把这个大型矩阵分解为3个小矩阵的连乘:

svd 算法_分类算法的应用场景

其中r是一个很小的值。对角矩阵Σ_r*r中的所有值,被称为奇异值

svd 算法_分类算法的应用场景

(4)、理解SVD

svd 算法_分类算法的应用场景

已知4×5阶实矩阵A,求A的SVD分解:

(1)、矩阵U和V都是单位正交方阵:U^T*U=1,V^T*V=1

奇异值分解有时非唯一性:由于Σ有一个对角元是零,故这个奇异值分解值不是唯一的。

svd 算法_分类算法的应用场景

3、SVD和子空间的关系

任何秩为r的矩阵A,可以被分解为

svd 算法_分类算法的应用场景

(1)、SVD提供了计算四个子空间正交基的一种快速方法。SVD牛叉在,可以把四个正交矩阵联系起来。

svd 算法_分类算法的应用场景

SVD算法的应用场景

1、图像领域的图片压缩案例

奇异值top不同个数的应用

 svd 算法_分类算法的应用场景svd 算法_分类算法的应用场景svd 算法_分类算法的应用场景

可以发现,如果我们根据大小排序这些奇异值(矩阵 Σ 的值),那么前 50 个奇异值将包含整个矩阵 Σ 的大小的 85%。根据这个事实,我们可以丢弃后面的 250 个值(即将它们设为 0),仅保留这张小狗图像的「rank(秩)50」版本。值的数量差不多少了 5 倍,但质量却下降很少。上述计算的原因是当我们执行 UΣ’V 运算时,U 和 V 矩阵中的一部分因为乘 0 也被丢弃(其中 Σ’ 是 Σ 的修改后版本,其中仅包含了前面的 30 个值)。

低秩矩阵的近似应用

 图像压缩,其实80与原图相差不是很大。SVD中的奇异值的个数分别为1、10、80。

svd 算法_分类算法的应用场景

 

2、推荐领域的产品推荐案例

假定Ben、Tom、John、Fred对6种产品进行了评价,评分越高,代表对该产品越喜欢。0表示未评价。

第一步,进行SVD分解并提取前2个特征

svd 算法_分类算法的应用场景

svd 算法_分类算法的应用场景

svd 算法_分类算法的应用场景

(1)、产品矩阵的压缩、用户矩阵的压缩

svd 算法_分类算法的应用场景svd 算法_分类算法的应用场景

第二步,利用SVD进行新用户的个性化推荐

思路:对于新用户,如何对其做个性化推荐呢?将A扩展后重新计算SVD,然后聚类用户?
过程:求出新数据的未知V,因为此时已经建立模型(即已知U、Σ),传入新数据A,目的是变换公式求出未知V。

svd 算法_分类算法的应用场景
(1)、假设有个Bob的新用户,对6个产品的评分为(5,5,0,0,0,5)T,通过上边的公式计算出Bob的特征点坐标。

svd 算法_分类算法的应用场景
(2)、通过计算Bob和现有用户的距离进行聚类:计算余弦距离(一定意义下即相关系数),与其最近的是Ben,因此,可以给Bob推荐Ben喜欢的S5、S3。
Ben:
Bob:

svd 算法_分类算法的应用场景

SVD的使用方法

1、SVD的python代码实现

import numpy as np def load_data(): return [ [0,0,0,1,1], [0,0,0,2,2], [0,0,0,3,3], [4,4,4,0,0], [5,5,5,0,0], [6,6,6,0,0], [7,7,7,0,0]] data = load_data() u, sigma, vt = np.linalg.svd(data) #Sigma是个矩阵,Python内部的机制,为了节省空间,因为它除了对角线都是0 print(sigma)#前两个值比后三个值大的多,所以可以取这两个奇异值,把其余三个置0。 [1.e+01 5.e+00 1.e-15 4.e-16 8.e-18]

今天的文章
svd 算法_分类算法的应用场景分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/80988.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注