朴素贝叶斯之了断心结。

   为什么说贝叶斯一直是我的心结呢。这说来就话长了,当初考研时,想都没想就选择了相对简单的专硕(现在看来其实也并不简单),而我们学习的专硕是不考概率论的,所以基本上我的概率论体系还停留在高中阶段。那你又要问了,难道一个计算机科班出身的,本科就没学过概率论么,说到这里我就想起来我的概率论老师上课操着一口湖南口音,声音很小,150个人的大教室,而我在最后一排和舍友疯狂的搓着3DS,咳咳。说远了。今天我一定用最通俗理解的方法把朴素贝叶斯里的每一个知识点都梳理一遍,算是对自己有一个交代。

如果没什么概率论基础的话先推荐一篇文章

应该如何理解概率分布函数和概率密度函数?

生成式模型和判别式模型。

  在讲贝叶斯之前我觉得我有理由先说一下什么是生成式模型而什么是判别式模型。在《统计学习方法》书中明确写道:监督学习方法又可以分为生成方法和判别方法,所学到的模型分别称为生成模型和判别模型。

生成式模型:

  生成方法由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测模型,即生成模型 P(Y|X)= P(X,Y) / P(X),这样的方法之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。我们今天的主角朴素贝叶斯就是生成模型,常见的还有隐马尔科夫模型。
  生成方法的特点:生成方法可以还原出联合概率分布P(X,Y),而判别方法则不能。生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快的收敛于真实模型。

判别式模型:

  判别方法由数据直接学习决策函数f(X)或者条件概率分布P(Y|X)作为预测的模型。判别方法关系的是对给定的输入X,应该预测什么样的输入出Y。
  判别方法的特点:判别方法直接学习的是条件概率P(Y|X)或者决策函数F(X),直接面对预测,往往学习的准确率更高。由于直接学习P(Y|X)或者F(X),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。

总结

  两种模型都是利用条件概率判别,只不过生成模型通过求解联合分布得到条件概率,而判别模型直接计算条件概率,如果你不知道什么是联合概率分布,我一会会解释,别怕。

现在开始我们的主菜(朴素贝叶斯)

  首先先声明一点,朴素贝叶斯与贝叶斯估计是不同的概念。那为什么叫朴素呢。是因为他假设特征条件都相互独立(不过一般都是不可能的)。所以说朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。
  X是定义在输入空间上的随机向量,Y是定义在输出空间上的随机变量。P(X,Y)是X和Y的联合概率分布。训练数据集由P(X,Y)独立同分布产生。
  朴素贝叶斯通过训练数据集学习联合概率分布P(X,Y),那我们现在说说什么是联合概率分布。

联合概率分布

  联合概率分布简称联合分布,是两个及以上随机变量组成的随机向量的概率分布。根据随机变量的不同,联合概率分布的表示形式也不同。对于离散型随机变量,联合概率分布可以以列表的形式表示,也可以以函数的形式表示;对于连续型随机变量,联合概率分布通过一非负函数的积分表示。打靶时命中的坐标(x,y)的概率分布就是联合概率分布(涉及两个随机变量),其他同样类比。

连续型联合概率分布

  对于二维连续随机向量,设X,Y为连续性随机变量,其联合概率分布或连续性随机变量(X,Y)的概率分布F(x,y)通过一非负函数f(x,y) >= 0的积分表示,称函数f(x,y)为联合概率密度函数。两者关系如下:
              此处输入图片的描述

在接上面,我们想要通过训练数据集学习联合概率分布P(X,Y)= P(XY),而我们知道条件概率公式: P(AB)=P(A|B)P(B)=P(B|A)P(A) ,所以我们只要知道先验概率分布以及条件概率分布。就可以得到联合概率分布。
  朴素贝叶斯对条件概率分布做了条件独立性的假设。这个是较强的假设。具体的,条件独立性假设是:
    此处输入图片的描述(1)
这个公式可以这么理解:当事件A1,A2,A3相互独立时,有P(A1,A2,A3)= P(A1)P(A2)P(A3)
p(A1,A2,A3|B) = P(A1|B)P(A2|B)P(A3|B)

  朴素贝叶斯法分类时,对给定的输入x,通过学习到的模型计算后验概率分布P=(Y=c_k|X=x),将后验概率最大的类作为x的类输出,后验概率计算根据贝叶斯定理进行,现在开始手推公式:
由条件概率公式得到:$P(Y=c_k|X=x)=\frac{p(X=x,Y=c_k)}{P(x)} = \frac{P(X=x|Y=c_k)P(Y=c_k)}{P(X=x)}$ (2)

再由全概率公式得到:$P(X=x) = \sum_{k} P(Y=c_k)P(X=x|Y=c_k)$ (3)

将(3)带入(2)得到:$P(Y=ck|X=x)=\frac{p(X=x,Y=c_k)P(Y=c_k)}{\sum{k} P(Y=c_k)P(X=x|Y=c_k)}$ (4)

再将(1)带入(4)得到:$P(Y=ck|X=x)=\frac{P(Y=c_k)\prod{j}P(X^{(j)}=x^{(j)}|P(Y=ck)}{\sum{k}P(Y=ck)\prod{j}P(X^{(j)}=x^{(j)}|P(Y=c_k)},k=1,2,3,K。$

到此朴素贝叶斯分类器可以表示为:$y=f(x)=\arg\min{c_k}\frac{P(Y=c_k)\prod{j}P(X^{(j)}=x^{(j)}|P(Y=ck)}{\sum{k}P(Y=ck)\prod{j}P(X^{(j)}=x^{(j)}|P(Y=c_k)}$

由于分母就是$P(X=x)$ 所以对于所有ck来说都是相等的,所以可以把分母省略掉。所以最后的公式为:
        $y=f(x)=\arg\min
{ck}{P(Y=c_k)\prod{j}P(X^{(j)}=x^{(j)}|P(Y=c_k)}$

后验概率最大化的含义

朴素贝叶斯将实例分到后验概率最大的类中,也就是希望损失函数尽量的小,损失函数越小,模型越好,只需所有的样本点都求一次损失函数然后进行累加就是经验风险,我们希望让经验风险也尽可能的越小越好,经验风险是对训练集中的所有样本点损失函数的平均最小化。经验风险越小说明模型f(X)对训练集的拟合程度越好,但是对于未知的样本效果怎么样呢?我们知道未知的样本数据(X,Y)的数量是不容易确定的,所以就没有办法用所有样本损失函数的平均值的最小化这个方法,那么怎么来衡量这个模型对所有的样本(包含未知的样本和已知的训练样本)预测能力呢?熟悉概率论的很容易就想到了用期望。
这下我们又得再来说说数学期望了,数学期望想必都比较数学,我只说一下离散型和连续型求法的区别。

离散型:

$E(X)=\sum_{i}x_ip_i$

连续型:

$E(X)=\int_{-\infty}^{+\infty} {xf(x)} \,{\rm d}x$     $f(x)$为概率密度函数。

假设我们的损失函数是0-1损失函数:
    此处输入图片的描述
设X和Y服从联合分布P(X,Y).那么期望风险就可以表示为:$R{exp}(f) = E[L(Y,f(x))]$
接着推公式得到:
$R
{exp}(f) = E[L(Y,f(x))]$
此处输入图片的描述
可以看出最后变成了条件期望。
  这就是期望风险,期望风险表示的是全局的概念,表示的是决策函数对所有的样本预测能力的大小,而经验风险则是局部的概念,仅仅表示决策函数对训练数据集里样本的预测能力。理想的模型(决策)函数应该是让所有的样本的损失函数最小的(也即期望风险最小化),但是期望风险函数往往是不可得到的,即上式中,X与Y的联合分布函数不容易得到。现在我们已经清楚了期望风险是全局的,理想情况下应该是让期望风险最小化,但是呢,期望风险函数又不是那么容易得到的。怎么办呢?那就用局部最优的代替全局最优这个思想吧。这就是经验风险最小化的理论基础。
  为了使条件期望最小化,只需要对X=x每一个都极小化:
此处输入图片的描述

根据期望风险最小化准则就得到了后验概率最大化准则。

总的来说 朴素贝叶斯就是把朴素的思想(条件独立性)带入到贝叶斯公式之中,来得到朴素贝叶斯分类器。中间需要计算先验概率和条件概率,然后通过极大似然估计可以估计这些参数。

最后在推荐2篇文章,里面写的十分详细。
数学之美番外篇:平凡而又神奇的贝叶斯方法
贝叶斯推断及其互联网应用(一):定理简介

-------------本文结束感谢您的阅读-------------
如果对你有帮助,方便的话麻烦给我的午饭加一颗卤蛋