精简易懂,30 分钟学会 SVD 矩阵分解,很强!

矩阵的相似性度量的常用方法 当然中间有一个系数就是根号的输入向量的维度,这也就是为什么transformer架构中为什么要除以根号的输入向量的维度的原因,因为除以根号的输入向量的维度之后,Norm之后的向量,神经元的点积相似度就等于余弦相似度了。原因就是因为神经网络的基本计算就是点积相似度计算,而点积相似度的取值范围是没有约束的,这导致神经网络结构很难学习,因为variance太大了。马氏距离的优点是距离与属性的量纲无关,并排除了属性之间的相关性干扰,若各个属性之间独立同分布,则协方差矩阵为单位矩阵。其中:D表示样本间的距离, 阅读详情

SVD(Singular Value Decomposition)奇异值分解分解是机器学习中最重要的矩阵分解方法。

它能够将一个任意形状的矩阵分解成一个正交矩阵和一个对角矩阵以及另一个正交矩阵的乘积。

SVD分解具有非常深刻的几何含义。矩阵实际上对应着一种线性变换,一个矩阵作用到一个向量上,会得到一个新的向量。任何一个矩阵的操作效果可以分解成一次旋转,一次拉伸和维度改变,以及另外一次旋转三者作用效果的合成。

SVD分解通常用于数据压缩和数据降维。用于数据降维时,既可以对列降维,也可以对行降维,其中对列的降维等价于PCA的降维。

不仅如此,SVD算法还可以用于在声音和图像处理中剥离背景信号,在推荐算法中也经常出现它的身影。

一,SVD矩阵分解简介

SVD分解将任意矩阵分解成一个正交矩阵和一个对角矩阵以及另一个正交矩阵的乘积。

对角矩阵的对角元称为矩阵的奇异值,可以证明,奇异值总是大于等于0的。

当对角矩阵的奇异值按从大到小排列时,SVD分解是唯一的。

SVD分解有着非常深刻的几何含义。

矩阵实际上是对应着一种线性变换。一个矩阵作用到一个向量上,会得到一个新的向量。任何一个矩阵的操作效果可以分解成一次旋转,一次拉伸和维度改变,以及另外一次旋转三者作用效果的合成。

注意正交矩阵和作用到向量后是不会改变向量长度的,所以对应着旋转变换。

二,SVD分解的数学推演

 可以推出

依然是对角矩阵,又U为正交矩阵。

所以 为AA^T的相似对角矩阵,其对角元为AA^T的特征值,U由其对应特征向量构成,这些向量称为A的左奇异向量。

因此的对角元为AA^T特征值的平方根,称之为矩阵A的奇异值。

类似地V由A^TA的特征向量构成,这些向量称为A的右奇异向量。

三,SVD分解和数据压缩

奇异值描述了矩阵对应的拉伸变换在各个方向的比例,是矩阵的重要特征。

奇异值的分布通常非常不均,在很多的情况下前10%甚至1%的奇异值之和就占了全部奇异值之和的99%以上。

因此我们可以用前个大的奇异值来近似的描述矩阵。

这就是SVD分解用来进行数据压缩的原理。

假设 m = 10000,n = 8000,原来存储矩阵A需要存储8000万个数字,如果经过奇异值分解发现前100个奇异值贡献了99%的奇异值之和,于是可以近似只保留这100个奇异值及对应的左右奇异向量,那么只需要保留100+10000×100+100×8000= 180.01万个数字,只有原来的不到2.3%。
# 下面的范例示范SVD分解用于图片数据压缩。
%matplotlib inline 
%config InlineBackend.figure_format = 'svg'
import numpy as np 
from matplotlib import pyplot as plt
from skimage import data

def compressBySVD(img,r):
    u,s,vt = np.linalg.svd(img)
    ur = u[:,0:r]
    sr = s[0:r]
    vtr = vt[0:r,:]
    return (ur,sr,vtr)

def rebuildFromSVD(ur,sr,vtr):
    img = ur@np.diag(sr)@vtr
    return(img)


img = data.camera()/255.0

plt.figure(figsize=(10,8)) 
for i,r in enumerate([5,10,20,30,40,50,100,200],start = 1):
    ur,sr,vtr = compressBySVD(img,r)
    compress_ratio = (np.product(ur.shape) + len(sr) + 
                      np.product(vtr.shape))/np.product(img.shape)
    img_rebuild = rebuildFromSVD(ur,sr,vtr)
    ax=plt.subplot(3,3,i)
    ax.imshow(img_rebuild,cmap = "gray")
    ax.set_title("r=%d"%r+", compress_ratio=%.2f"%compress_ratio)
    ax.set_xticks([])
    ax.set_yticks([]) 

ax = plt.subplot(3,3,9)
ax.imshow(img,cmap = "gray")
ax.set_title("r = 512, original image")
ax.set_xticks([])
ax.set_yticks([]) 

plt.show()



四,SVD分解和PCA降维

PCA降维可以看成是SVD分解的一个应用。PCA降维使用的变换矩阵恰好是SVD分解的右奇异矩阵。

实际上,由于SVD分解存在着无需通过计算特征值和特征向量的可并行的数值迭代计算算法,sklearn的PCA降维算法正是通过SVD分解计算的。

下面证明SVD分解的右奇异向量构成的矩阵恰好是PCA算法所需要的正交变换矩阵。

假定PCA对应的正交变换矩阵为,根据PCA算法的数学原理,

由协方差矩阵 的各个特征向量组成,它能够将协方差矩阵相似对角化。

其中为的相似对角矩阵,且对角元由大到小排列。

利用的SVD矩阵分解:

我们有

根据SVD分解的数学原理,也是 的相似对角矩阵,且对角元由大到小排列。

于是有:

于是右奇异向量构成的矩阵 ???? 恰好是PCA算法所需要的正交变换矩阵 ????。

注意到PCA算法实际上是一种列降维的方法,实际上利用SVD分解的左奇异矩阵也可以对矩阵进行行降维。

# 演示SVD用于PCA降维的计算

%matplotlib inline 
%config InlineBackend.figure_format = 'svg'
import numpy as np 
from sklearn.decomposition import PCA

from matplotlib import pyplot as plt
from skimage import data

X = np.array([[-1.0, -3, -2], [-2, -1, -3], [-3, -2, -5], [2, 1, 3], [6, 1, 3], [2, 2, 3]])

pca = PCA(n_components= 2)
X_new = pca.fit_transform(X)
print("\ndecomposition by pca:")
print("singular value:")
print(pca.singular_values_)
print("X_new:")
print(X_new)

print("\ndecomposition by svd:")
U,S,Vt = np.linalg.svd(X-X.mean(axis = 0))
print("singular value:\n",S[:2])
print("X_new:")
print(np.dot(X-X.mean(axis = 0),np.transpose(Vt)[:,0:2]))

# 注:降维结果中正负号的差异是因为PCA调整了SVD分解后的U和Vt符号以保持各列最大值取正

输出如下:

decomposition by pca:
singular value:
[11.31375337  2.89544001]
X_new:
[[ 3.23378083  1.06346839]
 [ 3.88607412 -0.50763321]
 [ 6.25267378  0.08479886]
 [-3.50509914 -0.96584476]
 [-6.02398361  1.89494314]
 [-3.84344598 -1.56973242]]

decomposition by svd:
singular value:
 [11.31375337  2.89544001]
X_new:
[[-3.23378083 -1.06346839]
 [-3.88607412  0.50763321]
 [-6.25267378 -0.08479886]
 [ 3.50509914  0.96584476]
 [ 6.02398361 -1.89494314]
 [ 3.84344598  1.56973242]]
相似度矩阵的几种构造方式(附代码) 标题   在谱聚类中,常将数据看做空间上的点,点之间用边连接起来,构造无向权重图G=(V,E)\mathbf{G}=(\mathbf{V},\mathbf{E})G=(V,E),其中V={v1,v2,...,vn}\mathbf{V}=\{v_1, v_2, ..., v_n\}V={v1​,v2​,...,vn​}为定点集合,E为边集合。对任意一个顶点Vi,度di表示与它相连的所有边权重之和,W(i,j)表示Vi和Vj之间的边权重,那么  那么对于n个顶点,可构造n∗nn*nn∗n的度矩阵D=diag(d 阅读详情

相关推荐

从挂科边缘到高分飘过:我的华科矩阵论自救笔记(附GitHub超全资料)

本文分享了作者从挂科边缘到高分通过华中科技大学矩阵论课程的自救经历。通过制定高效复习计划、攻克矩阵论五大核心板块、掌握应试策略和心理建设技巧,作者最终取得优异成绩。文章还附有详细的GitHub学习资料,适合正在学习矩阵论的学生参考。

weixin_42627853的博客 179

机器学习实战:Python基于SVD奇异值分解进行矩阵分解(八)

奇异值分解()是一种重要的矩阵分解技术,它可以将一个矩阵分解为三个矩阵的乘积,分别为左奇异矩阵、奇异值矩阵和右奇异矩阵。SVD 的原理可以描述如下:对于任意m×nm \times nm×n的矩阵AAAVTV^TVT其中 A 是待分解的矩阵,U 是一个正交矩阵,$\sigma $ 是一个对角矩阵VTV^TVT是V 的转置。这个公式表示将 A 分解为三个矩阵的乘积,其中 U 和VTV^TVT。

Senoh的博客 6152

PCA原理与实战:从坐标旋转到信号增强的降维本质

主成分分析(PCA)是一种基于正交变换的线性降维技术,其核心原理是通过协方差矩阵特征分解,找到数据方差最大的正交投影方向,实现坐标系的最优旋转。它不删除原始特征,而是重构表征空间,从而在保留主要结构信息的同时抑制噪声、消除共线性,并提升模型稳定性与可解释性。PCA的技术价值体现在信号放大、计算加速和隐含因子发现三方面,在工业故障诊断、高维可视化、传感器数据去噪等场景中具有不可替代性。本文深入剖析PCA的数学推导链、scikit-learn工业级实践模板及五大典型误用禁区,特别强调标准化前置、载荷解读与累计方

weixin_30245867的博客 434

sklearn 相似度矩阵_精简易懂,30 分钟学会 SVD 矩阵分解,很强!

SVD(Singular Value Decomposition)奇异值分解分解是机器学习中最重要的矩阵分解方法。它能够将一个任意形状的矩阵分解成一个正交矩阵和一个对角矩阵以及另一个正交矩阵的乘积。SVD分解具有非常深刻的几何含义。矩阵实际上对应着一种线性变换,一个矩阵作用到一个向量上,会得到一个新的向量。任何一个矩阵的操作效果可以分解成一次旋转,一次拉伸和维度改变,以及另外一次旋转三者...

weixin_39636079的博客 526

基于Factorization Machines的电影推荐系统实战

推荐系统是现代互联网平台的核心能力之一,其底层常依赖矩阵分解等协同过滤技术实现用户与物品的精准匹配。Factorization Machines(FM)作为一种支持隐式反馈、可自动学习特征交叉的通用模型,在工业级推荐场景中展现出比传统SVD更强的实用性与可扩展性。本文围绕电影推荐这一典型应用,深入解析FM的数学原理、稀疏特征建模逻辑及在线服务部署要点,涵盖数据预处理中的负采样策略、Protocol Buffer格式优化、SageMaker训练调优与ml.c4.xlarge实例选型依据等关键工程决策。内容兼顾

weixin_30235225的博客 402

顺丰科技AI/ML笔试客观题全解析:考点拆解与备考策略

在人工智能与机器学习岗位的求职中,笔试环节往往考察的不只是模型原理,更是对数学基础、算法细节与业务场景的综合理解。从概率统计、线性代数到经典机器学习算法(如逻辑回归、决策树、SVM),再到深度学习中的反向传播、激活函数与训练技巧,这些知识点构成了AI工程师的核心能力底座。而像物流这样典型的产业场景,还要求候选人具备将技术应用于时效预测、路径优化、OCR识别等实际问题的能力。针对顺丰科技秋季校招的客观题合集进行系统性拆解,可以帮助备考者快速定位高频考点、识别常见陷阱、制定高效的复习路线。无论目标是物流科技公司

weixin_34008784的博客 321

网传互联网公司加班表,哈哈哈这也太真实了吧!

来自:程序员最幽默【0】网传互联网公司加班表【1】互联网工作生存指南【2】据说,互联网公司员工上课座位如下【3】当代互联网企业真实写照【4】互联网公司排位,你同意吗?【5】网传当代互联网...

算法channel 147

语音算法工程师笔试题深度剖析:从信号处理到端到端模型

语音识别作为人工智能领域的重要分支,其算法工程师岗位的校招笔试往往聚焦于信号处理、特征提取与声学建模等核心能力。理解采样定理、傅里叶变换与量化信噪比是建立语音知识体系的基础,而MFCC与Fbank的提取流程则直接体现对语音本质的把握。从GMM-HMM到CTC与Attention机制,技术演进背后是对序列对齐与长程依赖问题的持续优化。在真实业务场景中,端点检测VAD、降噪与回声消除AEC等前端算法,以及数据增强与鲁棒性设计,决定了产品体验的底线。通过拆解语音算法工程师A卷的考点分布与备考策略,帮助求职者构建从

weixin_34252686的博客 404

数据科学现场作业手册:四大最小必要数学能力

在数据科学实践中,基础数学并非教科书中的定理集合,而是支撑建模直觉、梯度调试与结果归因的工程化工具。其核心在于理解向量空间直觉——如特征缩放如何影响权重可比性;掌握标量函数求导链式法则——确保自定义损失函数的梯度计算准确可靠;建立概率分布的可操作定义——将Beta、泊松等分布转化为可更新、可截断、可置信评估的业务指标;并领悟矩阵分解的几何意义——识别PCA本质是坐标系旋转而非简单降维。这些能力直接对应Jupyter中每一行代码的稳定性与可解释性,是模型从‘能跑通’迈向‘可调试、可交付’的关键跃迁。

weixin_30572613的博客 401

奇异值及奇异值分解(SVD)详解及Python实现

奇异值(Singular Value)是线性代数中的重要概念,用于描述矩阵的性质和特征。奇异值分解(Singular Value Decomposition,简称SVD)是一种矩阵分解方法,将矩阵分解为三个矩阵的乘积,其中包括一个正交矩阵、一个对角矩阵和另一个正交矩阵的转置。其中,A是一个m×n的实数矩阵,U是一个m×m的正交矩阵,Σ是一个m×n的对角矩阵,V是一个n×n的正交矩阵,^T表示矩阵的转置。函数对矩阵A进行奇异值分解,返回结果包括U矩阵、奇异值数组s和V矩阵的转置VT。

AlianBlank的博客 908

【信息科学与工程学】【控制科学】第二篇 决策控制与决策科学01

多属性决策分析马尔可夫决策过程和行为决策理论。多属性决策分析:静态、多准则决策问题的结构化方法马尔可夫决策过程:动态、序贯决策的数学框架行为决策理论:描述实际决策行为的心理学基础每个表格都严格遵循要求的18个维度理论基础(定理/规律/数学特征)算法实现核心数学描述关键参数精度与误差分析边界条件影响因素计量方法多学科关联实现目标完整工作流程应用场景优点与局限瓶颈知识连接点决策控制知识体系的特点多层次:从描述性(行为理论)到规范性(MCDA、MDP)多学科。

weixin_49199313的博客 818

高相关特征处理实战:从多重共线性识别到业务约束PCA重构

在机器学习建模中,高度相关特征(Highly-Correlated Features)常引发多重共线性(Multicollinearity),导致线性模型系数不稳定、树模型特征重要性失真、部署时单特征缺失引发推理失效。其本质是特征间存在线性或非线性统计依赖,传统Pearson相关筛选易遗漏Spearman秩相关与距离相关(Distance Correlation)捕获的隐性关联。量化危害需结合标准化VIF与条件数,而真正有效的解耦不能简单删除,须通过主成分重构(PCA-based Reconstructio

weixin_30235225的博客 516

【信息科学与工程学】【物理/化学科学和工程技术】知识体系04 热学 系列二01

尺度与速率:都涉及微纳尺度的热传递,并追求对热过程的快速、精确控制(RTP:秒级;芯片:毫秒级;NIL:秒级)。温度均匀性:是所有领域的核心目标。芯片要求空间温度均匀以保证性能与可靠性;RTP要求片内温度均匀以保证工艺一致性;热NIL要求大面积温度均匀以保证图案保真度。测量与控制的闭环:都严重依赖高精度、实时的温度测量(红外、热偶、噪声)和先进控制算法(PID、MPC、前馈)。材料的热响应:都涉及材料(硅、聚合物、界面材料)热物性(k, c_p, α, η)的精确表征及其对温度/过程的依赖性。多物理场耦合。

weixin_49199313的博客 371

插值与拟合:从离散数据到连续规律的核心技术与实战指南

在数据分析与科学计算中,处理离散数据点并揭示其背后的连续规律是基础且关键的任务。其核心原理在于通过数学方法构建函数,以连接已知数据点或描述整体趋势。从技术价值看,这不仅是数据补全和函数近似的基石,更是进行预测、建模和可视化的前提。在工程实践中,插值技术(如线性插值、样条插值)能精确穿过数据点,常用于图形生成与数据重建;而拟合技术(如最小二乘法)则通过平衡误差来捕捉数据趋势,广泛应用于经验公式推导和信号去噪。面对含噪声数据或趋势预测需求,拟合方法往往更为稳健。本文聚焦于**样条插值**和**最小二乘法**这两

weixin_34405354的博客 564

二、时间序列的预处理

一般情况下,拿到一个观察值序列之后,首先要对它的平稳性和纯随机性进行检验,这两个重要的检验称为序列的预处理。根据检验的结果可以将序列分为不同的类型,对不同类型的序列我们会采用不同的分析方法。 一、平稳性检验 1、特征统计量 (1)概率分布           数理统计的基础知识告诉我们分布函数或者密度函数能够完整地描述一个随机变量的统计特征。同样,一个堆积变量族{Xt} 的统计特征也完全由...

Nicole的博客 2万+

IC验证 AHB-RAM 项目(二)——接口与事务代码的编写

本文介绍了准备工作及接口、事务相关代码编写要点。在接口部分,重点说明了lvc_ahb_if.sv、rkv_ahbram_if.sv和rkv_ahbram_tb.sv三个关键文件的功能,其中rkv_ahbram_if.sv通过动态任务实现复位信号控制。事务部分则涉及lvc_ahb_types.sv中的枚举类型定义和lvc_ahb_transaction.sv中的随机化变量设置,用于构建AHB传输激励。整个验证环境采用模块化设计,通过接口实现TB与DUT的通信,为后续验证工作奠定基础。

weixin_45926435的博客 406

奇异值分解 SVD 的数学解释

奇异值分解(Singular Value Decomposition,SVD)是一种矩阵分解(Matrix Decomposition)的方法。除此之外,矩阵分解还有很多方法,例如特征分解(Eigendecomposition)、LU分解(LU decomposition)、QR分解(QR decomposition)和极分解(Polar decomposition)等。这篇文章主要说下奇异值分解...

fan_fan_feng的专栏 2891

Zemax:初学者的混合模式

光线以序列模式开始,然后接近非序列组件的入口端口。到达入口端口后,光线以非序列模式传播,然后接近出口端口。光线离开出口端口后,我们又回到序列模式。在此博客中,使用混合模式的示例将演示根据您自己的需要复制此工作流程所需的基本设置,以及一些有用的技巧。非序列组件表面类型必须在序列模式和非序列模式下定义。为了定义非序列组件的几何形状,请转到设置->编辑器->非序列,单击非序列编辑器。一旦我们进入非序列组件编辑器:表面 2 上的组件组,找到一个对象类型并进行定义。它能让您兼具序列模式的精确性和非序列模式的灵活性。

jkh920184196的博客 1343

【SVD(奇异值分解)】详解及python-Numpy实现

奇异值分解(SingularValueDecomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。本文就对SVD的原理做一个总结,并讨论在在PCA降维算法中是如何运用运用SVD的。...

weixin_43821215的博客 1万+

TensorRT的安装:一步一步教会你如何安装TensorRT

TensorRT(Tensor Runtime)是由NVIDIA开发的一个用于深度学习推理(inference)优化的库,它可以在NVIDIA的GPU上加速神经网络模型的推理过程,从而提高模型的性能和效率。安装完成后,需要将CUDA的安装路径添加到系统环境变量中,以便系统能够找到CUDA的库文件。根据你安装的CUDA版本,将CUDNN的库文件复制到CUDA的安装目录中。要使用TensorRT,首先需要安装NVIDIA的CUDA和cuDNN库,并根据NVIDIA官方文档安装TensorRT。

Science prince的博客 2373

Far planner 代码系列(14)

MatchContourWithNavGraph(3) this->EnclosePolygonsCheck(); //可能有些ctnode的is_contour_necessary属性变成了true // 这说明我的contour_graph是一个local层级的 才会从这里面 get new vertices new_convex_vertices.clear(); //! 把contour_graph_里符

博客 900
上一篇: 中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!(附免费下载)...
下一篇: 这是我看过讲「数据结构与算法」非常有深度的内容,分享给你。
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值