[无监督学习] 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 TruncatedSVDdata = [[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.mzph.cn/news/845770.shtml

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

相关文章

AI产品导航站

1、AI产品导航站 (chat2ai.cn)

更新mirh connect 内置derby数据库密码

更新mirh connect 内置derby数据库密码 1、下载derby连接客户端 https://archive.apache.org/dist/db/derby/ 选择任意版本即可,比如 https://archive.apache.org/dist/db/derby/db-derby-10.14.2.0/db-derby-10.14.2.0-bin.zip 2、连接mirh文件数据库 1、把mi…

UnityAPI学习之游戏物体的方法使用

目录 游戏物体 创建游戏物体的三种方式 组建的获取和查找 游戏物体的方法与其他成员变量 游戏物体的生成 游戏物体的激活状态/标签(tag)/层级(layer) 游戏物体的激活与失活 游戏物体的查找 1. 名称查找(Find) 2. 通过标签查找游戏物体(FindGameObjectWithT…

关于linux程序的查看、前台运行、后台运行、杀死的管理操作。

前言 在Linux中, 程序(program)是放在磁盘上的程序,是不会执行的。 进程(process)是程序被触发,从而加载到内存中的,会被CPU随机执行。 Linux中,有非常多的进程在实时运…

如何让Google收录网页?

确保网页被Google快速且持续地收录,页面的质量起着至关重要的作用。高质量的网页不仅更容易被搜索引擎收录,而且能够提高网页在搜索结果中的排名,想确保页面的质量,要保持原创,确保你的内容是独一无二的,别…

Python基础教程——数据类型和变量

数据类型和变量 Python使用缩进来组织代码块,一般使用4个空格的缩进.使用#来注释一行,其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块.Python对大小写敏感. 1.1 整数 Python可以处理任意大小的整数,包括负整数,写法与数学上写法一致,例如:-10…

Qt Creator中, ui设计中设置属性无效, 会自动变回去问题

最近学qt遇到个问题, 很奇怪, 具体表现为: 我想修改这个字体大小为12, 但是修改后会自动变回9, 我读取qss方式设置样式, 依然无效!找了很久,最终发现是我在最上层设置了字体大小, 导致下面的所有控件, 全部设置字体无效&#xff…

【CPP】栈简介及简化模拟实现

CPP栈和队列简单模拟实现 目录 1. 栈的简介2. 栈简化模拟实现3. 栈练习题 1. 栈的简介 栈 是一种 特殊的线性表,具有数据 先进后出 特点。 具体参考:【数据结构】栈 CPP库参考文档:stl_stack 注意: 1.stack本身 不支持迭代器操…

骨传导耳机防踩雷秘诀是什么?六大选购技巧独家揭秘!

相信大家都已经深有体会,拿那种常规的入耳式无线蓝牙耳机来做运动耳机,很难满足运动需要。如果选择前两年流行的颈挂式无线运动蓝牙耳机,虽然简单轻巧,但也是入耳式设计,长时间佩戴耳朵不舒服。这样看来,运…

Python-3.12.0文档解读-内置函数sorted()详细说明+记忆策略+常用场景+巧妙用法+综合技巧

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 Python-3.12.0文档解读详细说明 功能描述 参数说明 用法示例 备注 进阶用法 参考…

【Qt】【模型视图架构】代理模型示例

文章目录 1. 基本排序/过滤模型Basic Sort/Filter Model Example2. 自定义排序/过滤模型Custom Sort/Filter Model ExampleFilterLineEdit类定义及实现MySortFilterProxyModel类定义及实现 1. 基本排序/过滤模型Basic Sort/Filter Model Example 官方提供的基本排序/过滤模型示…

【算法】贪心算法——柠檬水找零

题解:柠檬水找零(贪心算法) 目录 1.题目2.题解3.参考代码4.证明5.总结 1.题目 题目链接:LINK 2.题解 分情况讨论 贪心算法 当顾客为5元时,收下当顾客为10元时,收下10元并找回5元当顾客为20元时,收下20元并找回10…

大泽动力车载柴油发电机的特点和优势有哪些

大泽动力车载柴油发电机具有一系列显著的特点和优势,以下是对其的详细介绍: 低噪音性能:大泽动力车载柴油发电机具备明显的低噪音性能,其噪音限值在距离机组7米处测得为70dB(A),这为用户提供了一个相对安静的工作环境…

Java18+​App端采用uniapp+开发工具 idea hbuilder智能上门家政系统源码,一站式家政服务平台开发 家政服务(师傅端)介绍

Java18​App端采用uniapp开发工具 idea hbuilder智能上门家政系统源码,一站式家政服务平台开发 家政服务(师傅端)介绍 家政服务师傅端是一个专为家政服务人员设计的平台,该平台旨在提供便捷、高效的工作机会,同时确保…

html期末复习速览

一.基础标签 1.段落标签<p></p> 特点&#xff1a;分段分割 2.标题标签<h1></h1>……<h6></h6> 特点&#xff1a;文字加粗&#xff0c;单独占一行 3.换行标签<br /> 特点&#xff1a;单标签&#xff0c;强制换行 二.文本格式化…

View->Bitmap缩放到自定义ViewGroup的任意区域(Matrix方式绘制Bitmap)

Bitmap缩放和平移 加载一张Bitmap可能为宽高相同的正方形&#xff0c;也可能为宽高不同的矩形缩放方向可以为中心缩放&#xff0c;左上角缩放&#xff0c;右上角缩放&#xff0c;左下角缩放&#xff0c;右下角缩放Bitmap中心缩放&#xff0c;包含了缩放和平移两个操作&#xf…

SpringBoot 多模块 多环境 项目 单元测试

环境描述 假设项目中有以下三个yml文件&#xff1a; application.ymlapplication-dev.ymlapplication-prod.yml 假设项目各Module之间依赖关系如下&#xff1a; 其中&#xff0c;D依赖C&#xff0c;C依赖B&#xff0c;B依赖A&#xff0c;D对外提供最终的访问接口 现在要想采…

“两客一危”车辆综合监控信息化产品及应用分析

引言 随着科技的不断进步和社会的发展&#xff0c;“两客一危”车辆&#xff08;即长途客车、旅游包车和危险品运输车&#xff09;的安全监管问题日益凸显。为了提升车辆的安全性能和管理效率&#xff0c;综合监控信息化产品应运而生。本文将对这一产品进行详细介绍&#xff0…

像艺术家一样工作

接下来开始翻译这本小册子 豆瓣评分还是挺高的&#xff0c;目前在国内没有看到有在售的翻译版本 书名直译的话是&#xff1a;像艺术家一样去偷 作者可能是为了制造营销话题&#xff0c;所以起了这么一个名字 但是偷这个词总归不太体面&#xff0c;所以我把书名翻译为&#…

随便用css换个渐变的太阳

来源于GPT4o&#xff1a;代码来源 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>渐变色上半圆…