朴素贝叶斯主要用于文本分类,在讲朴素贝叶斯分类原理之前,需要先了解分类问题的定义和贝叶斯公式。
一. 分类问题的定义
已知集合C={y_1, y_2, ..., y_n}和集合I={x_1, x_2, ..., x_m},确定映射规则y=f(x),使得任意的x_i属于I,有且仅有一个y_j属于C使得y_j=f(x_i)成立。其中
- C叫做类别集合,集合C中的每一个元素是一个类别
- I叫做项集合,每一个元素是一个待分类的项
- f叫做分类器,分类算法的任务就是构造分类器f
二. 贝叶斯公式
朴素贝叶斯分类是基于贝叶斯公式的,表述如下
![5676696565b8309707c017f0fb75e0ba.png](https://i-blog.csdnimg.cn/blog_migrate/1f50756c663d1b9ff276e3cbb829c8c7.jpeg)
这个公式的证明也比较简单,由于
![771691b240f663d8d55e6d7fa464befb.png](https://i-blog.csdnimg.cn/blog_migrate/0b5fabe438ac22a9e5a0c6a4fe971815.jpeg)
那么,联立两式消去P(AB),就得到了
![43e5c7de40513af7785793b942ca8c3d.png](https://i-blog.csdnimg.cn/blog_migrate/1d0e65cb474b8d45a98e046394c3ce34.jpeg)
这样,贝叶斯公式为我们打通了从P(A|B)到P(B|A)的通路。
三. 贝叶斯分类原理
朴素贝叶斯分类的原理是这样的:对于给定的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大就认为此待分类项属于哪个类别。
朴素贝叶斯分类的主要步骤描述如下
- 设x={a_1, a_2, ..., a_m}为一个待分类项,其中a_i为x的一个特征属性,一共有m个属性
- 类别集合为C={y_1, y_2, ..., y_n}
- 分别计算P(y_1|x),P(y_2|x),...,P(y_n|x)
- 如果P(y_k|x)=max{P(y_1|x),P(y_2|x),...,P(y_n|x)},则待分类项x就属于类别y_k
这里面最核心的问题就是第3步,如何求这些条件概率。可以通过如下方法可以求出
1.找到一个已知分类的待分类项集合,这个集合叫做训练样本集
2.统计各个类别下各个特征属性的条件概率估计。即得到如下条件概率值
![c8924f54af7f9e7644ca1c61d0b5cdec.png](https://i-blog.csdnimg.cn/blog_migrate/d59519c57c744000f0d3938bb31d9b83.jpeg)
3.如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导
![9262a66a6b811bff48033ca4bf594594.png](https://i-blog.csdnimg.cn/blog_migrate/22d9341d9559c129bb19ba6d58fca202.jpeg)
分母对所有类别来说为常数,只需考虑分子的最大值即可,又因为各特征属性是条件独立的,所以
![231657884d82f00dd0a3903c2631b73e.png](https://i-blog.csdnimg.cn/blog_migrate/2af461d24528cb6924de1893ddc2a7a4.jpeg)
通过这种方式,我们就得到P(y_1|x),P(y_2|x),...,P(y_n|x)的值,进一步完成基于朴素贝叶斯的分类任务。
四. 细节的处理
在上面第2步需要统计计算P(a|y)的值,根据特征的类型有不同的方法
若特征属性a为离散值,只要统计出训练样本中各个属性在每个类别中出现的频率即可用来估计P(a|y)的值。
若特征属性a为连续值,假设其值服从某个分布,例如高斯分布。只要计算出训练样本中类别中特征的均值和标准差,那么带入上式便可得到条件概率的估计值。比如特征属性为身高或体重等,就不是简单地统计出现次数来估计概率了,需要计算均值和标准差来估计。
另外如果遇到P(a|y)=0怎么办? 这是因为某个类别下某个特征属性没有出现,这种情况的出现会导致分类器的质量大大降低。为了解决这个问题,就引入了Laplace校准,核心思想就是如果某个类别下某个特征属性没有出现,那么就让它的计数器加1,即让它出现一次。这样就避免了P(a|y)=0的局面。