第18章 概率潜在语义分析:课后习题

news2024/9/9 4:50:36

本章概要:
1.概率潜在语义分析是利用概率生成模型对文本集合进行话题分析的方法。概率潜在语义分析受潜在语义分析的启发提出两者可以通过矩阵分解关联起来。

给定一个文本集合,通过概率潜在语义分析,可以得到各个文本生成话题的条件概率分布,以及各个话题生成单词的条件概率分布。

概率潜在语义分析的模型有生成模型,以及等价的共现模型。其学习策略是观测数据的极大似然估计,其学习算法是EM算法。

2.生成模型表示文本生成话题,话题生成单词从而得到单词文本共现数据的过程;假设每个文本由一个话题分布决定,每个话题由一个单词分布决定。单词变量 w w w与文本变量 d d d是观测变量话题变量 z z z是隐变量。

生成模型通过以下过程生成文档:

  1. 选择一个文档 d d d
  2. 从文档 d d d 的主题分布 P ( z ∣ d ) P(z|d) P(zd) 中选择一个主题 z z z
  3. 从主题 z z z 的词语分布 P ( w ∣ z ) P(w|z) P(wz) 中选择一个词语 w w w

生成模型的定义如下:
P ( T ) = ∏ ( w , d ) P ( w , d ) n ( w , d ) P ( T ) = \prod _ { ( w , d ) } P ( w , d ) ^ { n ( w , d ) } P(T)=(w,d)P(w,d)n(w,d)

P ( w , d ) = P ( d ) P ( w ∣ d ) = P ( d ) ∑ z P ( z ∣ d ) P ( w ∣ z ) P ( w , d ) = P ( d ) P ( w | d ) = P ( d ) \sum _z P ( z | d ) P ( w | z ) P(w,d)=P(d)P(wd)=P(d)zP(zd)P(wz)
3.共现模型描述文本单词共现数据拥有的模式。共现模型的定义如下:
P ( T ) = ∏ ( w , d ) P ( w , d ) n ( w , d ) P ( T ) = \prod _ { ( w , d ) } P ( w , d ) ^ { n ( w , d ) } P(T)=(w,d)P(w,d)n(w,d)

P ( w , d ) = ∑ z ∈ Z P ( z ) P ( w ∣ z ) P ( d ∣ z ) P ( w , d ) = \sum _ { z \in Z } P ( z ) P ( w | z ) P ( d | z ) P(w,d)=zZP(z)P(wz)P(dz)

4.概率潜在语义分析的模型的参数个数是 O ( M ⋅ K + N ⋅ K ) O ( M \cdot K + N \cdot K ) O(MK+NK)。现实中 K ≪ M K \ll M KM,所以概率潜在语义分析通过话题对数据进行了更简洁地表示,实现了数据压缩。

5.模型中的概率分布 P ( w ∣ d ) P ( w | d ) P(wd)可以由参数空间中的单纯形表示。 M M M维参数空间中,单词单纯形表示所有可能的文本的分布,其中的话题单纯形表示在 K K K个话题定义下的所有可能的文本的分布。话题单纯形是单词单纯形的子集,表示潜在语义空间。

6.概率潜在语义分析的学习通常采用EM算法通过迭代学习模型的参数, P ( w ∣ z ) P ( w | z ) P(wz)
P ( z ∣ d ) P ( z| d ) P(zd),而 P ( d ) P(d) P(d)可直接统计得出。

概率潜在语义模型(生成模型)参数估计的EM算法:

输入: 设单词集合为 W = { w 1 , w 2 , . . . , w M } W = \{w_{1}, w_{2},..., w_{M}\} W={w1,w2,...,wM}, 文本集合为 D = { d 1 , d 2 , . . . , d N } D=\{d_{1}, d_{2},..., d_{N}\} D={d1,d2,...,dN}, 话题集合为 Z = { z 1 , z 2 , . . . , z K } Z=\{z_{1}, z_{2},..., z_{K}\} Z={z1,z2,...,zK}, 共现数据 { n ( w i , d j ) } , i = 1 , 2 , . . . , M , j = 1 , 2 , . . . , N ; \left \{ n(w_{i}, d_{j}) \right \}, i = 1,2,..., M, j = 1,2,...,N; {n(wi,dj)},i=1,2,...,M,j=1,2,...,N;

输出: P ( w i ∣ z k ) P(w_{i}|z_{k}) P(wizk) P ( z k ∣ d j ) P(z_{k}|d_{j}) P(zkdj).

  1. 设置参数 P ( w i ∣ z k ) P(w_{i}|z_{k}) P(wizk) P ( z k ∣ d j ) P(z_{k}|d_{j}) P(zkdj) 的初始值。

  2. 迭代执行以下E步,M步,直到收敛为止。

E步:
P ( z k ∣ w i , d j ) = P ( w i ∣ z k ) P ( z k ∣ d j ) ∑ k = 1 K P ( w i ∣ z k ) P ( z k ∣ d j ) P(z_{k}|w_{i},d_{j})=\frac{P(w_{i}|z_{k})P(z_{k}|d_{j})}{\sum_{k=1}^{K}P(w_{i}|z_{k})P(z_{k}|d_{j})} P(zkwi,dj)=k=1KP(wizk)P(zkdj)P(wizk)P(zkdj)

M步:
P ( w i ∣ z k ) = ∑ j = 1 N n ( w i , d j ) P ( z k ∣ w i , d j ) ∑ m = 1 M ∑ j = 1 N n ( w m , d j ) P ( z k ∣ w m , d j ) P(w_{i}|z_{k})=\frac{\sum_{j=1}^{N}n(w_{i},d_{j})P(z_{k}|w_{i},d_{j})}{\sum_{m=1}^{M}\sum_{j=1}^{N}n(w_{m},d_{j})P(z_{k}|w_{m},d_{j})} P(wizk)=m=1Mj=1Nn(wm,dj)P(zkwm,dj)j=1Nn(wi,dj)P(zkwi,dj)

P ( z k ∣ d j ) = ∑ i = 1 M n ( w i , d j ) P ( z k ∣ w i , d j ) n ( d j ) P(z_{k}|d_{j}) = \frac{\sum_{i=1}^{M}n(w_{i},d_{j})P(z_{k}|w_{i},d_{j})}{n(d_{j})} P(zkdj)=n(dj)i=1Mn(wi,dj)P(zkwi,dj)

其他公式见文章:潜在语义分析 (LSA),概率潜在语义分析 (PLSA)

习题18.1

证明生成模型与共现模型是等价的。

P ( w , d ) = P ( d ) ∑ z P ( z ∣ d ) P ( w ∣ z ) = ∑ z P ( w ∣ z ) P ( z ∣ d ) P ( d ) = ∑ z P ( w , z ∣ d ) P ( d ) = ∑ z P ( w , d , z ) = ∑ z P ( z ) P ( w , d ∣ z ) = ∑ z P ( z ) P ( w ∣ z ) P ( d ∣ z ) \begin{aligned} P(w,d) &= P(d) \sum_z P(z|d)P(w|z) \\ &= \sum_z P(w|z)P(z|d)P(d) \\ &= \sum_z P(w,z|d)P(d) \\ &= \sum_z P(w,d,z) \\ &= \sum_z P(z)P(w,d|z) \\ &= \sum_z P(z)P(w|z)P(d|z) \end{aligned} P(w,d)=P(d)zP(zd)P(wz)=zP(wz)P(zd)P(d)=zP(w,zd)P(d)=zP(w,d,z)=zP(z)P(w,dz)=zP(z)P(wz)P(dz)

习题18.2

推导共现模型的EM算法。

解答:

推导过程与生成模型的EM算法是一致的,非常容易。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

习题18.3

对以下文本数据集进行概率潜在语义分析。
在这里插入图片描述

import numpy as np


class EMPlsa:
    def __init__(self, max_iter=100, tol=1e-4, random_state=2022):
        """
        基于生成模型的EM算法的概率潜在语义模型
        :param max_iter: 最大迭代次数
        :param tol: 收敛阈值
        :param random_state: 随机种子
        """
        self.max_iter = max_iter
        self.tol = tol
        self.random_state = random_state

    def fit(self, X, K):
        """
        :param X: 单词-文本矩阵
        :param K: 话题个数
        :return: P(w_i|z_k) 和 P(z_k|d_j)
        """
        # M, N分别为单词个数和文本个数
        M, N = X.shape

        # 计算n(d_j)
        n_d = np.sum(X, axis=0)

        # (1)设置参数P(w_i|z_k)和P(z_k|d_j)的初始值
        np.random.seed(self.random_state)
        p_wz = np.random.random((M, K))
        p_zd = np.random.random((K, N))

        # 归一化初始值
        p_wz /= np.sum(p_wz, axis=0)
        p_zd /= np.sum(p_zd, axis=0)

        prev_likelihood = None

        # (2)迭代执行E步和M步,直至收敛为止
        for iteration in range(self.max_iter):
            # E步
            P = np.einsum('ik,kj->ijk', p_wz, p_zd) # 对于每一个词 i 和每一个文档 j,计算所有主题 k 的组合。具体来说,每个 P[i][j][k] 是 p_wz[i][k] * p_zd[k][j] 的结果。
            P /= np.sum(P, axis=2, keepdims=True) # 归一化操作,使得每个词和文档在所有主题上的概率分布之和为 1

            # M步
            p_wz = np.einsum('ij,ijk->ik', X, P)
            p_wz /= np.sum(p_wz, axis=0, keepdims=True)

            p_zd = np.einsum('ij,ijk->kj', X, P)
            p_zd /= np.sum(p_zd, axis=1, keepdims=True)

            # 计算对数似然
            likelihood = np.sum(X * np.log(np.einsum('ik,kj->ij', p_wz, p_zd)))
            if prev_likelihood is not None and abs(likelihood - prev_likelihood) < self.tol:
                break
            prev_likelihood = likelihood

        return p_wz, p_zd

# 输入文本-单词矩阵,共有9个文本,11个单词
X = np.array([[0, 0, 1, 1, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 1, 0, 0, 1],
              [0, 1, 0, 0, 0, 0, 0, 1, 0],
              [0, 0, 0, 0, 0, 0, 1, 0, 1],
              [1, 0, 0, 0, 0, 1, 0, 0, 0],
              [1, 1, 1, 1, 1, 1, 1, 1, 1],
              [1, 0, 1, 0, 0, 0, 0, 0, 0],
              [0, 0, 0, 0, 0, 0, 1, 0, 1],
              [0, 0, 0, 0, 0, 2, 0, 0, 1],
              [1, 0, 1, 0, 0, 0, 0, 1, 0],
              [0, 0, 0, 1, 1, 0, 0, 0, 0]])

# 设置精度为3
np.set_printoptions(precision=3, suppress=True)

# 假设话题的个数是3个
k = 3

em_plsa = EMPlsa(max_iter=1000)

p_wz, p_zd = em_plsa.fit(X, 3)

print("参数P(w_i|z_k):")
print(p_wz)
print("参数P(z_k|d_j):")
print(p_zd)
参数P(w_i|z_k):
[[0.    0.188 0.   ]
 [0.    0.    0.2  ]
 [0.192 0.    0.   ]
 [0.096 0.    0.1  ]
 [0.    0.094 0.1  ]
 [0.423 0.246 0.2  ]
 [0.    0.188 0.   ]
 [0.096 0.    0.1  ]
 [0.    0.    0.3  ]
 [0.    0.283 0.   ]
 [0.192 0.    0.   ]]
参数P(z_k|d_j):
[[0.    0.192 0.    0.163 0.192 0.    0.289 0.163 0.   ]
 [0.377 0.    0.377 0.123 0.    0.    0.    0.123 0.   ]
 [0.    0.    0.    0.    0.    0.5   0.    0.    0.5  ]]

使用书籍:李航《机器学习方法》
习题解答:https://datawhalechina.github.io/statistical-learning-method-solutions-manual/#/chapter18/ch18

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

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

相关文章

WebDriver与浏览器通信的深度剖析与探索

在自动化测试的世界里&#xff0c;WebDriver无疑是连接测试脚本与浏览器之间的桥梁&#xff0c;它让复杂的自动化测试成为可能。本文将深入探讨WebDriver与浏览器之间的通信机制&#xff0c;揭示它们之间如何协同工作&#xff0c;以及这一过程中涉及的关键技术和挑战。 一、We…

2493-04A-6 同轴连接器

型号简介 2493-04A-6是Southwest Microwave的连接器。该连接器是一种端子连接器&#xff0c;采用 1.0 毫米插头&#xff08;公头&#xff09;进行连接。它由多个部件组成&#xff0c;包括过渡块、接地板、螺纹夹紧板、发射针、冷板、底座、电路板和外壳等。 型号特点 外壳&…

stm32——AD采集以及DMA

今天继续我们的STM32的内容学习&#xff0c;我使用的单片机是STM32F103VCT6,通过Keil Array Visualization软件来观测AD采样出来的波形。先来看看本次实验用到的硬件知识。 首先是ADC&#xff08;Analog-to-Digital Converter&#xff09;是模拟信号转数字信号的关键组件&#…

[Linux]五种IO模型(图文讲解+故事讲解)

目录 一、对IO的理解&#xff1a;等拷贝 等 拷贝 二、五种IO模型&#xff08;解释其概念&#xff09; 1.阻塞IO 2.非阻塞IO 3.信号驱动IO 4.IO多路复用 5.异步IO IO速度比较 三、一个故事让你了解五种IO模型 四、同步VS异步 阻塞VS非阻塞 同步VS异步 阻塞VS非阻…

常用录屏软件,分享这四款宝藏软件!

在数字化时代&#xff0c;录屏软件已经成为我们日常工作、学习和娱乐中不可或缺的工具。无论你是需要录制教学视频、游戏过程&#xff0c;还是进行产品演示&#xff0c;一款高效、易用的录屏软件都能让你的工作事半功倍。今天&#xff0c;就为大家揭秘四款宝藏级录屏软件&#…

深度|不同数据系统中的“一致性”(Consistency)含义的区别

“你们的系统能实现强一致性吗&#xff1f;”作为过去几年一直在开发流处理系统的从业者&#xff0c;我经常被问到这个问题。我时常想自信地推销我们的产品&#xff0c;但现实情况是&#xff0c;回答这个问题并不简单。其中的挑战并不在于问题本身&#xff0c;而在于 “一致性”…

【芯片方案】珠宝手机秤方案

珠宝手机秤作为一种便携式电子称重设备&#xff0c;因其小巧、便携、精度高等特点&#xff0c;广泛应用于各种需要精确称重的场景。可能这个目前在国内使用的人比较少&#xff0c;但在西方国家珠宝手机秤却是可以用来送礼的物品。因为珠宝手机秤的外观跟手机外观大多相似&#…

【数据结构】排序——快速排序

前言 本篇博客我们继续介绍一种排序——快速排序&#xff0c;让我们看看快速排序是怎么实现的 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ​ 目录 …

Python高级(三)_正则表达式

Python高级-正则表达式 第三章 正则表达式 在开发中会有大量的字符串处理工作,其中经常会涉及到字符串格式的校验。 1、正则表达式概述 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、…

springboot企业培训管理系统-计算机毕业设计源码50804

摘要 本研究旨在开发一套高效、安全、易用的springboot企业培训管理系统。该系统致力于提升企业的培训管理效率&#xff0c;确保培训质量与效果的持续优化。通过整合先进的AI技术&#xff0c;在企业培训管理中发挥着不可或缺的作用。 通过采用Java作为主要开发语言&#xff0c;…

AI Earth——2020年中国建筑物高度CNBH数据产品(10m)

数据介绍: 复旦大学生命科学学院GC3S团队(吴万本博士、赵斌教授等)利用多源地球观测数据和机器学习技术,构建了中国第一个10米分辨率的建筑高度估计模型(CNBH-10m)。基于此模型建立了中国10米分辨率的建筑高度数据集。此数据集基于全天候地球观测(雷达、光学和夜光图像)…

USB PD SINK协议取电芯片不同品牌介绍对比-在选择PD SINK 协议芯片时,用户需要综合考虑各方面的因素,包括工作耐压、稳定性、兼容性等

PD SINK协议芯片是现代通信技术中的一项重要技术&#xff0c;它起着连接不同系统的桥梁作用。协议芯片内部集成了各种不同的通信协议&#xff0c;如蓝牙、Wi-Fi、以太网等&#xff0c;使不同设备之间的通信变得更加简单和高效。协议芯片推动了信息通信技术的发展。在过去&#…

赋能 Web3 与 AI 的未来,TARS 协议如何重塑去中心化生态?

TARS 协议如何在 Web3 生态中引领 AI 技术的变革&#xff1f;作为新兴的模块化 AI 平台&#xff0c;TARS 通过整合先进的 AI 模型和区块链技术&#xff0c;为用户提供了更加智能、安全和高效的解决方案。让我们一起回顾第 16 期 TinTinAMA 的精彩内容吧&#xff01; 在 TinTinL…

1. openstack

openstack 一、云的简介1、优势2、类型2.1 根据提供的服务范围2.2 根据提供服务不同 二、openstack核心组件1、核心组件2、nova组件2.1 nova核心进程 3、glance组件4、cinder组件5、neutron组件6、swift组件7、cellometer组件8、keystone组件9、heat组件10、dashboard 一、云的…

超简单的通配证书签发工具,免费,无需安装任何插件到本地

常见的acme.sh 或者 lego等工具需要配置&#xff0c;安装不灵活&#xff0c;续签需要配置计划任务&#xff0c;签发单域名证书或者通配证书需要不同的指令和配置&#xff0c;繁琐&#xff0c;如果自己程序想要对接签发证书的api有的不支持&#xff0c;有的用起来繁琐。 最近发…

性价比高充电宝有哪些?充电宝十大最佳品牌大盘点!

在如今这个高度数字化的时代&#xff0c;我们的生活离不开各种电子设备&#xff0c;而充电宝作为保障电子设备续航的重要工具&#xff0c;其地位日益凸显。然而&#xff0c;面对市场上琳琅满目的充电宝品牌和产品&#xff0c;要挑选到一款性价比高的充电宝并非易事。在这篇盘点…

本地部署,Colorizer: 让黑白图像重现色彩的奇迹

目录 引言 什么是 Colorizer ​编辑​编辑 Colorizer 的特点 工作原理 应用场景 本地部署 本地运行 实验与结果 结语 Tip&#xff1a; 引言 自摄影术发明以来&#xff0c;黑白图像一直是记录历史和艺术创作的重要手段。然而&#xff0c;黑白图像虽然具备其独特的美…

idea中打开静态网页端口是63342而不是8080

问题&#xff1a; 安装了tomcat 并且也配置了环境&#xff0c;但是在tomcat下运行&#xff0c;总是在63342下面显示。这也就意味着&#xff0c;并没有运行到tomcat环境下。 找了好几个教程&#xff08;中间还去学习了maven&#xff0c;因为跟的教程里面&#xff0c;没有maven,但…

2024年国企都在用哪些eHR人事系统?(附国企HR系统功能分享)

近年来&#xff0c;国家也一直在寻求国企改革上的突破。但是部分国有企业在经营过程中&#xff0c;出于历史和现实的多重影响&#xff0c;人力资源管理工作迟迟没有较大进展&#xff0c;还存在诸多不适应现代企业发展的弊端存在。随着科技进步&#xff0c;许多国企正转向创新的…

【昇思25天学习打卡营打卡指南-第二十三天】Pix2Pix实现图像转换

Pix2Pix实现图像转换 Pix2Pix概述 Pix2Pix是基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks &#xff09;实现的一种深度学习图像转换模型&#xff0c;该模型是由Phillip Isola等作者在2017年CVPR上提出的&#xff0c;可以实现语义/标签到…