【机器学习】必会降维算法之:奇异值分解(SVD)

奇异值分解(SVD)

  • 1、引言
  • 2、奇异值分解(SVD)
    • 2.1 定义
    • 2.2 应用场景
    • 2.3 核心原理
    • 2.4 算法公式
    • 2.5 代码示例
  • 3、总结

1、引言

一转眼,
小屌丝:鱼哥,就要到每年最开心的节日了:六一儿童节。
小鱼:你有啥想法?
小屌丝:想法没有,玩的地方倒是想
小鱼:拉倒吧, 我可不去
小屌丝:确定?
小鱼:看情况。
小屌丝:嘿嘿, 难得过节日,我们也得放松一下
小鱼:正有此意。
在这里插入图片描述

2、奇异值分解(SVD)

2.1 定义

奇异值分解(SVD)是线性代数中一种重要的矩阵分解方法,它将任意矩阵分解为三个矩阵的乘积形式,即A = UΣV^T, 其中

  • A是待分解的矩阵,
  • U和V是酉矩阵(正交矩阵在复数域的推广),
  • Σ是半正定的对角矩阵,
  • 对角线上的元素称为奇异值。

SVD是特征值分解在任意矩阵上的推广,对于非方阵或非对称矩阵也能进行有效分解。

2.2 应用场景

SVD 有着众多应用场景,以下是一些典型的应用:

  • 数据降维:在PCA中使用SVD来降维,以便可视化和减少特征维度。
  • 推荐系统:在协同过滤中,SVD用于分解用户-物品评分矩阵,识别潜在的用户偏好。
  • 图像压缩:通过分解图像矩阵,保留重要奇异值来实现图像压缩。
  • 噪声去除:通过保留主要的奇异值,再构建原始数据以达到去噪效果。

2.3 核心原理

SVD 的核心原理在于矩阵分解,通过将原始矩阵分解为奇异值和奇异向量的乘积,能够提取出矩阵的关键特征。

特别地,奇异值表示矩阵在不同方向上的投影强度,保留主要的奇异值可以保留大部分重要信息,去除不重要的奇异值能够减少噪声和数据冗余。

2.4 算法公式

对于一个 ( m × n ) ( m \times n ) (m×n) 矩阵 ( A ) ( \mathbf{A} ) (A),奇异值分解的具体数学表示如下:

[ A = U Σ V T ] [ \mathbf{A} = \mathbf{U} \mathbf{\Sigma} \mathbf{V}^T ] [A=VT]

其中,

  • A:待分解的m×n矩阵
  • U:m×m阶酉矩阵,其列向量是AA^T的特征向量
  • Σ:m×n阶对角矩阵,对角线上的元素是A的奇异值,通常按降序排列
  • VT:n×n阶酉矩阵V的共轭转置,其列向量是ATA的特征向量。
    在这里插入图片描述

2.5 代码示例

# -*- coding:utf-8 -*-
# @Time   : 2024-05-30
# @Author : Carl_DJimport numpy as np
import matplotlib.pyplot as plt# 生成一个随机矩阵
np.random.seed(0)
A = np.random.randn(6, 5)# 进行奇异值分解
U, Sigma, VT = np.linalg.svd(A, full_matrices=False)# 重构矩阵
Sigma_matrix = np.diag(Sigma)
A_reconstructed = np.dot(U, np.dot(Sigma_matrix, VT))# 显示原始矩阵和重构矩阵
print("原始矩阵 A:")
print(A)print("\n重构矩阵 A_reconstructed:")
print(A_reconstructed)# 确认重构矩阵与原始矩阵近似相等
assert np.allclose(A, A_reconstructed)# 绘制奇异值
plt.plot(Sigma, 'ro-', linewidth=2)
plt.title('奇异值')
plt.xlabel('索引')
plt.ylabel('值')
plt.show()

代码解析

  • 首先、生成了一个 6x5 的随机矩阵 ( A )。
  • 其次、使用NumPy的 np.linalg.svd 函数计算矩阵的奇异值分解,得到 ( U ) ( \mathbf{U} ) (U) ( Σ ) ( \mathbf{\Sigma} ) (Σ) ( V T ) ( \mathbf{V}^T ) (VT)
  • 第三、重构矩阵 ( A ) 并确认其与原始矩阵近似相等。
  • 最后、绘制奇异值,以便可视化奇异值的分布情况。

在这里插入图片描述

3、总结

奇异值分解(SVD)是一种强大且广泛应用的矩阵分解技术,在数据降维、推荐系统、图像处理等多个领域中发挥着重要作用。

通过对矩阵进行奇异值分解,我们可以提取出数据的关键特征,降低复杂性并提高计算效率。

掌握SVD的基本原理和实现方法,将对各类数据分析和机器学习任务大有裨益。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 企业认证金牌面试官
  • 多个名企认证&特邀讲师等
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)评测一等奖获得者

关注小鱼,学习【机器学习】&【深度学习】领域的知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建Vulnhub靶机网络问题(获取不到IP)

搭建好靶场后,在攻击机运行arp-scan -l无法发现靶机IP。 这时候去看下靶机网络有没有问题。 重新启动客户机,一直按e进入安全模式(要是直接开机了就先按shift进入grub界面,再按e)找到ro,将ro改为rw signie…

XM平台的交易模式模式是什么?

外汇交易平台的盈利模式主要分为两种:有交易员平台和无交易员平台。 有交易员平台,也称为做市商平台,为客户提供交易市场,并在需要时与客户持相反方向的交易,从中赚取利润。交易者看到的买入卖出价可能与实际价格不同&…

python 巡检报告中的邮件处理

00.创作背景,在每天的巡检报告中要 要检查oa相关服务器的备份作业是否备份成功 那个备份软件有个功能,就是完成备份作业后,可以发送信息到我的邮箱。 01.通过检查我邮箱的信息,就可以了解那个备份作业的情况。 通过解释邮件的名称可以了解备…

一分钟学习数据安全—自主管理身份SSI架构

上一篇我们概要介绍了SSI的几个组成部分,包括可验证凭证信任三角、治理框架等,后面的介绍文章我们将分别介绍一下相关的技术。 SSI的堆栈演进到现在,综合整个生态中的关键架构决策,普遍接受的是一个四层模型。 如上图所示&#xf…

QT系列教程(8) QT 布局学习

简介 Qt 中的布局有三种方式,水平布局,垂直布局,栅格布局。 通过ui设置布局 我们先创建一个窗口应用程序,程序名叫layout,基类选择QMainWindow。但我们不使用这个mainwindow,我们创建一个Qt应用程序类Log…

使用API有效率地管理Dynadot域名,删除已设置的文件夹

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

河南省第十四届ICPC大学生程序设计竞赛-C结对编程

题面 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 A公司是一家主营软件开发的公司。公司内有n名员工,编号为1到n的整数,除了1号老板外每名员工…

用友NC downCourseWare 任意文件读取漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC 系统 /portal/pt/downCourseWare…

【Go】编码结构体转换为json字符串

结构体内字段命名大小写问题导致无法解析到 package mainimport ("encoding/json""fmt" ) // 定义一个结构体 type Music struct {name string json:"名称" // 字段大小写命名问题!!!singer string json:&q…

Javascript系统学习(三)

前端模块化前端模块化CommonJS、AMD、CMD、ES6_commonjs amd cmd es6模块化-CSDN博客 ES6: <script type"module" src"main.js"></script> //默认导出 export default function(ctx) {... } ----------------------------------- //模块命名…

创新科技,船舶岸电电源助力环保事业

岸电电源&#xff0c;也称为岸用变频电源或电子静止式岸电电源&#xff0c;是一种特别设计制造的大功率变频电源设备。这种设备主要针对船上、岸边码头等高温、高湿、高腐蚀性、大负荷冲击等恶劣使用环境&#xff0c;能够提供稳定的电源供应。它通常用于将岸边的工业用电&#…

SpringBoot 请求响应

SpringBoot 请求响应 来源于黑马程序员JavaWeb课程&#xff0c;总结笔记 1.ApiFox Apifox快速入门教程 2.基本参数 简单参数&#xff1a;在向服务器发起请求时&#xff0c;向服务器传递的是一些普通的请求数据。 //RequestController.java import jakarta.servlet.http.Htt…

概率分析和随机算法

目录 雇佣问题 概率分析 随机算法 生日悖论 随机算法 概率分析 球与箱子 总结 雇佣问题 有n个候选人面试&#xff0c;如果面试者比目前雇佣者的分数高&#xff0c;评价更好&#xff0c;那么就辞掉当前雇佣者&#xff0c;而去聘用面试者&#xff0c;否则继续面试新的候…

C# Web控件与数据感应之 填充 HtmlTable

目录 关于 HtmlTable HtmlTable与BaseDataList的区别 准备数据源 ​范例运行环境 FillTable 方法 设计与实现 模板样例输出 Automatic 模式填充 ​ DynamicRows 模式填充 StaticRows 模式填充 ​ 小结 关于 HtmlTable 数据感应也即数据捆绑&#xff0c;是…

电商行业为什么要分析竞争商品?详解竞争商品分析八个维度

在当今的电子商务领域&#xff0c;竞争日益激烈&#xff0c;消费者拥有几乎无限的选择。品牌和商家为了在这场竞争中获得优势&#xff0c;必须深入理解市场动态、消费者需求以及竞争对手的策略。分析竞争商品是实现这一目标的关键步骤。它不仅帮助商家揭示行业内表现优异商品的…

【机器学习基础】Python编程03:五个实用练习题的解析与总结

Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面: 简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。 丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些…

LW-DETR:实时目标检测的Transformer, Apache-2.0 开源可商用,实验超 YOLOv8

LW-DETR&#xff1a;实时目标检测的Transformer&#xff0c; Apache-2.0 开源可商用&#xff0c;实验超 YOLOv8 LW-DETR 架构实例化高效训练高效推理 目的与解法拆解ViT编码器和DETR解码器多级特征图聚合变形交叉注意力窗口注意力和全局注意力 论文&#xff1a;https://arxiv.o…

64. UE5 RPG 创建新的双手攻击怪物

在上一篇文章中&#xff0c;我们实现了新的功能&#xff0c;现在可以创建多个普通攻击动画&#xff0c;并且可以根据你所使用的普通攻击动画&#xff0c;设置不同的攻击位置。比如&#xff0c;你使用武器&#xff0c;那么攻击位置需要从武器上获取&#xff0c;如果你没有持有武…

把文件从一台linux机器上传到另一台linux机器上

文章目录 1&#xff0c;第一种情况1.1 先测试2台机器是否可以互相通信1.2 对整个文件夹里面的所有内容进行传输的命令1.3 检查结果 2&#xff0c;第二种情况2.1&#xff0c;单个文件传输的命令 1&#xff0c;第一种情况 我这里有2台linux机器&#xff0c; 机器A&#xff1a;19…

高科技IT企业适合平滑替代FTP升级方案有哪些?

随着信息技术的飞速发展&#xff0c;传统的文件传输协议FTP已经逐渐不能满足现代企业的需求。特别是对于高科技IT企业来说&#xff0c;他们需要的不仅仅是一个简单的文件传输工具&#xff0c;而是一个能够提供高速、安全、稳定、易管理且兼容性强的解决方案。那么&#xff0c;在…