朴素贝叶斯算法

朴素贝叶斯算法概述

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法 ,是应用最为广泛的分类算法之一。发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。有哪个属性变量对于决策结果来说占有着较大的比重,也没有哪个属性变量对于决策结果占有着较小的比重。朴素贝叶斯预测的原理是计算各种情况的概率,概率最大的值就是预测结果。朴素贝叶斯适合预测基于各属性的不同类的概率,因此在文本分类上有广泛应用。

朴素贝叶斯公式

P(A|B)=\frac{P(B|A)P(A)}{P(B)}

解释:P(A)代表A发生的概率,P(B)代表B发生的概率,P(A|B)代表在B发生的情况下,A发生的概率,P(B|A)代表在A发生的情况下,B发生的概率。

等式成立的条件需要每个概率之间相互独立。

平滑

如果数据中有一些特征的数据比较少,有一些概率的组合甚至没有出现过,那概率就是0。那么不管其他的特征如何,所有用到这个特征的结果都会是0。

所以为了避免这种问题,引进了拉普拉斯平滑。处理方式非常简单,就是对每个类别下所有划分的计数加1,这样如果训练样本集数量充分大时,对结果产生的影响微乎其微,但是解决了上述问题。

对连续值处理

朴素贝叶斯对值为离散类型的特征去计算概率会比较方便,但是实际应用中,绝大多数处理的值都是连续的。

对于这些取值为连续值的特征,可以假设这些特征的取值服从正态分布。通过其样本集计算出均值和方差,得到正态分布的密度函数。然后把值代入,算出某一点的密度函数的值。

正态分布密度函数公式为

f(x)=\frac{1}{\sqrt{2\Pi \sigma ^{2}}}e^{-\frac{(x-\mu )^{2}}{2 \sigma ^{2}}}

朴素贝叶斯算法的优缺点

优点:

1.逻辑清晰简单,易于实现,适合大规模数据。

2.运算开销小,预测过程快。

3.对于噪声点和无关属性比较健壮。

缺点:

1.再使用时,必须要保证各个特征之间必须是相互独立的。

2.不适合维度太多的数据。维度越多又有可能出现联合的情况,而不是独立的,那么模型的效果就会变差。

3.对输入数据的表达形式很敏感。

朴素贝叶斯算法代码

from sklearn.naive_bayes import MultinomialNB  # 朴素贝叶斯网络模型
clf = MultinomialNB(alpha=1)#平滑因子,默认等于1,表示拉普拉斯平滑
clf.fit(x_train, y_train)
res = clf.predict(x_test)

代码函数及参数说明见

https://scikit-learn.org.cn/view/690.html

你可能感兴趣的:(数据挖掘,分类)