热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

机器学习(3)——AndrewNg.机器学习(一):贝叶斯定理

已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。P(A|B)表示事件B已发生的前提下,

已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。

P(A|B)表示事件B已发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式: ,

而贝叶斯定理为:

 

朴素贝叶斯基本思想:对于给出的待分类项,求解在此项条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。

 

分类算法之贝叶斯网络(Bayesiannetworks)

1、贝叶斯网络的解释和举例

朴素贝叶斯分类有一个限制条件,就是特征属性必须有条件独立或基本独立(实际上在现实应用中几乎不可能做到完全独立)。当这个条件成立时,朴素贝叶斯分类法的准确率是最高的,但不幸的是,现实中各个特征属性间往往并不条件独立,而是具有较强的相关性,这样就限制了朴素贝叶斯分类的能力。这一篇文章中,我们接着上一篇文章的例子,讨论贝叶斯分类中更高级、应用范围更广的一种算法——贝叶斯网络(又称贝叶斯信念网络或信念网络)。

EX1: 通过对训练数据集的统计,得到下表(R表示账号真实性,H表示头像真实性):

R=0

R=1

0.11

0.89

 

 

 

H=0

H=1

R=0

0.9

0.1

R=1

0.2

0.8

 

      纵向表头表示条件变量,横向表头表示随机变量。上表为真实账号和非真实账号的概率,而下表为头像真实性对于账号真实性的概率。这两张表分别为“账号是否真实”和“头像是否真实”的条件概率表。有了这些数据,不但能顺向推断,还能通过贝叶斯定理进行逆向推断。例如,现随机抽取一个账户,已知其头像为假,求其账号也为假的概率:

 

也就是说,在仅知道头像为假的情况下,有大约35.7%的概率此账户也为假。如果觉得阅读上述推导有困难,请复习概率论中的条件概率、贝叶斯定理及全概率公式。如果给出所有节点的条件概率表,则可以在观察值不完备的情况下对任意随机变量进行统计推断。上述方法就是使用了贝叶斯网络。

 

 

2、贝叶斯网络的定义及性质

一个贝叶斯网络定义包括一个有向无环图(DAG)和一个条件概率表组成。DAG中每一个节点表示一个随机变量,可以是直观观测变量或隐藏变量,而有向边表示随机变量间的条件依赖;条件概率表中的每一个元素对应DAG中唯一的节点,存储此节点对于其所有直接前驱节点的联合条件概率。

每一个节点在其直接前驱节点的值制定后,这个节点条件独立于其所有非直接前驱前辈节点。

贝叶斯网络可以看做是马尔科夫链(Markov)的非线性扩展。

一般情况下,多变量非独立联合条件概率分布有如下求取公式:

 

 

 

 而在贝叶斯网络中,由于存在前述性质,任意随机变量组合的联合条件概率分布被化简成

 

 

 

 其中Parents表示xi的直接前驱节点的联合,概率值可以从相应条件概率表中查到。

 

 

 

3、贝叶斯网络的构造和学习

构造和训练贝叶斯网络需要两步:

1)    确定随机变量间的拓扑关系,形成DAG。这一步通常需要领域专家完成,而想要建立一个好的拓扑结构,通常需要不断迭代和改进才可以。

2)    训练贝叶斯网络。需要完成条件概率表的构造,如果每个随机变量的值都是可以直接观察的,像上面的例子,这么这一步训练时直观的,方法类似于朴素贝叶斯分类。但是通常贝叶斯网络中存在隐藏变量节点,那么训练方法就比较复杂,例如梯度下降法。

4、贝叶斯网络的应用及示例

贝叶斯网络主要用于概率推理及决策,也就是在信息不完备的情况下通过可观察随机变量推断不可观察的随机变量,并且不可观察随机变量可以多余一个,一般初期将不可观察变量置为随机值,然后进行概率推理。

使用贝叶斯网络进行推理的步骤一般为:

1)    对所有可观察随机变量节点用观察值实例化,对不可观察节点实例化为随机值。

2)    对DAG进行遍历,对每一个不可观察点y,计算 

 ,其中wi表示除y以外的其他所有节点,a为正规化因子,sj表示y的第j个子节点。

3)    使用第二步计算出的各个y作为未知节点的新值进行实例化,重复第二步,知道结果充分收敛。

4)    将收敛结果作为推断值。

 

 


推荐阅读
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 来自FallDream的博客,未经允许,请勿转载,谢谢。一天一套noi简直了.昨天勉强做完了noi2011今天教练又丢出来一套noi ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 本文探讨了在AspNetForums平台中实施基于角色的权限控制系统的方法,旨在为不同级别的用户提供合适的访问权限,确保系统的安全性和可用性。 ... [详细]
  • 新型量子内核助力机器学习分类
    国际科研团队开发出一种创新的量子机器学习分类方法,利用非线性量子内核显著提升了分类精度,为未来量子计算技术的发展开辟了新路径。 ... [详细]
  • 吴石访谈:腾讯安全科恩实验室如何引领物联网安全研究
    腾讯安全科恩实验室曾两次成功破解特斯拉自动驾驶系统,并远程控制汽车,展示了其在汽车安全领域的强大实力。近日,该实验室负责人吴石接受了InfoQ的专访,详细介绍了团队未来的重点方向——物联网安全。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本周三大青年学术分享会即将开启
    由雷锋网旗下的AI研习社主办,旨在促进AI领域的知识共享和技术交流。通过邀请来自学术界和工业界的专家进行在线分享,活动致力于搭建一个连接理论与实践的平台。 ... [详细]
  • AI炼金术:KNN分类器的构建与应用
    本文介绍了如何使用Python及其相关库(如NumPy、scikit-learn和matplotlib)构建KNN分类器模型。通过详细的数据准备、模型训练及新样本预测的过程,展示KNN算法的实际操作步骤。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 深入解析层次聚类算法
    本文详细介绍了层次聚类算法的基本原理,包括其通过构建层次结构来分类样本的特点,以及自底向上(凝聚)和自顶向下(分裂)两种主要的聚类策略。文章还探讨了不同距离度量方法对聚类效果的影响,并提供了具体的参数设置指导。 ... [详细]
  • 英特尔推出第三代至强可扩展处理器及傲腾持久内存,AI性能显著提升
    英特尔在数据创新峰会上发布了第三代至强可扩展处理器和第二代傲腾持久内存,全面增强AI能力和系统性能。 ... [详细]
  • 【转】强大的矩阵奇异值分解(SVD)及其应用
    在工程实践中,经常要对大矩阵进行计算,除了使用分布式处理方法以外,就是通过理论方法,对矩阵降维。一下文章,我在 ... [详细]
author-avatar
张丽君2502934023
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有