Task02:朴素贝叶斯
理论部分
- 相关概念
- 生成模型
- 判别模型
- 朴素贝叶斯基本原理
- 条件概率公式
- 乘法公式
- 全概率公式
- 贝叶斯定理
- 特征条件独立假设
- 后验概率最大化
- 拉普拉斯平滑
- 朴素贝叶斯的三种形式
- 高斯型
- 多项式型
- 伯努利型
- 极值问题情况下的每个类的分类概率
- 下溢问题如何解决
- 零概率问题如何解决
- sklearn参数详解
练习部分
- 利用
sklearn
解决聚类问题。 sklearn.naive_bayes.GaussianNB
知识点梳理
- 相关概念(生成模型、判别模型)
- 先验概率、条件概率
- 贝叶斯决策理论
- 贝叶斯定理公式
- 极值问题情况下的每个类的分类概率
- 下溢问题如何解决
- 零概率问题如何解决?
- 优缺点
- sklearn参数详解,Python绘制决策树
0.前言
有点惭愧,作为一个理工科考数一的研究生,感觉自己很多数学知识还是很欠缺,很多数学概念理解起来还有点吃力,想学机器学习,数学基础还是一定要搞好啊。
时间有点紧张,学的很仓促,从下面两个方面写一点自己的收获吧。
1.生成模型、判别模型
判别式模型举例:要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。
生成式模型举例:利用生成模型是根据山羊的特征首先学习出一个山羊的模型,然后根据绵羊的特征学习出一个绵羊的模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,在放到绵羊模型中看概率是多少,哪个大就是哪个。
细细品味上面的例子,判别式模型是根据一只羊的特征可以直接给出这只羊的概率(比如logistic regression,这概率大于0.5时则为正例,否则为反例),而生成式模型是要都试一试,最大的概率的那个就是最后结果~
2. 朴素贝叶斯基本原理
贝叶斯定理的由来,可以从正向概率和逆向概率谈起,所谓“正向概率”,可以举个例子来理解:一次抽奖活动,已知纸箱中有2个红球,8个白球,抽到红球为中奖,易知中奖的概率为2/10。这就是正向概率。而贝叶斯的伟大之处在于他提出来“逆向概率”这种思想,假设现在我们抽奖前不知道箱子里有几个白球,几个红球,我们先抽一个,通过抽到的球的颜色来判断抽到红球的概率和抽到白球的概率。这种就是“逆向概率”。由果推因,而非正向概率的由因及果。
贝叶斯定理公式:
分别对应:后验概率=先验概率 × 可能性函数
先验概率可以理解为我们的主观判断的概率,然后根据搜集新的信息来修正(可能性函数/调整因子),最后做出高概率的预测(后验概率)。
我们先根据以往的经验预估一个"先验概率"P(A),然后加入新的信息(实验结果B),这样有了新的信息后,我们对事件A的预测就更加准确。
因此,贝叶斯定理可以理解成下面的式子:
后验概率(新信息出现后A发生的概率) = 先验概率(A发生的概率) x 可能性函数(新信息带出现来的调整)
贝叶斯的底层思想就是:
如果我能掌握一个事情的全部信息,我当然能计算出一个客观概率(古典概率、正向概率)。
可是生活中绝大多数决策面临的信息都是不全的,我们手中只有有限的信息。既然无法得到全面的信息,我们就在信息有限的情况下,尽可能做出一个好的预测。也就是,在主观判断的基础上,可以先估计一个值(先验概率),然后根据观察的新信息不断修正(可能性函数)。
朴素贝叶斯
朴素贝叶斯分类算法是借用到了贝叶斯定理,sklearn官网中对其的介绍为:
Naive Bayes methods are a set of supervised learning algorithms based on applying Bayes’ theorem with the “naive” assumption of conditional independence between every pair of features given the value of the class variable.
翻译过来的大致意思为,朴素贝叶斯的基于贝叶斯定理的有监督学习的一种算法,它有一个“朴素”的特征,即在给定类变量值的条件下,每对特征都是条件独立的。
由贝叶斯公式:
P
(
A
/
B
)
=
P
(
A
)
P
(
B
/
A
)
P
(
B
)
P(A/B)=P(A)\frac{P(B/A)}{P(B)}
P(A/B)=P(A)P(B)P(B/A)
转换成分类任务的表达式:
P
(
类
别
/
特
征
)
=
P
(
类
别
)
P
(
特
征
/
类
别
)
P
(
特
征
)
P(类别/特征)=P(类别)\frac{P(特征/类别)}{P(特征)}
P(类别/特征)=P(类别)P(特征)P(特征/类别)
其实就是特征存在的情况下来判断类别。
朴素贝叶斯的种类
目前在scikit-learn中,一共有3个朴素贝叶斯的分类算法,分为是
1. Gaussian Naive Bayes高斯朴素贝叶斯
即先验概率为高斯分布(正态分布)的朴素贝叶斯,即每个标签的数据都服从简单的正态分布。
2. Multinomial Naive Bayes多项式朴素贝叶斯
即先验概率为多项式分布的朴素贝叶斯
3. Complement Naive Bayes伯努利朴素贝叶斯
即先验概率为伯努利分布的朴素贝叶斯
规律:
- 一般来说,如果样本特征的分布大部分的连续值,使用高斯NB比较好。
- 如果样本特征的分布大部分是多元离散值,用多项式NB比较合适。
- 如果样本特征是二元离散值或者很稀疏的多元离散值,应该用伯努利NB。
PS:以上分类具体的应用需要用到的时候再去补充学习。