机器学习实战第4章 利用SVD简化数据 学习笔记

本文介绍了Singular Value Decomposition(SVD)的概念、奇异值及其在数据降维中的作用。通过SVD,可以简化数据并用于隐性语义索引(LSI)和推荐系统,特别是协同过滤推荐。文中提到了相似度计算方法,如欧氏距离、皮尔逊相关系数和余弦相似度,并讨论了推荐引擎的评价指标RMSE。此外,还探讨了SVD在图像压缩中的应用。
摘要由CSDN通过智能技术生成

SVD概述

SVD概念

  • 奇异值:奇异值和矩阵的特征值有关系。这里的奇异值Data*DataT特征值的平方根。

  • 奇异值分解:SVD是矩阵分解的一种类型,用于提取信息,可以把SVD看成是从噪声数据中抽取相关特征。SVD将原始的数据集矩阵Data分解成三个矩阵U、Σ和VT。

D a t a m ∗ n = U m ∗ m Σ m ∗ n V T n ∗ n Data_{m*n} = U_{m*m} Σ_{m*n} VT_{n*n} Datamn=UmmΣmnVTnn

上述分解构造出一个矩阵Σ即为奇异值矩阵,该矩阵只有对角元素,其余元素均为0。这些对角元素由大到小排列,对应了原始数据矩阵Data的奇异值。U通常是项目矩阵,VT通常是用户矩阵。

奇异值数目

在科学和工程中,一直存在这样一个普遍事实:在某个奇异值的数目(r个)之后,其他的奇异值都置为0。这就意味着数据集中仅有r个重要特征,而其余特征则都是噪声或冗余特征。确定要保留的奇异值的数目有很多启发式的策略,其中一个典型的做法就是保留矩阵中90%的能量信息。为了计算总能量信息,我们将所有的奇异值求其平方和。于是可以将奇异值的平方和累加到总值的90%为止。

SVD降维

确定奇异值数目后,奇异值矩阵就会变为一个小很多的对角矩阵。例如取奇异值为3,那么上述矩阵Data就可以被近似为:
D a t a m ∗ n = U m ∗ 3 Σ 3 ∗ 3 V T 3 ∗ n Data_{m*n}=U_{m*3}Σ_{3*3} VT_{3*n} Datamn=Um3Σ33VT3n
在这里插入图片描述

SVD分解:

from numpy import *

Data =  [[1, 1, 1, 0, 0],
         [2, 2, 2, 0, 0],
         [1, 1, 1, 0, 0],
         [5, 5, 5, 0, 0],
         [1, 1, 0, 2, 2],
         [0, 0, 0, 3, 3],
         [0, 0, 0, 1, 1]]

U,Sigma,VT = linalg.svd(Data)
print(Sigma)
#[9.72140007e+00 5.29397912e+00 6.84226362e-01 1.50962387e-15 1.15387192e-31]后两个太小舍去

重构原始矩阵:

#构造奇异值矩阵
Sig3 = mat([[Sigma[0<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值