机器学习训练营——机器学习爱好者的自由交流空间(qq 群号:696721295)
Naive Bayes
方法是一组有监督学习算法,它根据贝叶斯(Bayes)理论,并假设每一对特征之间是独立的。给定特征向量
和类变量
, Bayes理论阐明下面的关系:
使用Naive独立性假设
这样,Bayes公式可以简化为
给定输入 上式的分母是常数。我们能使用下面的分类规则:
我们使用最大后验概率(Maximum A Posteriori, MAP)估计 . 用类 在训练集的相对频率来估计。不同的naive Bayes分类器的区别主要在关于 分布的假设。
尽管假设简单, naive Bayes分类器在很多真实的分类问题,例如文档分类、垃圾邮件过滤,效果很理想。它只需要少量的训练数据去估计必要的参数。而且,相比其它复杂的方法, naive Bayes分类器执行非常快,类条件特征分布的可分解性意味着,每一个分布都可以作为一维分布独立地估计。反过来说,尽管naive Bayes是一个适宜的分类器,但是它的估计量并不好,因此,来自predict_proba
的概率输出结果建议只作为参考。
Gaussian Naive Bayes
GaussianNB
执行Gaussian Naive Bayes分类算法。假设特征的似然是高斯分布:
参数 使用最大似然法估计。
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()))
Multinomial Naive Bayes
MultinomialNB
执行多元正态分布数据的naive Bayes算法。该算法典型地用于文本分类(文本数据通常用词计数向量表示,例如tf-idf向量)。对于每一个类
, 分布经向量
参数化,
是特征数(在文本分类里,是词条数目),
即概率
, 出现在一个样本里的特征
属于类
的概率。
参数
由最大似然的平滑版本估计,即,相对频率计数:
这里, , 是特征 出现在训练集的标签为 的样本个数。 , 所有特征的具有类标签 的样本总数。平滑先验 , 考虑了没有出现在学习样本的特征,避免未来计算可能出现0概率的情况。设置 称 Laplace平滑, 称Lidstone平滑。
Bernoulli Naive Bayes
BernoulliNB
执行多变量Bernoulli分布数据的naive Bayes分类算法。即,有多个特征,假设每一个特征是二值变量。因此,类要求样本由二值的特征向量表示。如果处理任何其它类型的数据,一个BernoulliNB实例可以二值化输入(依靠binarize参数)。Bernoulli naive Bayes的决策规则是根据:
区别于Multinomial Naive Bayes规则的是,它明确地惩罚了一个作为类 指示器的特征 不发生的情况,而Multinomial Naive Bayes只是忽略了一个不发生的特征。
在文本分类问题里,词出现向量(注意,不是词出现计数向量)可以被用来训练和使用该分类器。BernoulliNB在某些数据集上可能表现更好,特别是短文档。如果时间允许的话,建议两个模型都作评价。
阅读更多精彩内容,请关注微信公众号:统计学习与大数据