P(产品, 超重) = P(产品) \* P(超重) = 2/7 \* 3/7 = 6/49
p(产品, 超重|喜欢) = P(产品|喜欢) \* P(超重|喜欢) = 1/2 \* 1/4 = 1/8
P(喜欢|产品, 超重) = P(产品, 超重|喜欢)P(喜欢)/P(产品, 超重) = 1/8 \* 4/7 / 6/49 = 7/12
3 拉普拉斯平滑系数
贝叶斯公式如果应用在文章分类的场景当中,我们可以这样看:
下面通过一个案例进行理解
需求:通过前四个训练样本(文章),判断第五篇文章,是否属于China类
P(C|Chinese, Chinese, Chinese, Tokyo, Japan)
= P(Chinese, Chinese, Chinese, Tokyo, Japan|C) \* P(C) / P(Chinese, Chinese, Chinese, Tokyo, Japan)
= P(Chinese|C)^3 \* P(Tokyo|C) \* P(Japan|C) \* P(C) / [P(Chinese)^3 \* P(Tokyo) \* P(Japan)]
# 这个文章是需要计算是不是China类,是或者不是最后的分母值都相同:
# 首先计算是China类的概率:
P(Chinese|C) = 5/8
P(Tokyo|C) = 0/8
P(Japan|C) = 0/8
# 接着计算不是China类的概率:
P(Chinese|C) = 1/3
P(Tokyo|C) = 1/3
P(Japan|C) = 1/3
问题:从上面的例子我们可以得到 P(Tokyo|C)
和 P(Japan|C)
都为0,这是不合理的,如果词频列表里面有很多次数都为0,很可能计算结果都为0。
解决办法:拉普拉斯平滑系数
# 这个文章是需要计算是不是China类:
# 该例中,m=6(训练集中特征词的个数,重复不计)
首先计算是China类的概率:
P(Chinese|C) = 5/8 --> 6/14
P(Tokyo|C) = 0/8 --> 1/14
P(Japan|C) = 0/8 --> 1/14
接着计算不是China类的概率:
P(Chinese|C) = 1/3 --> 2/9
P(Tokyo|C) = 1/3 --> 2/9
P(Japan|C) = 1/3 --> 2/9
4 朴素贝叶斯api使用
sklearn.naive_bayes.MultinomialNB(alpha = 1.0)
- 朴素贝叶斯分类
alpha
:拉普拉斯平滑系数
5 朴素贝叶斯算法总结
5.1 朴素贝叶斯优缺点
(1)优点
- 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率
- 对缺失数据不太敏感,算法也比较简单,常用于文本分类
- 分类准确度高,速度快
(2)缺点
- 由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好
- 需要计算先验概率,而先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳;
- 先验概率:直观理解,所谓“先”,就是在事情之前,即在事情发生之前事情发生的概率。是根据以往经验和分析得到的概率,“由因求果”。
- 后验概率:事情已经发生了,事情发生可能有很多原因,判断事情发生时由哪个原因引起的概率,“由果求因”。
- 先验概率就是通常说的概率,后验概率是一种条件概率,但条件概率不一定是验后概率。贝叶斯公式是由先验概率求后验概率的公式
5.2 朴素贝叶斯疑难点
(1)朴素贝叶斯原理
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。
- 对于给定的待分类项x,通过学习到的模型计算后验概率分布,
- 即:在此项出现的条件下各个目标类别出现的概率,将后验概率最大的类作为x所属的类别。
(2)朴素贝叶斯朴素在哪里?
在计算条件概率分布 P(X=x∣Y=c_k) 时,NB引入了一个很强的条件独立假设,即,当Y确定时,X的各个特征分量取值之间相互独立。
(3)为什么引入条件独立性假设?
为了避免贝叶斯定理求解时面临的组合爆炸、样本稀疏问题。
假设条件概率分为:
(4)在估计条件概率P(X∣Y)时出现概率为0的情况怎么办?
解决这一问题的方法是采用贝叶斯估计。
简单来说,引入λ,
- 当λ=0时,就是普通的极大似然估计;
- 当λ=1时称为拉普拉斯平滑。
(5)为什么属性独立性假设在实际情况中很难成立,但朴素贝叶斯仍能取得较好的效果?
- 人们在使用分类器之前,首先做的第一步(也是最重要的一步)往往是特征选择,这个过程的目的就是为了排除特征之间的共线性、选择相对较为独立的特征;
- 对于分类任务来说,只要各类别的条件概率排序正确,无需精准概率值就可以得出正确分类;
- 如果属性间依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算复杂度的同时不会对性能产生负面影响。
5.3 与逻辑回归的区别
(1)区别一:
朴素贝叶斯是生成模型
- 根据已有样本进行贝叶斯估计学习出先验概率P(Y)和条件概率P(X|Y),
- 进而求出联合分布概率P(XY),
- 最后利用贝叶斯定理求解P(Y|X),
而LR是判别模型
- 根据极大化对数似然函数直接求出条件概率P(Y|X);
(2)区别二:
- 朴素贝叶斯是基于很强的条件独立假设(在已知分类Y的条件下,各个特征变量取值是相互独立的),
- 而LR则对此没有要求
(3)区别三:
- 朴素贝叶斯适用于数据集少的情景,
- 而LR适用于大规模数据集。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新