基于sklearn的朴素贝叶斯_1.9. 朴素贝叶斯

本文详细介绍了scikit-learn库中的朴素贝叶斯算法,包括高斯朴素贝叶斯、多项分布朴素贝叶斯、补充朴素贝叶斯和伯努利朴素贝叶斯。通过实例展示了如何使用这些算法进行分类,并讨论了它们在不同情况下的适用性和优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.9. 朴素贝叶斯

朴素贝叶斯方法是基于贝叶斯定理的一组有监督学习算法,即“简单”地假设每对特征之间相互独立。 给定一个类别

e60097198c11c1ebd56ba6c9a2f4dba6.png 和一个从

a68b34cafd55a18a1767ba0452ad9b60.png

85b2db8bc5a42333480b8135b1be0cef.png 的相关的特征向量, 贝叶斯定理阐述了以下关系:

6c453517af4214f00080f0c5b76f8f0e.png

使用简单(naive)的假设-每对特征之间都相互独立:

729d2381a167372982b0c4e90a80ad39.png

对于所有的 :i 都成立,这个关系式可以简化为

b6911fa1dcd1d8b2b30becb7c5597cd3.png

由于在给定的输入中

a48d32e7accfabe4490407803bd75f3e.png 是一个常量,我们使用下面的分类规则:

69032f7abea06cfe5e7864bdddb98f9d.png

我们可以使用最大后验概率(Maximum A Posteriori, MAP) 来估计

7d413af9d63027dc9ecdf1cf7a478a35.png

e74eeca68769e01c995377dde3d3d288.png ; 前者是训练集中类别

e60097198c11c1ebd56ba6c9a2f4dba6.png 的相对频率。

各种各样的的朴素贝叶斯分类器的差异大部分来自于处理

e74eeca68769e01c995377dde3d3d288.png 分布时的所做的假设不同。

尽管其假设过于简单,在很多实际情况下,朴素贝叶斯工作得很好,特别是文档分类和垃圾邮件过滤。这些工作都要求 一个小的训练集来估计必需参数。(至于为什么朴素贝叶斯表现得好的理论原因和它适用于哪些类型的数据,请参见下面的参考。)

相比于其他更复杂的方法,朴素贝叶斯学习器和分类器非常快。 分类条件分布的解耦意味着可以独立单独地把每个特征视为一维分布来估计。这样反过来有助于缓解维度灾难带来的问题。

另一方面,尽管朴素贝叶斯被认为是一种相当不错的分类器,但却不是好的估计器(estimator),所以不能太过于重视从 predict_proba 输出的概率。

参考资料:

1.9.1. 高斯朴素贝叶斯

GaussianNB 实现了运用于分类的高斯朴素贝叶斯算法。特征的可能性(即概率)假设为高斯分布:

3831ab4b344d262366074550c5d4ac92.png

参数

a8d3c0f445753b797b3230220ee53705.png

21d06dd3b3fc83b398a674a4941aec60.png 使用最大似然法估计。

>>>from sklearn import datasets

>>>iris = datasets.load_iris()

>>>from sklearn.naive_bayes import GaussianNB

>>>gnb = GaussianNB()

>>>y_pred = gnb.fit(iris.data, iris.target).predict(iris.data)

>>>print("Number of mislabeled points out of a total %d points : %d"

... % (iris.data.shape[0],(iris.target != y_pred).sum()))

Number of mislabeled points out of a total 150 points : 6

1.9.2. 多项分布朴素贝叶斯

MultinomialNB 实现了服从多项分布数据的朴素贝叶斯算法,也是用于文本分类(这个领域中数据往往以词向量表示,尽管在实践中 tf-idf 向量在预测时表现良好)的两大经典朴素贝叶斯算法之一。 分布参数由每类

e60097198c11c1ebd56ba6c9a2f4dba6.png

3c2ed5b32bf7d80bbe5902fee7a20096.png 向量决定, 式中

fb4c8a769882a82ffab8ca2965e43361.png 是特征的数量(对于文本分类,是词汇量的大小)

e6850ca88af58c2090c2dfde8fbb9632.png 是样本中属于类

e60097198c11c1ebd56ba6c9a2f4dba6.png 中特征

242367d8024e4839ce2728c4d49aa055.png 概率

e74eeca68769e01c995377dde3d3d288.png

参数

5e74d3fd36bd689a95f598783767c7f6.png 使用平滑过的最大似然估计法来估计,即相对频率计数:

d9c4d0803716ffc355466320f9bea327.png

式中

0891373fac98ab2d02e6f4ff3e082ecf.png是 训练集T中特征i在类

e60097198c11c1ebd56ba6c9a2f4dba6.png中出现的次数,

10ed231e6b9fbdb25965383f79b72802.png 是类

e60097198c11c1ebd56ba6c9a2f4dba6.png 中出现所有特征的计数总和。

先验平滑因子

960b1ed1d60458ae28b9058143c6965f.png 为在学习样本中没有出现的特征而设计,以防在将来的计算中出现0概率输出。 把

f0df35dba0f02bd5146a9eb111365696.png 被称为拉普拉斯平滑(Lapalce smoothing),而

3f91dc0a41351cbace61ca912c894a14.png 被称为Lidstone平滑方法(Lidstone smoothing)。

1.9.3. 补充朴素贝叶斯

ComplementNB实现了补充朴素贝叶斯(CNB)算法。CNB是标准多项式朴素贝叶斯(MNB)算法的一种改进,特别适用于不平衡数据集。具体来说,CNB使用来自每个类的补数的统计数据来计算模型的权重。CNB的发明者的研究表明,CNB的参数估计比MNB的参数估计更稳定。此外,CNB在文本分类任务上通常比MNB表现得更好(通常有相当大的优势)。计算权重的步骤如下:

59bdc0ddf77d7101baf2782e5f12229c.png

其中对不在类c中的所有记录j求和,dij可以是文档j中词语i的计数或tf-idf值,αi是就像MNB中一样的平滑超参数,同时

2ebb9389bdcb64674e7359af8210378e.png。第二个归一化解决了长记录主导MNB参数估计的问题。分类规则为:

26d4d67da9918a141951ce60e27960c7.png

即将记录分配给补充匹配度最低的类。

1.9.4. 伯努利朴素贝叶斯

BernoulliNB 实现了用于多重伯努利分布数据的朴素贝叶斯训练和分类算法,即有多个特征,但每个特征 都假设是一个二元 (Bernoulli, boolean) 变量。 因此,这类算法要求样本以二元值特征向量表示;如果样本含有其他类型的数据, 一个 BernoulliNB 实例会将其二值化(取决于 binarize 参数)。

伯努利朴素贝叶斯的决策规则基于:

c28073b8f978b03d0f1d7c9698a3d7c0.png

与多项分布朴素贝叶斯的规则不同 伯努利朴素贝叶斯明确地惩罚类

e60097198c11c1ebd56ba6c9a2f4dba6.png 中没有出现作为预测因子的特征

242367d8024e4839ce2728c4d49aa055.png ,而多项分布分布朴素贝叶斯只是简单地忽略没出现的特征。

在文本分类的示例中,统计词语是否出现的向量(word occurrence vectors)(而非统计词语出现次数的向量(word count vectors))可以用于训练和使用这个分类器。 BernoulliNB 可能在一些数据集上表现得更好,特别是那些更短的文档。 如果时间允许,建议对两个模型都进行评估。

参考资料:

C.D. Manning, P. Raghavan and H. Schütze (2008). Introduction to Information Retrieval. Cambridge University Press, pp. 234-265.

A. McCallum and K. Nigam (1998). A comparison of event models for Naive Bayes text classification. Proc. AAAI/ICML-98 Workshop on Learning for Text Categorization, pp. 41-48.

V. Metsis, I. Androutsopoulos and G. Paliouras (2006). Spam filtering with Naive Bayes – Which Naive Bayes? 3rd Conf. on Email and Anti-Spam (CEAS).

1.9.5. 基于外存的朴素贝叶斯模型拟合

朴素贝叶斯模型可以解决整个训练集不能导入内存的大规模分类问题。 为了解决这个问题, MultinomialNB, BernoulliNB, 和 GaussianNB 实现了 partial_fit 方法,可以动态的增加数据,使用方法与其他分类器的一样,使用示例见 Out-of-core classification of text documents 。所有的朴素贝叶斯分类器都支持样本权重。

与 fit 方法不同,首次调用 partial_fit 方法需要传递一个所有期望的类标签的列表。

对于 scikit-learn 中可用方案的概览,另见 out-of-core learning 文档。

注意:所有朴素贝叶斯模型调用 partial_fit 都会引入一些计算开销。推荐让数据块越大越好,其大小与 RAM 中可用内存大小相同。

AiCoDHwb

Copyright © ibooker.org.cn 2019 all right reserved,由 ApacheCN 团队提供支持该文件修订时间:

2020-11-23 10:54:46

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值