朴素贝叶斯是一种分类算法,经常被用于文本分类,它的输出结果是某个样本属于某个类别的概率。
概率基础复习
- 联合概率:包含多个条件,且所有条件同时成立的概率
- 记作:
P(A,B)
- 条件概率:就是事件A在另外一个事件B已经发生条件下的发生概率
- 记作:
P(A|B)
- 相互独立:如果
P(A, B) = P(A)P(B)
,则称事件A与事件B相互独立
下面通过一个案例 “ 判断女神对你的喜欢情况 ” 来理解这个公式
问题如下:
女神喜欢的概率?
职业是程序员并且体型匀称的概率?
在女神喜欢的条件下,职业是程序员的概率?
在女神喜欢的条件下,职业是程序员、体重超重的概率?
计算结果为:
P(喜欢) = 4/7
P(程序员, 匀称) = 1/7(联合概率)
P(程序员|喜欢) = 2/4 = 1/2(条件概率)
P(程序员, 超重|喜欢) = 1/4
思考题:
- 在小明是产品经理并且体重超重的情况下,如何计算小明被女神喜欢的概率?
即P(喜欢|产品, 超重) = ?
此时我们需要用到朴素贝叶斯进行求解。
那么思考题就可以套用贝叶斯公式这样来解决:
P(喜欢|产品, 超重) = P(产品, 超重|喜欢)P(喜欢)/P(产品, 超重)
计算上式可以发现:
P(产品, 超重|喜欢)
和 P(产品, 超重)
的结果均为0,导致无法计算结果。这是因为我们的样本量太少了,不具有代表性。职业是产品经理
和事件 体重超重
通常被认为是相互独立的事件,但是,根据我们有限的7个样本计算 P(产品, 超重) = P(产品)P(超重)
不成立。而朴素贝叶斯可以帮助我们解决这个问题:
所以,思考题如果按照朴素贝叶斯的思路来解决,就可以是
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
贝叶斯公式如果应用在文章分类的场景当中,我们可以这样看:
下面通过一个案例进行理解
需求:通过前四个训练样本(文章),判断第五篇文章,是否属于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
sklearn.naive_bayes.MultinomialNB(alpha = 1.0)
alpha
:拉普拉斯平滑系数(1)优点
(2)缺点
- 先验概率:直观理解,所谓“先”,就是在事情之前,即在事情发生之前事情发生的概率。是根据以往经验和分析得到的概率,“由因求果”。
- 后验概率:事情已经发生了,事情发生可能有很多原因,判断事情发生时由哪个原因引起的概率,“由果求因”。
- 先验概率就是通常说的概率,后验概率是一种条件概率,但条件概率不一定是验后概率。贝叶斯公式是由先验概率求后验概率的公式
(1)朴素贝叶斯原理
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。
(2)朴素贝叶斯朴素在哪里?
在计算条件概率分布 P(X=x∣Y=c_k) 时,NB引入了一个很强的条件独立假设,即,当Y确定时,X的各个特征分量取值之间相互独立。
(3)为什么引入条件独立性假设?
为了避免贝叶斯定理求解时面临的组合爆炸、样本稀疏问题。
假设条件概率分为:
(4)在估计条件概率P(X∣Y)时出现概率为0的情况怎么办?
解决这一问题的方法是采用贝叶斯估计。
简单来说,引入λ,
(5)为什么属性独立性假设在实际情况中很难成立,但朴素贝叶斯仍能取得较好的效果?
(1)区别一:
朴素贝叶斯是生成模型
而LR是判别模型
(2)区别二:
(3)区别三:
判别式模型与生成模型