朴素贝叶斯(Naive Bayesian algorithm)是有监督学习的一种分类算法,它基于“贝叶斯定理”实现,该原理的提出人是英国著名数学家托马斯·贝叶斯。
一、贝叶斯定理
- P(A) 这是概率中最基本的符号,表示 A 出现的概率。比如在投掷骰子时,P(2) 指的是骰子出现数字“2”的概率,这个概率是 六分之一。
- P(B|A) 是条件概率的符号,表示事件 A 发生的条件下,事件 B 发生的概率,条件概率是“贝叶斯公式”的关键所在,它也被称为“似然度”。
- P(A|B) 是条件概率的符号,表示事件 B 发生的条件下,事件 A 发生的概率,这个计算结果也被称为“后验概率”。
- 先验概率:靠猜
- 后验概率:根据各自的特征再次做出概率预判
- 似然度:条件概率,“可能性”
二、多特征分类问题(即贝叶斯定理的典型应用)
使统计学的相关知识解决上述分类问题,分类问题的样本数据大致如下所示:
[特征 X1 的值,特征 X2 的值,特征 X3 的值,......,类别 A1]
[特征 X1 的值,特征 X2 的值,特征 X3 的值,......,类别 A2]
说明:特征之间是相互独立的,互不影响的
解决思路:这里我们先简单的采用 1 和 0 代表特征值的有无,比如当 X1 的特征值等于 1 时,则该样本属于 A1 的类别概率;特征值 X2 值为 1 时,该样本属于类别 A1 的类别的概率。依次类推,然后最终算出该样本对于各个类别的概率值,哪个概率值最大就可能是哪个类。
P(类别A1|特征X1,特征X2,特征X3,…)
上述式子表达的意思是:在特征 X1、X2、X3 等共同发生的条件下,类别 A1 发生的概率,也就是后验概率,依据贝叶斯公式,我们可以使用似然度求解后验概率,某个特征的似然度如下:
P(特征X1|类别A1,特征X2,特征X3,…)
三、朴素贝叶斯应用
假设一个学校有45%的男生和55%的女生,学校规定不能穿奇装异服,男生的裤子只能穿长筒裤,而女生可以穿裙子或者长筒裤,已知该学校穿长筒裤的女生和穿裙子的女生数量相等,所有男生都必须穿长筒裤,请问如果你从远处看到一个穿裤子的学生,那么这个学生是女生的概率是多少?
根据贝叶斯公式,列出要用到的事件概率:
学校女生的概率:P(女生)= 0.55
女生中穿裤子的概率:P(裤子|女生)= 0.5
学校中穿裤子的概率:P(裤子)= 0.45 + 0.275= 0.725
使用贝叶斯公式求解 P(女生|裤子) 的概率:
P(女生|裤子) = P(裤子|女生) * P(女生) / P(裤子) = 0.5 * 0.55 / 0.725 = 0.379
- P(女生|裤子) 为后验概率
- P(女生) 和 P(裤子)叫做先验概率
- P(裤子|女生) 就是条件概率“似然度”
四、分类
- 高斯朴素贝叶斯(GaussianNB)适用于特征呈正态分布的
- 多项式贝叶斯(MultinomialNB)适用于特征是多项式分布的
- 伯努利贝叶斯(BernoulliNB)适用于二项分布
五、sklearn实现朴素贝叶斯
算法集中在 sklearn.naive_bayes 包.
1) 算法使用流程
使用朴素贝叶斯算法,具体分为三步:
- 统计样本数,即统计先验概率 P(y) 和 似然度 P(x|y)。
- 根据待测样本所包含的特征,对不同类分别进行后验概率计算。
- 比较 y1,y2,…yn 的后验概率,哪个的概率值最大就将其作为预测输出。
2) 朴素贝叶斯算法应用
#鸢尾花数据集
from sklearn.datasets import load_iris
#导入朴素贝叶斯模型,这里选用高斯分类器
from sklearn.naive_bayes import GaussianNB
#载入数据集
X,y=load_iris(return_X_y=True)
bayes_modle=GaussianNB()
#训练数据
bayes_modle.fit(X,y)
#使用模型进行分类预测
result=bayes_modle.predict(X)
print(result)
#对模型评分
model_score=bayes_modle.score(X,y)
print(model_score)
输出结果:
预测分类:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1
1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 1 2 2 2 2
2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]
模型评分:
0.96
参考来自:http://c.biancheng.net/ml_alg/sklearn-bayes.html