1. 朴素贝叶斯方法概述
朴素贝叶斯方法是一系列有监督学习算法组成的,这些算法基于应用贝叶斯理论并带有“naive”的假设:所有特征之间两两独立。给定一个类变量
y
和一个独立的特征向量集
使用朴素独立假设:
对于所有的
i
,上述的关系式简化为:
因为是给定的输入的常量,所以我们可以使用如下的分类规则:
并且我们可以使用最大后验概率来估计
朴素贝叶斯学习和分类器可以比更复杂的方法工作的更快速。类条件特征分布的去耦意味着每一个分布可以被独立的估计一维分布。这反过来有助于缓解问题源于维度的诅咒。
另一方面,尽管贝叶斯分类器作为一个相当好的分类器,但是如果从 predict_proba 输出的概率没有被严格的采用,那么他将变为一个坏的估计。
2. 高斯贝叶斯
GaussianNB 实现了朴素贝叶斯算法作为分类器。特征的似然估计被假定为高斯分布:
参数 δy 和 μy 是使用最大似然估计计算出来的。
>>> 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
3. 多项式朴素贝叶斯
MultinomialNB 实现了多项式分布数据上的朴素贝叶斯算法,并且是两种在文本分类中使用的朴素贝叶斯方法的变中之一(在这数据典型地表示为词向量统计,尽管 tf-idf 算法在实践中的效果更好)。每个类
y
的分布由向量 参数化,其中
参数
θy
由一个平滑版本的最大似然估计来估算,例如相关的频率计算:
其中 ,是特征
i
在训练集 T 中出现在类
平滑先验
4. 伯努利朴素贝叶斯
BernoulliNB 实现了数据分布服从多变量伯努利分布的朴素贝叶斯训练和分类算法。例如,有多个维度的特征,但是每个维度的特征是一个二进制变量。因此,该类要求样本被表示为二进制特征向量,如果处理任何其他种类的数据,一个BernoulliNB 可能二值化它的输入(依赖于参数binarize)。
伯努利贝叶斯决策规则基于如下公式:
这和多项式朴素贝叶斯规则区别在于:它明确地惩罚未出现的作为类
y
的指标的特征
在文本分类中,词出现向量(而不是词统计向量)可能会被用来训练和使用该分类器。BernoulliNB 在某些数据集上的执行效果会更好,尤其是在那些比较短的文本中。如果时间允许的话,建议对以上两种模型进行对比评估一下。
5. 核外朴素贝叶斯模型拟合
朴素贝叶斯模型能够被用于那些全部训练集不能够完全存放于内存中的大规模分类问题。要处理这种情况,MultinomialNB, BernoulliNB, 和 GaussianNB 暴露一个名为partial_fit的方法,该方法能够被增量式的用于其他分类器。所有的朴素贝叶斯分类器支持样本权重。对比与fit方法,partial_fit方法在第一次使用时需要通过所有期望的类标签的列表。