朴素贝叶斯
约定:
- 红色:对名词进行解释的重点
- 黄色:各部分总结中的重点
- 绿色:算法基本假设与解释
摘要:
- 朴素贝叶斯算法的起点:贝叶斯公式(贝叶斯公式:朴素贝叶斯算法的起点)
- 两种求解似然函数的方法和其假设(高斯判别分析(GDA)、朴素贝叶斯)
- 解决遇到没有见过的特征项的平滑(拉普拉斯平滑)
名词解释:贝叶斯公式
、先验概率\后验概率
、似然概率函数
、条件独立
、拉普拉斯平滑
- 贝叶斯公式:朴素贝叶斯算法的起点,该公式从条件概率公式和全概率公式得到,说明了后验概率正比于似然乘先验
- 先验概率\后验概率:源自古老的统计学,先验概率一般是指没有任何经验知识的概率即$P(Y)$,后验概率是指有了一些知识后对于先验的修正,即$P(Y|X=xx)$
- 似然概率函数:通过给定x,基于参数估计概率的过程,输入是参数,输出是概率
- 条件独立:这里指训练集的特征条件独立,这是一个假设,也是朴素贝叶斯中朴素二字的由来
- 拉普拉斯平滑:在计算似然函数时会遇到“没有见过的特征的概率是0”的情况,引入拉普拉斯平滑也可以给这种情况一个概率
原理实现: 朴素贝叶斯的手写实现
一、一句话概括
朴素贝叶斯算法起点是贝叶斯公式的分子:先验 * 似然,且由于先验一样,则比较不同分类的似然函数。然后引入特征的条件独立的假设,使得似然函数的计算可以拆解成概率的连乘。再引入拉普拉斯平滑解决概率连乘的过程中出现0的情况
概括总结
- 朴素贝叶斯 = 贝叶斯公式分子中的似然函数(贝叶斯) + 特征条件独立假设(朴素)
二、贝叶斯公式:朴素贝叶斯算法的起点
$$P(Y=C_k \mid X)=\frac{P(X \mid Y=C_k) * P(Y=C_k)}{P(X)}$$
- $P(Y=C_k \mid X)$表示已知某未知样本的特征后,其属于分类k的的概率(就是得知某一样本的特征,预测其为分类k的概率)\ 显然:找到使得等式右边概率最大的那个分类就是我们要预测的那个分类
- $P(X)$表示,sample出这个未知样本的概率
- 解释:以上提到的「未知样本」就是我们要用模型预测的那个样本
以上就是贝叶斯公式带入分类的概率后得到的公式(朴素贝叶斯算法的起点),推导如下
- 条件概率公式:$$P(B \mid A)=\frac{P(A \mid B) P(B)}{P(A)}$$
- 带入$P(A)=P(X)$,$P(B)=P(Y=C_k)$得到贝叶斯公式(分子表示了似然乘以先验) $$P(Y=C_k \mid X)=\frac{P(X \mid Y=C_k) * P(Y=C_k)}{P(X)}$$
- 等式右边表示
贝叶斯公式总结
- 贝叶斯公式就是条件概率公式的变形,带入分类问题中的概率就变成了朴素贝叶斯算法的起点
- 等式左边是后验概率,等式右边的分子是「先验」乘以「似然」、所以贝叶斯公式的核心:后验正比于先验乘以似然
- 要找到概率最大的「后验」,就要找到 先验*似然最大的 那个分类。因为先验概率求解较为简单,所以目标变成找到计算似然函数$P(X \mid Y=C_k)$的方法
三、似然函数的计算
- 基于之前的讨论,我们已经明确目的,找到计算$P(X \mid Y=C_k)$的方法,从而可以比较哪个分类会得到最大的结果,就将数据预测成哪个分类
- 为了计算上式,需要引入一些假设,对数据的不同假设(为了更方便的计算似然函数)区分出了两种方法,包括我们今天提到的朴素贝叶斯
3.1 高斯判别分析(GDA)
应用场景:X的特征都是连续变量可以使用:是一种求 $P(X \mid Y=C_k)$ 的方法
3.1.1 算法假设与推导
- 引入假设:假设$p(X|Y=C_k)$符合多元高斯分布,分类符合伯努利分布得到如下公式,其中$|\Sigma|$ 是协方差矩阵的行列式,对应正态分布的$\sigma$ $$p(x|y=0) = \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2} }*exp(-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0))$$
- 相应的: $$p(x|y=1) = \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2} }*exp(-\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1))$$
- 有了以上两个式子利用极大似然估计就可以得到结果,本文不做展开
3.1.2 高斯判别分析引申
- 基于同一个出发点不同的假设分出了高斯判别模型和朴素贝叶斯(事实上朴素贝叶斯在遇到连续特征时往往也要引入特征的分布假设,和高斯判别模型很类似,但并没有那么「彻底」,「朴素贝叶斯引申」中进行展开)
- 高斯判别模型和逻辑回归还有着一层关系:从逻辑回归的概率解释中可以看出它的假设是$P(Y|X, \theta)$服从伯努利分布
- 由高斯判别模型进行推导可以得到:逻辑回归的结果:$p\left(y=1 \mid x ; \phi, \mu{0}, \mu{1}, \Sigma\right)=\frac{1}{1+e^{-\theta^{T} x} }$
- 从逻辑回归出发却无法得到高斯判别分析的结果,也说明了判别模型(逻辑回归)进行了更少的数据假设,鲁棒性更强。生成模型(高斯判别模型)对数据做了更多的假设,很有可能遇到假设不合理的情况,但可以处理数据量少的情况(相当于通过假设脑补数据)
3.2 朴素贝叶斯
3.2.1 算法假设与推导
- 引入假设:$p(X|Y=C_k)$条件独立,也就是说在某一个分类中,特征A的取值和特征B的取值是独立的
- 基于假设有:以下等式(即条件联合概率=条件概率的乘积)$$p(X|Y=Ck) = p(x_1,x_2,x_3...|Y=C_k) = p(x_1|Y=C_k)p(x_2|Y=C_k)...=\prod{i=1}^np(x_i|Y=C_k)$$
- 将似然函数的表达拆分成概率的连乘之后,就可以去数据集中数数了(连乘中的每一项可以通过数数的古典概型进行计算)
朴素贝叶斯总结
- 朴素贝叶斯通过引入特征条件独立的假设完成了似然函数的计算
- 小插曲:特征条件独立的假设很像NLP的n元语法模型(朴素贝叶斯中是unigram,即一个单词出现的概率和其前后单词出现的概率无关)
3.2.2 朴素贝叶斯引申
基于以上讨论,仍存在一个问题:如果特征不是连续值怎么计算某一个特定项出现的概率; b. 如果很幸运是离散值,那么出现了数据集中没有见过的特定项,概率岂不是0(无法比较)
- 第一个问题的答案是将数据离散化(这个比较好想)或者引入其他假设,如正态分布假设,然后根据分布的概率密度函数进行求解(需要根据业务经验进行合理假设,这也是为什么之前说朴素贝叶斯对于连续值需要进行合理假设,但没有高斯判别分析假设的那么「彻底」)
- 第二个问题的答案就是我们接下来要讨论的拉普拉斯平滑
四、拉普拉斯平滑
用于解决离散特征的概率可能为0的问题 - 引入平画项,修正贝叶斯公式得到以下公式,其中$S_j$是该特征值的项数(为了归一化) $$P(Y=C_k \mid X)=\frac{P(X \mid Y=C_k) P(Y=C_k)+\lambda}{P(X)+S_j \lambda}$$
- 当$\lambda=1$时称为拉普拉斯平滑
拉普拉斯平滑总结
- 当某一特征出现了之前没有见过的特征项时,让分子和分母都加点东西,就避免了概率为0的情况
- 如数据集中只有红色和黄色,要预测的样本是绿色,则分子+1,分母+ 2*1(2是原本该特征的取值个数)
五、总结
- 朴素贝叶斯是:贝叶斯公式(起点)+特征条件独立假设(朴素,方便计算似然函数表达式)+拉普拉斯平滑(解决遇到没有见过的特征值的情况)
- 朴素贝叶斯和高斯判别模型是两种对数据的假设从而求解似然函数的方法