1、概率论基础
贝叶斯原理就是求解后验概率。如果已知p(x|c)要求p(c|x),我们可以使用贝叶斯公式进行求解。
贝叶斯公式:
ps:图片出处
朴素贝叶斯分类器中的朴素指的是特征样本之间相互独立。
2、举个栗子
已在线社区留言板为例子,我们要屏蔽侮辱性言论。对此问题我们建立两个类别:侮辱性和非侮辱性。我们先定一个词典,比如[dog,love,cute…],然后把一条留言分成词向量[0,1,0,0,…1]。其中1代表该词在词典里出现过,0代表这个词没有出现。比如dog对应0,就说明这个词没出现过。
然后我们先通过类别i(侮辱性留言或非侮辱性留言)中文档数除以总文档数来计算概率p(ci)。接着我们重写p(x,y)为p(w),其中w表示这是一向量。
用ci(类别)来替换上面式子的x。假设w={w1,w2,w3……},因为相互独立,我们就可以把p(w|ci)拆成p(w1|ci)p(w2|ci)p(w3|ci)…即每个单词在侮辱性留言/非侮辱性留言出现的概率。
最后我们通过贝叶斯公式就可以计算出p(ci|w),也就是在这个词向量出现的情况下,可能是侮辱性留言/非侮辱性留言的概率。(两个都算然后比较概率的大小)
3、极大似然估计
但是在实际问题中并不都是这样幸运的,我们能获得的数据可能只有有限数目的样本数据,而先验概率和类条件概率(各类的总体分布)都是未知的。根据仅有的样本数据进行分类时,一种可行的办法是我们需要先对先验概率和类条件概率进行估计,然后再套用贝叶斯分类器。
极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。
在朴素贝叶斯法中,学习意味着估计P(Y=ck)和P(X(j)=x(j)|Y=ck)我们可以求出先验概率P(Y=ck)和P(X(j)=ajl|Y=ck)的极大似然估计。公式分别如下:
ps:就是以现有的数据来预测参数。
代码
#sklearn实例
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
clf.fit(X_train, y_train)
clf.predict([[4.4, 3.2, 1.3, 0.2]])
#output:array([0.])