数学基础
朴素贝叶斯的数学理论非常简单,俩公式,三板斧
条件概率
贝叶斯定理,也叫贝叶斯公式,由条件概率直接推出
三板斧,先有P(A),称为先验概率,再有P(A|B),称为似然性,最终得到P(B|A),称为后验概率
先验概率:通过经验来判断事情发生的概率,比如说“贝叶死”的发病率是万分之一,就是先验概率。
后验概率:后验概率就是发生结果之后,推测原因的概率。比如说某人查出来了患有“贝叶死”,那么患病的原因可能是 A、B 或 C。**患有“贝叶死”是因为原因 A 的概率就是后验概率。**它是属于条件概率的一种
模型原理
朴素贝叶斯是一个分类模型,
假设有N个样本 Xi = [x1,x2,...xd],每个样本有 d 个属性,m个类别为 cm,那么朴素贝叶斯就是计算 P(cm|X),然后取 最大的 P 即可
模型假设
在计算 P(cm|X) 时,需要计算 P(X|cm) = P([xi]|cm),显然这是一个联合概率分布,在d很大时,联合概率分布的计算是非常麻烦的,甚至是不可能的;
为了简化这一步的运算,模型假设 xi 之间相互独立,即属性之间是完全独立事件,此时 P(AB)=P(A)P(B),于是 P(cm|X)可以很容易计算出来
这个假设也是 为什么 朴素贝叶斯 叫 朴素 的原因
计算实例
现有训练数据如下
当 c = 嫁时,P(c) = 6/12 = 1/2 ;
具体就不算了,但是我们发现,分母上是一个固定值,对所有样本都一样,故可取消 ;
于是朴素贝叶斯模型变成
拉普拉斯平滑
接着上面的例子讲,如果有个人 不帅,性格不好,不上进,身高=中,显然是不可以嫁的,
但照上面的公式计算
P(嫁|不帅,性格不好,中,不上进) > 0
P(不嫁|不帅,性格不好,中,不上进) = 0
结果却是嫁,显然不对;
原因是 不嫁 类中 身高的属性 没有 取值为 中的,故 P(中|不嫁)=0,导致 P(不帅,性格不好,中,不上进|不嫁) = 0;
为了避免这种问题发生,采用 拉普拉斯平滑 进行修正,具体操作如下
假设 N 表示类别数,Ni 表示第 i 个属性的可能取值数
这个思想在很多其他地方也有应用
连续属性的处理
上面的理论和例子都是针对离散属性的,但 朴素贝叶斯 也适用于连续属性,只需在计算概率时采用概率密度即可;
如高斯分布
连续属性和离散属性可以同时存在
不同场景下的应用策略
预训练:适用场景预测频率较高,响应较快;具体策略是根据训练数据计算所有概率,事先存储起来,预测时查表即可
惰性训练:适用场景为动态训练数据,比如训练数据为从当天开始过去三个月的历史数据;具体策略是在收到预测请求时,临时训练,再预测
增量学习:适用场景训练数据不断增加;具体策略为计算并存储已经存在的训练数据的相关统计量,收到新的训练样本后修正该统计量
模型进阶
生成式模型
所有的机器学习模型本质上都是在计算 P(c|X),但现实中这个概率往往很难获得,于是形成了两种策略:
给定 x,直接通过建模来预测 c,如决策树、神经网络等,这样得到的是 判别式模型;
通过 各种方式 来计算不同类别的 先验概率分布,从而得到每个类别的后验概率,这样得到的是 生成式模型;
朴素贝叶斯就属于 生成式模型;
判别式模型举例:要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。
生成式模型举例:利用生成模型是根据山羊的特征首先学习出一个山羊的模型,然后根据绵羊的特征学习出一个绵羊的模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,在放到绵羊模型中看概率是多少,哪个大就是哪个。
贝叶斯深度学习
贝叶斯是统计概率学派的代表,几乎可以认为 概率=贝叶斯,那贝叶斯深度学习是什么呢?
其实贝叶斯深度学习很早就提出了,一直在演变过程中,简单介绍下:
我们知道传统的神经网络或者深度学习 可 表达为 f(wx+b),这里 w b 都是 固定值,而 贝叶斯深度学习就是把 w b 改成了概率,类似下图
贝叶斯深度学习的难点是如何训练和预测呢?可以采用 蒙特卡罗 思想,有兴趣的可以深入研究下
参考资料:
https://blog.csdn.net/qq_31073871/article/details/81077386 条件概率/全概率/贝叶斯公式
https://www.zhihu.com/question/29155526 如何形象地理解条件概率及运算公式?
https://www.zhihu.com/question/51448623/answer/747656479 怎么简单理解贝叶斯公式?
https://www.cnblogs.com/wuliytTaotao/p/10281766.html 贝叶斯深度学习(bayesian deep learning)
https://www.zhihu.com/question/352295592 贝叶斯深度学习是什么,和传统神经网络有何不同?
周志华 《机器学习》