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