机器学习 40 讲
王天一
工学博士,副教授
35376 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
机器学习 40 讲
15
15
1.0x
00:00/00:00
登录|注册

28 | 最简单的概率图:朴素贝叶斯

朴素贝叶斯
概率图模型

该思维导图由 AI 生成,仅供参考

从今天起,我们将进入概率图模型的模块,以贝叶斯的角度重新审视机器学习。
在机器学习任务中,输入和输出之间并不是简单的一对一的决定关系,两者之间通常存在着一些可见或不可见的中间变量。要计算输出变量的概率分布,就得把这些中间变量纳入到建模的框架之中。要简洁明快地表达多个变量之间的复杂的相关关系,图模型无疑是理想的选择。将图模型和概率模型结合起来,就是这个模块的主题——概率图模型(probabilistic graphical model)。
在“人工智能基础课”中,我曾用简短的篇幅粗略地介绍过概率图模型的概念和分类。这次我们从实例出发,看一看最简单的概率图模型——朴素贝叶斯分类器(naive Bayes classifier),并以它作为从统计机器学习到概率图模型的过渡。
还记得朴素贝叶斯的原理吗?回忆一下,朴素贝叶斯利用后验概率最大化来判定数据所属的类别,其“朴素”之处在于条件独立性的引入。条件独立性假设保证了所有属性相互独立,互不影响,每个属性独立地对分类结果发生作用,这样类条件概率就变成了属性条件概率的乘积。这在概率图中体现为条件独立关系(conditioanl independence):如果将朴素贝叶斯模型画成有向图的话,它就是下图中的贝叶斯网络,类别信息指向所有的属性,任何两个属性之间都没有箭头的指向
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了朴素贝叶斯分类器的原理和特点,以及其在生成模型中的应用和与逻辑回归的对应关系。文章讨论了朴素贝叶斯分类器在计算条件概率分布时可能出现的问题,并介绍了如何通过引入共轭先验来解决这些问题。共轭先验的引入简化了后验概率的计算,类似于特征向量在线性代数和信号理论中的作用。此外,文章还给出了一个关于朴素贝叶斯分类器的例子,展示了如何利用朴素贝叶斯方法来计算一个人是英格兰人还是苏格兰人的可能性。最后,文章提到了树增强朴素贝叶斯的原理,鼓励读者深入了解并发表见解。整体而言,本文通过深入浅出的方式介绍了朴素贝叶斯分类器的原理和应用,为读者提供了对概率图模型的初步了解。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《机器学习 40 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • 林彦
    王老师,我的理解和问题如下。 1. 先验概率即先验分布,是训练数据集上不同类别的数据所占的比例,是朴素贝叶斯因子分解公式中的p(Y); 2. 似然概率是条件概率的乘积,是朴素贝叶斯因子分解公式中的∏i=1~Np(Xi|Y); 3. 问题:狄利克雷分布(Dirichlet distribution)利用因子分解后的似然概率对因子分解后的先验概率进行加权。 3.1 这里∏i=1~Kxi^(αi−1)这一部分中的xi相当于上面朴素贝叶斯因子分解公式中的p(Y),即类别的先验概率? 3.2 我的理解狄利克雷分布的计算结果Dir(α)是先验概率(类别分布)的共轭先验,这个结果可以放到朴素贝叶斯因子分解公式中替换掉p(Y),然后与似然概率 (条件概率的乘积)那一部分相乘,相乘的结果为属性和类别的联合分布。这个理解对吗? 3.3 狄利克雷分布中因子分解后的似然概率是指公式中的哪一部分?狄利克雷中的α(alpha)和每个类别中不同属性的条件概率有关吗? 3.4 狄利克雷分布的参数被修正为 Ni+αi,这个参数是在计算狄利克雷分布或伽马函数时作为输入参数代入公式或程序模块用的? 谢谢。

    作者回复: 统一回答,就不分点了: 频率主义下的朴素贝叶斯根据最大似然估计来确定参数,比如类先验等于类别比例(6/13和7/13),属性条件概率等于每个类别里属性的比例,这些都是根据数据计算出来的。这就是你留言里的12两点。 但问题是最大似然估计给出的点估计并不可靠,可以回忆一下专栏开头两讲里的例子。从贝叶斯角度来看,需要给每个类别的分布、每个属性的分布全部设定先验,来刻画它们完整的概率特性,狄利克雷分布起到的就是这个作用。 在对属性条件概率使用狄利克雷先验时,会把2个类别,5个属性,2个属性的取值共同建模。这相当于三个因素共同定义出一个单个的先验,也就是属性a取值为b时,属于类别c的先验概率。所有这些先验全都设为均匀的,也就是无信息的先验。 其实类先验也应该这么处理,但出于复杂性的考虑,没有给它设置,直接把最大似然的结果拿来用了。 接下来的任务就是根据训练数据对先验进行修正。举个例子,在先验里,我认为看与不看英格兰队比赛这单个属性的两个取值对苏格兰人的类别没有影响,它们的先验是相等的。但数据告诉我们,所有苏格兰人都不看英格兰的球,这样就得对先验进行调整,把苏格兰人不看英格兰比赛的概率往高调,这样做得到的就是后验概率。 所有的先验概率都要根据数据做这种调整,调整的方式就是数数,把符合这个先验的样本数目加到狄利克雷的参数上。比如属性a取值为b时,属于类别c的样本数是N个,那就把N加到对应的先验的参数上。等所有参数都更新完之后做个归一化,就是真正的后验概率。不难发现,训练数据起到的是似然概率的作用。 在这个过程中,不同的先验之间依然是独立的,一个先验的更新不会影响到另一个先验的更新。 这么做的目的跟拉普拉斯平滑一样,都是避免极端情况。如果属性a取值为b时,属于类别c的样本从没出现过,那频率主义就处理不了了。引入一个分布能够保留更详细的概率,避免一刀切。

    2018-08-24
    7
  • 林彦
    树增强朴素贝叶斯不假设各个属性是相互独立的,允许部分属性依赖。它需要计算属性间的互信息值,互信息值越大,就代表2个属性关联性越大。和文中的朴素贝叶斯一样,属性之间的关联性的前提是要在某一分类属性确定下进行计算,不同的类属性值会有不同的属性关联性。 在计算完各个属性对的互信息值之后,进行贝叶斯网络的构建。 1. 根据各个属性对的互信息值降序排序,依次取出其中的节点对,遵循不产生环路的原则,构造最大权重跨度树,直到选择完n-1条边为止; 2. 上述过程构成的是一个无向图,接下来为整个无向图确定边的方向。选择任意一个属性节点作为根节点,由根节点向外的方向为属性节点之间的方向; 3. 为每一个属性节点添加父节点,父节点就是分类属性节点,至此贝叶斯网络结构构造完毕。 我对这个贝叶斯网络的理解是除了上面第2步提到的根结点只有分类属性一个夫节点外,其他的节点都有2个父节点,一个是分类属性,一个是第2步构造的有向图中的父节点。

    作者回复: 总结的很全面👍构造TAN其实都可以有点儿结构学习的意思了。

    2018-08-24
    1
  • 林彦
    手动计算了下联合概率,发现∀i,(Xi⊥X−i|Y)这个条件要求必须是在Y分类已经确定的情况下,N 个属性变量 Xi才是互相独立,联合分布的概率才等于各自概率的乘积。而∀i,(Xi⊥X−i)是不成立的,即Y分类不确定的情况下,Xi不是互相独立的,所有分类的Xi的概率的乘积并不等于Xi的联合分布的概率。 在文中的例子里x=(1,0,1,1,0)T发生的概率等于英格兰人出现x的概率与苏格兰人出现的x的概率之和,而不等于Xi各个属性在所有样本取值概率的乘积。

    作者回复: 你说得对。这个图是个大的分连结构,一因多果,只有在因确定时,多个结果之间才会条件独立。 所谓条件独立里的“条件”就是指某些变量的确定,如果大家都可以随意变化,那就不会存在独立性。

    2018-08-24
  • 心流
    王老师,机器学习的python的文件,如何打开,能给我们讲一下吗?

    作者回复: 直接用Python自己的集成环境就可以打开了,我用的就是Python的IDLE,也可以安装其他的编译器,具体使用方法可以参考另一门python的课程。

    2018-08-09
  • ifelse
    学习打卡
    2023-06-14归属地:浙江
  • 心流
    王老师,机器学习的python文件,能讲一下如何打开吗?
    2018-08-09
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部