1 概率图模型、贝叶斯网络与贝叶斯公式

  • 概率图模型

概率图模型简单的说,就是用图来表示概率模型。它是一种通用化的不确定性知识表示和处理方法。在概率图模型的表达中,结点表示随机变量,结点之间直接相连的边表示随机变量之间的概率关系。

  • 贝叶斯网络

贝叶斯网络是一种基于概率推理的数学模型,其理论基础是贝叶斯公式。

一个贝叶斯网络就是一个有向无环图,结点表示随机变量,可以是可观测量、隐含变量、未知参量或假设等;结点之间的有向边表示条件依存关系,箭头指向的结点依存于箭头发出的结点(父结点)。

下面以经济状况、房地产销售额、空调销售额三个随机变量为例,构建一个简单的贝叶斯网络。

图-1

上图展示了经济状况、房地产销售额、空调销售额三个随机变量的依赖关系。其中,房地产销售额依赖于经济状况,空调销售额依赖于经济状况和房地产销售额。如果用随机变量E、R、A分别表示经济状况、房地产销售额和空调销售额,图-1可简化为下图。

图-2

2 贝叶斯网络涉及的三个问题

构造贝叶斯网络是一项复杂的任务,主要涉及三个方面的问题:表示、推断和学习。

(1)表示:在某一随机变量的集合上给出其联合概率分布.例如,图-2中三个事件的联合概率函数可表示为:

        公式(1)

(2)推断:当观察到某些变量时,推断另一些变量子集的变化。如上例中,当观察到经济状况E和房地产销售额R时,推断空调销售额随机变量A的取值的概率。

(3)学习:参数学习的目的是决定变量之间相互关联的量化关系,即依存强度估计。如上例中,房地产销售额对经济状况的依存强度、空调销售额对经济状况、房地产销售额的依存强度都是学习参数。

3 用朴素贝叶斯实现新闻文本分类

贝叶斯网络反映的是随机变量间的相互依存关系。如果把文本的类别与文本的特征都看作是随机变量,那么它们之间也存在依存关系。文本所具有的特征词往往决定文本所属的类别,而当文本类别确定后,所属该类文本的特征词大概率会出现在文本中。

这里用随机变量表示新闻类别,的样本空间表示某类新闻,,共有类新闻。随机变量表示新闻文本的特征,表示特征词,. 假设某篇新闻中出现了,共个特征词,那么新闻分类问题可形式化表示为:

        公式(2)

显然,公式(2)不好直接求解,我们可以换一种思路,用贝叶斯公式将公式(2)稍作变换,

公式(3)

上式中,可以从语料中统计得到,而还是不好求解。

但是,如果假设特征词间相互独立,则有

        公式(4)

        公式(5)

上式中,都可以从训练语料中通过统计获取。

这种加上条件独立的贝叶斯有个专门的名称,叫作朴素贝叶斯。

根据Section 2所述,贝叶斯网络涉及三个问题:表示、推断和学习。至此,新闻文本分类问题的贝叶斯网络,关于表示和推断问题已经解决了。那么,新闻分类的参数学习指的是什么呢。这里的参数学习实际上就是用词频统计法求出。然后,在推断类别的时候就可以直接用它们。

下面用代码来实现这个基于朴素贝叶斯方法的新闻分类模型。

现已有新闻数据集,其中包括健康、体育、旅游、教育、财经等9个类别。

首先,需要从训练语料中构建一个特征词集,。可以用TF/IDF算法,从训练语料中选取特征词。也可以用词频法,从训练语料中选取词频较高的前个词。词频最高的前几个词通常是一些没什么区分度的词,可以考虑将其舍弃。下面是提取特征词的代码

def words_dict(all_words_list, deleteN, stopwords_set=set()):""":param all_words_list: 语料库单词列表:param deleteN: 删除前deleteN个高频词:param stopwords_set: 停用词集:return: 特征词列表"""feature_words = []n = 1for t in range(deleteN, len(all_words_list), 1):# 循环时从第deleteN个开始,也就是舍弃前deleteN个词语if n > 1000:  # feature_words的维度1000breakif not all_words_list[t].isdigit() and \all_words_list[t] not in stopwords_set and \1 < len(all_words_list[t]) < 5:# 满足三个条件:不是数字;不在停用词表;长度2~4feature_words.append(all_words_list[t])n += 1return feature_words

接下来需要用词频法计算公式(4)和公式(5)中的概率值,以及的值。这些繁琐的统计计算在sklearn中有一个函数可以帮我们实现,它就是MultinomialNB( )函数。

# sklearn分类器
classifier = MultinomialNB().fit(train_feature_list, train_class_list)

上述代码中,train_class_list是文章类别标签列表。train_feature_list是特征词标记列表,如果该索引位置对应的词是特征词,则值等于1,否则等于0。train_feature_list的构建过程如下方代码所示。

def text_features(train_data_list, test_data_list, feature_words):def text_features(text, feature_words):text_words = set(text)  # 样本去重# sklearn特征 listfeatures = [1 if word in text_words else 0 for word in feature_words]# 遍历每个样本词语,若样本词语出现在1000个特征词里,值为1,否则为0return featurestrain_feature_list = [text_features(text, feature_words) for text in train_data_list]# text为每一个训练的样本,返回值是二维列表test_feature_list = [text_features(text, feature_words) for text in test_data_list]return train_feature_list, test_feature_list

概率图模型之贝叶斯网络的理解与应用相关推荐

  1. 西瓜书+实战+吴恩达机器学习(二一)概率图模型之贝叶斯网络

    文章目录 0. 前言 1. 贝叶斯网络结构 2. 近似推断 2.1. 吉布斯采样 3. 隐马尔可夫模型HMM 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 概率 ...

  2. PGM:有向图模型:贝叶斯网络

    http://blog.csdn.net/pipisorry/article/details/52489270 为什么用贝叶斯网络 联合分布的显式表示 Note: n个变量的联合分布,每个x对应两个值 ...

  3. 图网络算法——概率图介绍与贝叶斯网络

    图网络算法--概率图综述 1 概率论回顾 在介绍概率图之前,我们先来回顾一下概率论中的相关的知识. 样本空间(Ω): 样本空间描述的是一个随机试验中所有可能输出的集合.比如我们随机抛了一千次硬币,那么 ...

  4. 机器学习之概率图模型(贝叶斯概率,隐马尔科夫模型)

    一.贝叶斯公式 在学习概率图模型之前先要了解贝叶斯公式: 由公式(1),(2)可得: 这便是贝叶斯公式,其中条件概率P(A/B)称为后验概率,概率P(A),P(B)称为先验概率,条件概率P(B/A), ...

  5. 最全总结图论在识别人脑网络连通性模式中的应用——相关与相关性,主成分分析,聚类分析,互信息,格兰杰因果分析,动态因果模型,贝叶斯网络,转移熵

    图论在识别人脑网络连通性模式中的应用 具体研究问题 理论背景: 使用fMRI的连接模式 功能连接 基于模型的方法 相关和相干性 统计参数映射(SPM) 探索性的方法 成分分析(Decompositio ...

  6. 机器学习笔记之概率图模型(四)基于贝叶斯网络的模型概述

    机器学习笔记之概率图模型--基于贝叶斯网络的模型概述 引言 基于贝叶斯网络的模型 场景构建 朴素贝叶斯分类器 混合模型 基于时间变化的模型 特征是连续型随机变量的贝叶斯网络 动态概率图模型 总结 引言 ...

  7. 贝叶斯网络python代码_贝叶斯网络,看完这篇我终于理解了(附代码)!

    1. 对概率图模型的理解 概率图模型是用图来表示变量概率依赖关系的理论,结合概率论与图论的知识,利用图来表示与模型有关的变量的联合概率分布.由图灵奖获得者Pearl开发出来. 如果用一个词来形容概率图 ...

  8. 贝叶斯网络,看完这篇我终于理解了!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨mantch@知乎 来源丨https://zhuanlan.z ...

  9. 机器学习算法(二十七):贝叶斯网络

    目录 1. 对概率图模型的理解 2. 贝叶斯方法 2.1 频率派观点 2.2 贝叶斯学派 2.3 贝叶斯定理 2.4 应用:拼写检查 3 贝叶斯网络 3.1 贝叶斯网络的定义 3.2 贝叶斯网络的3种 ...

  10. 独家 | 一文读懂贝叶斯网络

    作者:Devin Soni 翻译:车前子 校对:孙韬淳 本文约1400字,建议阅读8分钟. 本文从概率论出发,为你阐述贝叶斯网络. 贝叶斯网络是一种利用贝叶斯推断进行概率计算的概率图模型.贝叶斯网络的 ...

最新文章

  1. Flutter开发Flutter与原生OC、Java的交互通信-1(47)
  2. 访问控制允许原始多个域?
  3. 一篇带你了解函数指针
  4. bct对oracle影响,Oracle 优化篇+Rman增量备份优化之BCT(块变更追踪)
  5. mysql full group by_MySql报错only_full_group_by的解决办法
  6. python指定范围内加法代码解析
  7. Linux打包压缩.md
  8. JavaScript数据结构——图(Graph)
  9. 牛客练习赛20:A. 礼物(组合数学/小球与盒子问题)
  10. 如何将 EDI系统作为服务器开机自启动?
  11. Netbeans使用问题整理
  12. 孤独剑客的推荐安全站点 (from http://bbs.isbase.net)
  13. 微信公众号支付、支付查询、退款、退款查询、转账到零钱银行卡、转账查询接口整合(V2)
  14. 软件工程笔记 清华大学刘强etc
  15. windows 7 32 出现 werfault.exe的错误处理
  16. android 手机震动1次,Android中手机震动的设置(Vibrator)的步骤
  17. Libvirt同步机制 —— 实现原理
  18. NOI.5.22津津的储蓄计划
  19. AIX 学习笔记之 存储管理 LV PV VG PP
  20. XERO到底强在哪里?

热门文章

  1. arcgis离线地图Java_ArcGIS API For Android离线地图的实现
  2. 齿轮计算机在线,齿轮参数计算器(萝卜花齿轮计算工具)9.5 中
  3. 微信语音怎么转发给好友
  4. 最简单vivo机器怎么不root激活XPOSED框架
  5. xcode9真机调试
  6. t470键盘拆解_做工保持良好水准 ThinkPad T470笔记本拆机解析
  7. golang(4)使用beego + ace admin 开发后台系统 CRUD
  8. matlab最佳拟合的指标是什么意思,Matlab拟合好坏常用指标
  9. 网络盘的计算机密码,win10系统映射网络驱动器密码错误的步骤
  10. 华为详解海思Hi3716高清机顶盒芯片方案