[无监督学习] 11.详细图解LSA

LSA
LSA(Latent Semantic Analysis,潜在语义分析)是一种自然语言处理技术。作为一种降维算法,它常被用于信息搜索领域。
使用 LSA 能够从大量的文本数据中找出单词之间的潜在关联性。


概述
LSA 是在 1988 年被提出的算法,用于信息搜索领域。当时信息搜索的做法是,事先对作为搜索对象的文本中包含的单词建立索引(index),如果索引与搜索关键字相同,就将该文本加入到搜索结果中。
但是这种方法有一个缺点:如果对搜索对象建立的索引与搜索关键字有一点点不同,那就无法很好地找到信息。假设有一篇索引中包含“车”的文章,在使用“汽车”这个搜索关键字搜索时,就会出现搜索结果中没有这篇文章的问题(同义性的问题)。虽然我们人类都知道“车”和“汽车”是含义基本上相同的单词,但是一个词一个词地教给计算机“这个单词和这个单词含义相似”的做法是不现实的。
使用 LSA 就可以根据大量文本自动计算单词和单词的相似度,以及单词和文本的相似度。
通过 LSA 对文本和单词的矩阵进行降维,将其变换为潜在语义空间(图 3-5)。这种变换使用矩阵分解进行。矩阵分解是指将某个矩阵表示为多个矩阵的乘积的形式。矩阵分解是如何用于无监督学习的降维算法的呢?下面的“算法说明”部分将进行介绍。

▲图 3-5 潜在语义空间的示意图

在单词空间中,车和汽车都被当作正交维度处理,而在语义空间中,二者被表示为相似的单词。


算法说明
下面结合具体的例子来讲解矩阵分解和降维。
首先将以下文本变换为矩阵 X。矩阵 X 的各元素是文本中出现的单词的个数(表 3-1)。

  • 坐汽车去公司
  • 坐车去的
  • 在餐厅吃汉堡牛肉饼
  • 在餐厅吃意大利面

▼表 3-1 文本中出现的单词的个数

我们先未卜先知地看一下对矩阵 X 进行矩阵分解后的结果。8 行 4 列的 X 被表示为 8 行 4 列的 U、4 行 4 列的矩阵 D 和 4 行 4 列的矩阵的乘积的形式。

其中,U 是包含单词和归纳的特征的变换信息的矩阵,D 是包含信息的重要度的矩阵,V 是包含归纳的特征和文本的变换信息的矩阵。
另外,D 是一个对角矩阵,(1, 1)、(2, 2) 等对角线上的元素之外的元素都是 0,对角元素按信息的重要度从大到小排列。在使用 3 个矩阵降维时,我们重点关注 D。下面思考这样一个需求:原始数据有 4 个特征,但我们希望将其降维到 2 个特征。
从 D 的 4 个值中选出最重要的 2 个,建立一个 2 行 2 列的对角矩阵。为了匹配这个 D,我们相应地删去 U 的第 3 列和第 4 列,以及 的第 3 列和第 4 列,将它们分别变形为 8 行 2 列和 2 行 4 列的矩阵。

这些矩阵的乘积 是原来的矩阵 X 的近似。即使我们只用了 D 的值中的一半(2 个值), 还是在一定程度上保留了原来的信息。
当作为降维算法使用时,我们要用到的是在变换为原始特征的形式之前(在乘以之前)的 是一个 8 行 2 列的矩阵,我们可以将其解释为从归纳的特征中选择的 2 个重要度高的特征(图 3-6)。

▲图 3-6 对 n 行 d 列的 X 进行矩阵分解的示意图(在将维度减少到 个时,使用
我们来看一下 的具体数值。设这里归纳的 2 个特征为 A 和 B。A 和 B 没有明确的意义,但它们是基于单词的关联性而创建的具有潜在意义的特征(表 3-2)。
▼表 3-2 两个特征

“汽车”和“车”拥有变量 B 的值,“汉堡牛肉饼”和“意大利面”拥有变量 A 的值。A 和 B 的特征值显示了各个单词之间的关联性(图 3-7)。

▲图 3-7 以潜在变量表示的单词


示例代码
下面使用 Python 代码解决前面探讨的问题。假设有一个使用 8 个变量(= 单词的个数)表示的数据集,现在用 2个潜在变量来表示它。        

from sklearn.decomposition import TruncatedSVD

data = [[1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 0, 1, 1],
        [0, 0, 1, 0],
        [0, 0, 1, 1],
        [0, 0, 0, 1]]
n_components = 2 # 潜在变量的个数
model = TruncatedSVD(n_components=n_components)
model.fit(data)
print(model.transform(data)) # 变换后的数据
print("*******************************")
print(model.explained_variance_ratio_) # 贡献率
print("*******************************")
print(sum(model.explained_variance_ratio_)) # 累计贡献率

结果:

[[ 0.00000000e+00  8.50650808e-01]
 [ 0.00000000e+00  8.50650808e-01]
 [-5.43895982e-16  1.37638192e+00]
 [-5.43895982e-16  5.25731112e-01]
 [ 1.41421356e+00  4.04384525e-16]
 [ 7.07106781e-01  2.02192262e-16]
 [ 1.41421356e+00  4.04384525e-16]
 [ 7.07106781e-01  2.02192262e-16]]
*******************************
[0.38596491 0.27999429]
*******************************
0.6659592065833292

另外,与 PCA 一样,我们也可以检查 LSA 变换后的矩阵中包含多少原始信息。使用了 scikit-learn 的上述代码输出的累计贡献率约为 0.67,表明这 2 个变量包含了约 67% 的原始数据的信息。


详细说明
使用 LSA 时的注意事项
“算法说明”部分提到的矩阵分解是一种叫作奇异值分解的技术。使用了奇异值分解的 LSA 在信息检索中的应用备受关注,它具有以新的空间表示文本等优点。但在实际使用中,需要注意一些问题。
一是变换后的矩阵有时难以解释。在通过奇异值分解降维时,各个维度可能是正交的,矩阵中的元素也可能是负值。因此,与之相比,还是后面即将介绍的 NMF 和 LDA 等算法的结果更容易解释。
二是 LSA 的计算成本有时很高。特别是在用于文本时,由于原始矩阵的维度就是单词的个数,所以 LSA 必须在非常大的矩阵上进行奇异值分解。
还有一个与计算成本有关的问题:随着新词的加入,原有的矩阵必须重新创建,我们必须在此基础上重新计算,所以模型的更新难度很大。

———————————————————————————————————————————

文章来源:书籍《图解机器学习算法》

作者:秋庭伸也 杉山阿圣 寺田学

出版社:人民邮电出版社

ISBN:9787115563569

本篇文章仅用于学习和研究目的,不会用于任何商业用途。引用书籍《图解机器学习算法》的内容旨在分享知识和启发思考,尊重原著作者秋庭伸也 杉山阿圣 寺田学的知识产权。如有侵权或者版权纠纷,请及时联系作者。
———————————————————————————————————————————

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java(七)——Clonable接口与深拷贝

文章目录 Clonable接口与深拷贝克隆对象深拷贝 Clonable接口与深拷贝 克隆对象 考虑:怎样将对象克隆一份? 答案就在本文,我们先给出一步一步的思考过程,然后总结: 首先设置情景:我们有一个Person类&#x…

Wireshark Lua插件入门

摘要 开发中经常通过抓包分析协议,对于常见的协议如 DNS wireshark 支持自动解析,便于人类的理解,对于一些私有协议,wireshark 提供了插件的方式自定义解析逻辑。 1 动手 废话少说,直接上手。 第一步当然是装上wiresh…

[C++]vector的模拟实现

下面是简单的实现vector的功能,没有涉及使用内存池等复杂算法来提高效率。 一、vector的概述 (一)、抽象数据类型定义 容器:向量(vector)vector是表示大小可以变化的数组的序列容器。像数组一样&#xf…

GPT-4o vs. GPT-4 vs. Gemini 1.5 性能评测,谁更胜一筹!

OpenAI 最近推出了 GPT-4o,OpenAI有一次火爆了,其图像、音频、视频的处理能力非常强。 最令人印象深刻的是,它支持用户与 ChatGPT 实时互动,并且能够处理对话中断。 而且,OpenAI 免费开放了 GPT-4o API 的访问权限。…

[ROS 系列学习教程] 建模与仿真 - 使用 Xacro 优化 urdf

ROS 系列学习教程(总目录) 本文目录 一、使用属性表示常量二、使用公式三、使用宏定义四、include 其他文件五、优化实践 对于前文介绍的 urdf 模型,我们可以使用 xacro 来优化,使其更易于维护。 优化点: 多次用到的尺寸用常量定义计算使用…

嵌入式linux系统中图片处理详解

大家好,今天给大家分享一下,嵌入式中如何进行图像处理,常见的处理方式有哪几种?这次将详细分析一下 第一:BMP图形处理方式 图形的基本特点,所有的图像文件,都是一种二进制格式文件,每一个图像文件,都可以通过解析文件中的每一组二进制数的含义来获得文件中的各种信息…

Scriptings Tracker

"Scriptings Tracker"(脚本追踪器)可能是一个用于追踪脚本(scriptings)的工具或系统。它可以用于记录和管理脚本的创建、修改、版本控制和执行情况。这种工具可能被用于软件开发、自动化任务、电影制作、戏剧等领域。 …

ubuntu系统下安装mysql的步骤详解

一、下载安装包 下载地址: https://dev.mysql.com/downloads/repo/apt 跳转到这个页面: 直接点击Download。 直接点击最下面的开始下载安装包即可。 二、将安装包下载到ubuntu系统中 先将用户切换成root用户,把下载好的安装包复制到桌面上&…

windows配置dns访问git , 加快访问速度保姆级教程

设置 DNS 访问 Git 需要修改电脑的 DNS 配置。下面是具体的操作流程: 第一步:打开命令提示符或终端窗口 在 Windows 系统中,可以按下 Win R 组合键,然后输入 “cmd”,按下 Enter 键打开命令提示符窗口。在 macOS 或 …

TCP/IP(网络编程)

一、网络每一层的作用 *网络接口层和物理层的作用:屏蔽硬件的差异,通过底层的驱动,会提供统一的接口,供网络层使用 *网络层的作用:实现端到端的传输 *传输层:数据应该交给哪一个任…

[数据集][目标检测]老鼠检测数据集VOC+YOLO格式4107张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4107 标注数量(xml文件个数):4107 标注数量(txt文件个数):4107 标注…

测试工具fio

一、安装部署 fio是一款优秀的磁盘IO测试工具,在Linux中比较常用于测试磁盘IO 其下载地址:https://brick.kernel.dk/snaps/fio-2.1.10.tar.gz 或者登录其官网:http://freshmeat.sourceforge.net/projects/fio/ 进行下载。 tar -zxvf fio-…

RabbitMQ延时队列

一、RabbitMQ下载并使用插件 1、查看RabbitMQ插件的文件路径 docker inspect rabbitmq 找到Mounts下面Name:rabbitmq_plugin的Source即为插件路径 使用 cd 进入到该目录 2、下载插件 wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download…

vue前端Echars

<template><div :class"className" :style"{height:height,width:width}" /> </template><script> import * as echarts from echarts require(echarts/theme/macarons) // echarts theme 柱状图 import resize from ./mixins/re…

win10环境下nodejs安装过程

打开 https://nodejs.org/en/官网下载node.js 2.下载完成后的安装文件为node-v16.16.0-x64.msi&#xff0c;双击进行安装即可。 3.一直默认安装&#xff0c;记得可以更改安装路径 4.其他不用打勾&#xff0c;一直next&#xff0c;安装完成即可。 5.安装完成后&#xff0c;wi…

AI在线UI代码生成,不需要敲一行代码,聊聊天,上传图片,就能生成前端页面的开发神器

ioDraw的在线UI代码生成器是一款开发神器&#xff0c;它可以让您在无需编写一行代码的情况下创建前端页面。 主要优势&#xff1a; 1、极简操作&#xff1a;只需聊天或上传图片&#xff0c;即可生成响应式的Tailwind CSS代码。 2、节省时间&#xff1a;自动生成代码可以节省大…

【论文复现|智能算法改进】融合黑寡妇思想的蜣螂优化算法

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】蜣螂优化算法&#xff08;DBO&#xff09;原理及实现 2.改进点 ICMIC混沌映射 z n 1 sin ⁡ ( α z n ) , α ∈ ( 0 , ∞ ) (1) z_{n1}\sin(\frac{\alpha}{z_n}),\alpha\in(0,\infty)\ta…

3D目标检测入门:探索OpenPCDet框架

前言 在自动驾驶和机器人视觉这两个飞速发展的领域中&#xff0c;3D目标检测技术扮演着核心角色。随着深度学习技术的突破性进展&#xff0c;3D目标检测算法的研究和应用正日益深入。OpenPCDet&#xff0c;这个由香港中文大学OpenMMLab实验室精心打造的开源工具箱&#xff0c;…

【六一儿童节】的科技奇幻旅程:解锁【机器学习】与【人工智能】的无限创意

目录 一、机器学习与人工智能简介 二、六一儿童节的特殊意义 三、项目概述&#xff1a;智能绘画助手 四、技术栈和工具 五、数据准备 六、模型训练 1. 数据预处理 2. 构建和训练模型 七、智能绘画助手的实现 1. 搭建Flask应用 2. 客户端界面 八、扩展功能与优化 1…

SQL面试题001--图文并茂解答连续登录问题

连续登录问题是经典问题&#xff0c;今天做下总结。首先对原数据进行处理成客户和日期是不重复的&#xff0c;且日期是 yyyy-MM-dd 格式&#xff0c;这样好使用日期相关的函数。 本文参考在文末&#xff0c;增加了图表&#xff0c;更加容易理解。 表&#xff1a;temp01_cust_…