【深度学习与大模型基础】第7章-特征分解与奇异值分解

一、特征分解

特征分解(Eigen Decomposition)是线性代数中的一种重要方法,广泛应用于计算机行业的多个领域,如机器学习、图像处理和数据分析等。特征分解将一个方阵分解为特征值和特征向量的形式,帮助我们理解矩阵的结构和性质。

1. 特征分解的定义

对于一个 n×n 的方阵 A ,如果存在一个非零向量 v  和一个标量 λ ,使得:

则称 λ 为矩阵 A  的特征值,v 为对应的特征向量

特征分解将矩阵 A  分解为:

其中:

  • Q  是由特征向量组成的矩阵,

  • Λ 是由特征值组成的对角矩阵。


2. 计算机行业中的应用示例

(1)主成分分析(PCA)

PCA 是一种降维技术,广泛应用于数据压缩和可视化。其核心思想是通过特征分解找到数据的主要方向(特征向量),并将数据投影到这些方向上,从而减少维度。

  • 步骤

    1. 计算数据的协方差矩阵。

    2. 对协方差矩阵进行特征分解,得到特征值和特征向量。

    3. 选择前 kk 个最大特征值对应的特征向量,构建投影矩阵。

    4. 将原始数据投影到低维空间。

  • 示例:在图像处理中,PCA 可以用于人脸识别,通过降维提取主要特征,减少计算复杂度。


(2)图像压缩

在图像处理中,特征分解可以用于压缩图像。例如,奇异值分解(SVD)是特征分解的推广形式,可以将图像矩阵分解为特征值和特征向量的组合,通过保留主要特征值来实现压缩。

  • 示例:将一张图像表示为矩阵,通过 SVD 分解并保留前 kk 个奇异值,可以大幅减少存储空间,同时保留图像的主要信息。


(3)推荐系统

在推荐系统中,特征分解可以用于矩阵分解(Matrix Factorization),例如协同过滤算法。通过将用户-物品评分矩阵分解为用户特征矩阵和物品特征矩阵,可以预测用户对未评分物品的偏好。

  • 示例:Netflix 的推荐系统通过分解用户-电影评分矩阵,找到潜在的用户偏好和电影特征,从而推荐个性化内容。


(4)图分析与网络

在图论中,图的拉普拉斯矩阵(Laplacian Matrix)的特征分解可以用于社区检测、图分割等任务。特征向量反映了图的结构信息。

  • 示例:在社交网络分析中,通过特征分解可以识别社区结构,发现用户群体的聚集模式。


3. python演示特征分解

import numpy as np
import matplotlib.pyplot as plt# 定义一个矩阵
A = np.array([[3, 1], [1, 2]])# 进行特征分解
eigenvalues, eigenvectors = np.linalg.eig(A)# 打印特征值和特征向量
print("特征值:", eigenvalues)
print("特征向量:\n", eigenvectors)# 可视化特征向量
plt.figure(figsize=(6, 6))
plt.quiver(0, 0, eigenvectors[0, 0], eigenvectors[1, 0], angles='xy', scale_units='xy', scale=1, color='r', label=f'特征向量 1 (特征值: {eigenvalues[0]:.2f})')
plt.quiver(0, 0, eigenvectors[0, 1], eigenvectors[1, 1], angles='xy', scale_units='xy', scale=1, color='b', label=f'特征向量 2 (特征值: {eigenvalues[1]:.2f})')# 设置图形属性
plt.xlim(-2, 3)
plt.ylim(-2, 3)
plt.axhline(0, color='black',linewidth=0.5)
plt.axvline(0, color='black',linewidth=0.5)
plt.grid(color = 'gray', linestyle = '--', linewidth = 0.5)
plt.title('特征向量可视化')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.axis('equal')
plt.show()

二、奇异值分解

奇异值分解(Singular Value Decomposition, SVD)是线性代数中的一种重要矩阵分解方法,广泛应用于计算机行业的多个领域,如数据降维、图像处理、推荐系统和自然语言处理等。SVD 将一个矩阵分解为三个特定矩阵的乘积,能够揭示数据的潜在结构和模式。


1. 奇异值分解的定义

对于一个 m×n 的矩阵 A,SVD 将其分解为:

 

其中:

  • U 是一个 m×m 的正交矩阵,其列向量称为左奇异向量

  • Σ 是一个 m×n 的对角矩阵,其对角线上的非负元素称为奇异值(通常按从大到小排列)。

  • V 是一个 n×n 的正交矩阵,其列向量称为右奇异向量


2. 计算机行业中的应用示例

(1)图像压缩

SVD 可以用于图像压缩,通过保留主要的奇异值来近似表示图像,从而减少存储空间。

  • 步骤

    1. 将图像表示为矩阵 A。

    2. 对 A 进行 SVD 分解,得到 U、Σ 和 V。

    3. 保留前 k个最大的奇异值,其余置为零,得到近似矩阵 

    4. 使用 A_{k}近似表示原始图像。

  • 示例:一张 1000×1000的图像可以通过 SVD 压缩为仅保留前 50 个奇异值的近似图像,大幅减少存储空间,同时保留主要视觉信息。


(2)推荐系统

SVD 在推荐系统中用于矩阵分解(Matrix Factorization),通过分解用户-物品评分矩阵来预测用户对未评分物品的偏好。

  • 步骤

    1. 将用户-物品评分矩阵 R 分解为 R≈UΣV^{T}

    2. 通过低秩近似找到潜在的用户特征和物品特征。

    3. 使用分解后的矩阵预测用户对未评分物品的评分。

  • 示例:Netflix 的推荐系统通过 SVD 分解用户-电影评分矩阵,找到用户和电影的潜在特征,从而推荐个性化内容。


(3)自然语言处理(NLP)

在 NLP 中,SVD 可以用于潜在语义分析(Latent Semantic Analysis, LSA),通过分解词-文档矩阵来捕捉词语和文档之间的潜在关系。

  • 步骤

    1. 构建词-文档矩阵 A,其中每行表示一个词,每列表示一个文档,元素表示词频或 TF-IDF 值。

    2. 对 A进行 SVD 分解,得到 U、Σ 和 V。

    3. 使用低秩近似表示词和文档的潜在语义空间。

  • 示例:在搜索引擎中,LSA 可以通过 SVD 捕捉词语之间的语义关系,提高搜索结果的相关性。


(4)数据降维

SVD 可以用于高维数据的降维,例如在主成分分析(PCA)中,SVD 是计算主成分的核心步骤。

  • 步骤

    1. 对数据矩阵 AA进行中心化处理。

    2. 对中心化后的矩阵进行 SVD 分解。

    3. 选择前 k个奇异值对应的左奇异向量,将数据投影到低维空间。

  • 示例:在机器学习中,SVD 可以用于减少特征维度,提高模型训练效率并避免过拟合。


3. python演示奇异值分解

import numpy as np
import matplotlib.pyplot as plt# 定义一个矩阵
A = np.array([[3, 1], [1, 2]])# 进行奇异值分解
U, S, VT = np.linalg.svd(A)# 打印奇异值和奇异向量
print("奇异值:", S)
print("左奇异向量矩阵 U:\n", U)
print("右奇异向量矩阵 VT:\n", VT)# 可视化左奇异向量
plt.figure(figsize=(12, 6))plt.subplot(1, 2, 1)
plt.quiver(0, 0, U[0, 0], U[1, 0], angles='xy', scale_units='xy', scale=1, color='r', label=f'左奇异向量 1')
plt.quiver(0, 0, U[0, 1], U[1, 1], angles='xy', scale_units='xy', scale=1, color='b', label=f'左奇异向量 2')
plt.xlim(-1, 1)
plt.ylim(-1, 1)
plt.axhline(0, color='black', linewidth=0.5)
plt.axvline(0, color='black', linewidth=0.5)
plt.grid(color='gray', linestyle='--', linewidth=0.5)
plt.title('左奇异向量可视化')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.axis('equal')# 可视化右奇异向量
plt.subplot(1, 2, 2)
plt.quiver(0, 0, VT[0, 0], VT[1, 0], angles='xy', scale_units='xy', scale=1, color='g', label=f'右奇异向量 1')
plt.quiver(0, 0, VT[0, 1], VT[1, 1], angles='xy', scale_units='xy', scale=1, color='m', label=f'右奇异向量 2')
plt.xlim(-1, 1)
plt.ylim(-1, 1)
plt.axhline(0, color='black', linewidth=0.5)
plt.axvline(0, color='black', linewidth=0.5)
plt.grid(color='gray', linestyle='--', linewidth=0.5)
plt.title('右奇异向量可视化')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.axis('equal')plt.tight_layout()
plt.show()

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

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

相关文章

麒麟V10 arm cpu aarch64 下编译 RocketMQ-Client-CPP 2.2.0

国产自主可控服务器需要访问RocketMQ消息队列,最新的CSDK是2020年发布的 rocketmq-client-cpp-2.2.0 这个版本支持TLS模式。 用默认的版本安装遇到一些问题,记录一下。 下载Releases apache/rocketmq-client-cpp GitHubhttps://github.com/apache/roc…

Moonlight-16B-A3B: 变革性的高效大语言模型,凭借Muon优化器打破训练效率极限

近日,由Moonshot AI团队推出的Moonlight-16B-A3B模型,再次在AI领域引发了广泛关注。这款全新的Mixture-of-Experts (MoE)架构的大型语言模型,凭借其创新的训练优化技术,特别是Muon优化器的使用,成功突破了训练效率的极…

在windows下安装windows+Ubuntu16.04双系统(下)

这篇文章的内容主要来源于这篇文章,为正式安装windowsUbuntu16.04双系统部分。在正式安装前,若还没有进行前期准备工作(1.分区2.制作启动u盘),见《在windows下安装windowsUbuntu16.04双系统(上)》 二、正式安装Ubuntu …

一次Linux下 .net 调试经历

背景: Xt160Api, 之前在windows下用.net调用,没有任何问题。 但是移植到Linux去后,.net程序 调用 init(config_path) 总是报错 /root/test 找不到 traderApi.ini (/root/test 是程序目录) 然后退出程序 解决过程: 于是考虑是不是参数传错了&…

AI爬虫 :Firecrawl的安装和详细使用案例(将整个网站转化为LLM适用的markdown或结构化数据)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Firecrawl概述1.1 Firecrawl介绍1.2 Firecrawl 的特征1.3 Firecrawl 的功能1.4 Firecrawl的 API 密钥获取2. 安装和基本使用3. 使用 LLM 提取4. 无模式提取(curl语句)5. 使用操作与页面交互6. Firecrawl Cloud7. 移…

【Java集合夜话】第1篇:拨开迷雾,探寻集合框架的精妙设计

欢迎来到Java集合框架系列的第一篇文章!🌹 本系列文章将以通俗易懂的语言,结合实际开发经验,带您深入理解Java集合框架的设计智慧。🌹 若文章中有任何不准确或需要改进的地方,欢迎大家指出,让我…

网络安全知识:网络安全网格架构

在数字化转型的主导下,大多数组织利用多云或混合环境,包括本地基础设施、云服务和应用程序以及第三方实体,以及在网络中运行的用户和设备身份。在这种情况下,保护组织资产免受威胁涉及实现一个统一的框架,该框架根据组…

企业级云MES全套源码,支持app、小程序、H5、台后管理端

企业级云MES全套源码,支持app、小程序、H5、台后管理端,全套源码 开发环境 技术架构:springboot vue-element-plus-admin 开发语言:Java 开发工具:idea 前端框架:vue.js 后端框架&#xff…

Web爬虫利器FireCrawl:全方位助力AI训练与高效数据抓取

Web爬虫利器FireCrawl:全方位助力AI训练与高效数据抓取 一、FireCrawl 项目简介二、主要功能三、FireCrawl应用场景1. 大语言模型训练2. 检索增强生成(RAG):3. 数据驱动的开发项目4. SEO 与内容优化5. 在线服务与工具集成 四、安装…

[HelloCTF]PHPinclude-labs超详细WP-Level 6Level 7Level 8Level 9-php://协议

由于Level 6-9 关的原理都是通用的, 这里就拿第6关举例, 其他的关卡同理 源码分析 定位到代码 isset($_GET[wrappers]) ? include("php://".$_GET[wrappers]) : ; 与前几关发生变化的就是 php:// 解题分析 这一关要求我们使用 php协议 php:// 协议 php://filte…

《Linux 网络架构:基于 TCP 协议的多人聊天系统搭建详解》

一、系统概述 本系统是一个基于 TCP 协议的多人聊天系统,由一个服务器和多个客户端组成。客户端可以连接到服务器,向服务器发送消息,服务器接收到消息后将其转发给其他客户端,实现多人之间的实时聊天。系统使用 C 语言编写&#x…

Maven生命周期

三套生命周期,项目清理,项目构建,项目生成 我们主要关注五个阶段 clean:移除上一次构建生成的文件compile:编译项目源代码test:使用合适的单元测试框架运行测试package:将编译后的文件打包&am…

【JVM】内存区域划分,类加载机制和垃圾回收机制

本篇内容为了解 JVM 的内存区域划分,类加载机制,垃圾回收机制。实际开发中几乎用不到,但为了某些情况我们又不得不了解。 目录 一、JVM中的内存区域划分 1.1 内存区域划分考点 二、JVM的类加载机制 2.1 类加载流程 2.2 类加载什么时候会…

v-自定义权限指令与v-if互相影响导致报错Cannot read properties of null (reading ‘insertBefore‘)

项目场景&#xff1a; vue3vite项目中报错Cannot read properties of null (reading ‘insertBefore‘) 原因分析&#xff1a; :v-自定义权限指令与v-if互相影响 <el-button text bg type"primary" click"handleWrite(detailData,项目填报)" v-hasPe…

qt下载和安装教程国内源下载地址

qt不断在更新中&#xff0c;目前qt6日渐成熟&#xff0c;先前我们到官方下载或者国内镜像直接可以下载到exe文件安装&#xff0c;但是最近几年qt官方似乎在逐渐关闭旧版本下载通道&#xff0c;列为不推荐下载。但是qt5以其广泛使用和稳定性&#xff0c;以及积累大量代码使得qt5…

k8s1.30 部署calio网络

一、介绍 网路组件有很多种&#xff0c;只需要部署其中一个&#xff0c;推荐calio。 calio是一个纯三成的数据中心网络方案&#xff0c;calico支持广泛的平台。如k8s&#xff0c;openstack等。 calio在每一个计算节点利用linux内核&#xff0c;实现了一个高效的虚拟路由器来…

navicat导出文件密码解密

文章目录 一、概念二、导出文件1、创建的数据库连接信息2、导出带密码的连接信息3、查看导出后的文件 三、Python代码解析四、参考地址 一、概念 Navicat中导出的带密码的文件后缀是.ncx结尾的&#xff0c;里面是xml格式的文件&#xff0c;存储了数据库的连接&#xff0c;方便…

实验5:Vuex状态管理

Web前端开发技术课程实验报告 实验5&#xff1a;Vuex状态管理 一、实验目的&#xff1a; 掌握Vuex的工作原理和5个核心概念。掌握Vuex API接口的使用方法。 二、实验要求&#xff1a; 掌握mutations、actions、getters的定义和使用方法&#xff0c;完成以下实验内容。上交实…

深入解析 Linux 声卡驱动:从架构到实战

在嵌入式 Linux 设备中&#xff0c;音频功能的实现离不开 Linux 声卡驱动。而 ALSA (Advanced Linux Sound Architecture) 作为 Linux 内核的音频框架&#xff0c;提供了一整套 API 和驱动模型&#xff0c;帮助开发者快速集成音频功能。本篇文章以 WM8960 音频编解码器&#xf…

windows+ragflow+deepseek实战之一excel表查询

ragflows平台部署参考文章 Win10系统Docker+DeepSeek+ragflow搭建本地知识库 ragflow通过python实现参考这篇文章 ragflow通过python实现 文章目录 背景效果1、准备数据2、创建知识库3、上传数据并解析4、新建聊天助理5、测试会话背景 前面已经基于Win10系统Docker+DeepSeek+…