返回介绍

7.5 朴素贝叶斯分类算法

发布于 2024-01-21 22:13:25 字数 3391 浏览 0 评论 0 收藏 0

朴素贝叶斯算法是一种应用贝叶斯理论的学习算法。它基于这样一个假设:特征之间是相互独立的。举一个例子,我们希望知道一封邮件是否为垃圾邮件,该邮件包含词汇“售价”“电话”“促销”,那么现在的问题就是当邮件包含词汇“售价”“电话”“促销”时,该邮件是垃圾邮件的概率为多少。用数学公式表达,y=0表示邮件为垃圾邮件,y=1表示邮件为普通邮件,x1 表示邮件包含“售价”的事件,x2 表示邮件包含“电话”的事件,x3 表示邮件包含“促销”的事件,p(xi )表示事件xi 发生的概率,我们求的就是条件概率p(y=0|x1 ,x2 ,…xn )。这个任务实际上是求最大后验概率 (MAP),由我们生活的经验可知该邮件很有可能属于垃圾邮件,因为垃圾邮件一般包含这三个词汇,贝叶斯公式推导出的结果正符合这个规律。

给定一个分类标签y和自由特征变量x1 ,…,xn ,xi =1表示样本具有特征i,而xi =0表示样本不具有特征i。如果我们想知道具有特征1到n的向量是否属于分类标签yk ,贝叶斯公式如下:

再由特征相互独立的假设:

且由于P(x1 ,…,xn )已经给定,比较P(y1 |x1 ,…,xn )和P(y2 |x1 ,…,xn ),这与比较P(y1 )P(x1 ,…,xn |y1 )和P(y2 )P(x1 ,…,xn |y2 )等价。假设总共有m种标签,我们只需计算P(yk )P(x1 ,…,xn |yk ),k=1,2,…,m,取最大值作为预测的分类标签,即:

贝叶斯分类在处理文档分类和垃圾邮件过滤有较好的分类效果。训练模型后参数P(xi |yk ),i=1,2,…,n,k=1,2,…,m已知,进行预测只需要先统计测试样例是否具有特征x1 到xn ,再计算上面的最大似然函数即可。不同的贝叶斯分类器主要取决于条件概率P(xi |yk )的定义,如果仅采用数学上的原始定义,由于模型过于简单,在处理较复杂的分类问题时效果一般,所以在朴素贝叶斯的基础上有多种改进模型,下面介绍改进模型中常用的高斯模型和多项式模型。

1.高斯朴素贝叶斯

原始的朴素贝叶斯只能处理离散数据,当x1 ,…,xn 是连续变量时,我们可以使用高斯朴素贝叶斯 (Gaussian Naive Bayes)完成分类任务。当处理连续数据时,一种经典的假设是:与每个类相关的连续变量的分布是基于高斯分布的,故高斯朴素贝叶斯的公式如下:

其中μy 分别表示全部属于类yk 的样本中变量xi 的均值和方差。

2.多项式朴素贝叶斯

多项式朴素贝叶斯 (Multinomial Naïve Bayes)经常被用于处理多分类问题,比起原始的朴素贝叶斯分类效果有较大的提升。其公式如下:

其中 表示在训练集T中类yk 具有特征i的样本的数量, 表示训练集T中类yk 的特征总数。平滑系数α>0防止零概率的出现,当α=1称为拉普拉斯平滑,而α<1称为Lidstone平滑。

3.Python实现

Scikit-learn模块中有Naive Bayes子模块,包含了本节涉及的所有贝叶斯算法。关键在于将分类器设置为朴素贝叶斯分类器,接着调用分类器训练和进行分类。其具体实现如代码清单7-6所示。

代码清单7-6 朴素贝叶斯实现

from sklearn import datasets
iris = datasets.load_iris()               # 读取
iris数据集
from sklearn.naive_bayes import GaussianNB     # 使用高斯贝叶斯模型
clf = GaussianNB()                         # 设置分类器
clf.fit(iris.data,iris.target)               # 训练分类器
y_pred = clf.predict(iris.data)               # 预测
print("Number of mislabeled points out of a total %d points : %d" % (iris.data.shape[0],(iris.target != y_pred).sum()))

*代码详见:示例程序/code/7-5.py

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文