机器学习—贝叶斯算法与朴素贝叶斯分类

最近两天在复习贝叶斯算法,看了不少相关文章,但发现绝大部分都过分强调于公式的演算,个人认为首先应该掌握其中的思想。

本文会按照以下顺序介绍相关内容:

  1. 贝叶斯方法由来
  2. 贝叶斯公式理解
  3. 贝叶斯在NLP中的应用
  4. 朴素贝叶斯分类实例

历史

  所谓的贝叶斯方法源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如“假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大”。而一个自然而然的问题是反过来:“如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测”。这个问题,就是所谓的逆概问题。  —wikipedia

贝叶斯公式

让我们先来了解概率和统计的关系:

  百度百科:贝叶斯概率(Bayesian Probability)是由贝叶斯理论所提供的一种对概率的解释,它采用将概率定义为某人对一个命题信任的程度的概念。
  概率论是统计推断的基础,在给定数据生成过程下观测、研究数据的性质;而统计推断则根据观测的数据,反向思考其数据生成过程。预测、分类、聚类、估计等,都是统计推断的特殊形式,强调对于数据生成过程的研究。
  举例来说,概率论研究的是一个白箱子,你知道这个箱子的构造(里面有几个红球、几个白球,也就是所谓的分布函数),然后计算下一个摸出来的球是红球的概率。而统计学面对的是一个黑箱子,你只看得到每次摸出来的是红球还是白球,然后需要猜测这个黑箱子的内部结构,例如红球和白球的比例是多少?
在这里插入图片描述
  总结来说就是:通过已知的概率模型来精确的计算各种结果的可能性就是概率论;根据观测的结果来推断模型的不确定性就是统计学。

贝叶斯公式本质:执果索因,在知道结果的情况下去推断原因的方法。

  贝叶斯定理的推导始于条件概率,条件概率可以定义为:在事件B发生的前提下,事件A发生的概率,数学上用P(A|B)来表示这个条件概率,其数学表达为:
P ( A ∣ B ) = P ( A B ) P ( B ) ( 1 ) P(A|B)=\frac{P(AB)}{P(B)} (1) P(AB)=P(B)P(AB)1
  举例来说,学校里60%是男生,40%是女生,男生留长发的概率是20%,女生留长发的概率是80%,那么校园里一个留长发的学生,是女生的概率为多少?
  对于这个问题,我们假设A代表”学生是女生“这一事件,B代表”学生留长发“这一事件,那么,公式1中 P ( B ) = P ( A ) P ( B ∣ A ) + P ( A ′ ) P ( B ∣ A ′ ) = 0.4 ∗ 0.8 + 0.6 ∗ 0.2 P(B)=P(A)P(B|A)+P(A')P(B|A')=0.4*0.8+0.6*0.2 P(B)=P(A)P(BA)+P(A)P(BA)=0.40.8+0.60.2
  我们可以发现这其实就是全概率公式,表达的含义是学生留长发的概率,包括了两部分,长发男生和长发女生;同样地,可以得到:
P ( B ∣ A ) = P ( B A ) P ( A ) ( 2 ) P(B|A)=\frac{P(BA)}{P(A)} (2) P(BA)=P(A)P(BA)2
  公式(1)等式两边乘以P(B),公式(2)等式两边乘以P(A),得到:
P ( A B ) = P ( A ∣ B ) P ( B ) ( 3 ) P(AB)=P(A|B)P(B) (3) P(AB)=P(AB)P(B)3
P ( B A ) = P ( B ∣ A ) P ( A ) ( 4 ) P(BA)=P(B|A)P(A) (4) P(BA)=P(BA)P(A)4
  由于P(AB)=P(BA),最终得到贝叶斯公式:
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) ( 5 ) P(A|B)=\frac{P(B|A)P(A)}{P(B)} (5) P(AB)=P(B)P(BA)P(A)5
  其中,分母部分是全概率,P(A)是先验概率,我们最终要求的P(A|B)是后验概率。

中文分词

  隐马尔可夫模型(HMM)是将分词作为字在字符串中的序列标注任务来实现的,其基本思路是:每个字在构造一个特定的词语时占据一个确定的构词位置,现规定每个字最多只有4个构词位置,即B(词首)、M(词中)、E(词尾)、S(单独成词)。

  对于句子“中文/分词/是/文本处理/不可或缺/的/一步!”,可以直接表示成“中/B文/E分/B词/E是/S文/B本/M处/M理/E不/B可/M或/M缺/E的/S一/B步/E!/S”

用数学抽象表示为:用 x=c1c2…cn 代表输入的句子,n为句子长度,ci表示第i个字符;
y=y1y2…yn 代表输出的标签,那么理想的输出为:
y m a x = m a x P ( y 1 y 2... y n ∣ c 1 c 2... c n ) ( 6 ) ymax=max P(y1y2...yn|c1c2...cn) (6) ymax=maxP(y1y2...ync1c2...cn)6

  在分词任务上,y即为B、M、E、S这4中标签,c为诸如“中”“文”等句子中的每个字(包括标点),这里引入独立性假设,即每个字的输出仅与当前字有关,于是能得到:
P ( y 1 y 2... y n ∣ c 1 c 2... c n ) = P ( y 1 ∣ c 1 ) P ( y 2 ∣ c 2 ) . . . P ( y n ∣ c n ) ( 7 ) P(y1y2...yn|c1c2...cn)=P(y1|c1)P(y2|c2)...P(yn|cn)(7) P(y1y2...ync1c2...cn)=P(y1c1)P(y2c2)...P(yncn)7

  但是这种方法完全没有考虑上下文,容易出现分词不合理的情况,例如BBB、BEM等输出结果。我们希望最大化P(y|x),通过贝叶斯公式转换能得到,
P ( y ∣ x ) = P ( x ∣ y ) P ( y ) P ( x ) ( 8 ) P(y|x)=\frac{P(x|y)P(y)}{P(x)} (8) P(yx)=P(x)P(xy)P(y)8
  x为给定的输入,因此P(x)计算为常数,最大化P(y|x),等价于最大化P(x|y)P(y)。针对P(x|y)P(y)做马尔科夫假设,得到:
P ( x ∣ y ) = P ( x 1 ∣ y 1 ) P ( x 2 ∣ y 2 ) . . . P ( x n ∣ y n ) ( 9 ) P(x|y)=P(x1|y1)P(x2|y2)...P(xn|yn) (9) P(xy)=P(x1y1)P(x2y2)...P(xnyn)9
P ( y ) = P ( y 1 ) P ( y 2 ∣ y 1 ) P ( y 3 ∣ y 1 , y 2 ) . . . P ( y n ∣ y 1 , y 2 , . . . , y n − 1 ) ( 10 ) P(y)=P(y1)P(y2|y1)P(y3|y1,y2) ...P(yn|y1,y2,...,yn-1) (10) P(y)=P(y1)P(y2y1)P(y3y1,y2)...P(yny1,y2,...,yn1)10
  实际上,HMM做了另一个假设——齐次马尔可夫假设,每个输出仅与上一个输出有关:
P ( y ) = P ( y 1 ) P ( y 2 ∣ y 1 ) P ( y 3 ∣ y 2 ) . . . P ( y n ∣ y n − 1 ) ( 11 ) P(y)=P(y1)P(y2|y1)P(y3|y2) ...P(yn|yn-1) (11) P(y)=P(y1)P(y2y1)P(y3y2)...P(ynyn1)11
  于是,
P ( x ∣ y ) P ( y ) = P ( x 1 ∣ y 1 ) P ( y 2 ∣ y 1 ) P ( x 2 ∣ y 2 ) P ( y 3 ∣ y 2 ) . . . P ( y n ∣ y n − 1 ) P ( x n ∣ y n ) P(x|y)P(y)=P(x1|y1)P(y2|y1)P(x2|y2)P(y3|y2)...P(yn|yn-1)P(xn|yn) P(xy)P(y)=P(x1y1)P(y2y1)P(x2y2)P(y3y2)...P(ynyn1)P(xnyn)
在HMM中,将P(xk|yk)成为发射概率,P(yk|yk-1)称为转移概率,通过设置某些P(yk|yk-1)=0来排除不合理标签组合。最后利用Viterbi算法来求解,此处不再赘述。

朴素贝叶斯分类

此处参考 https://www.cnblogs.com/taich-flute/p/6813815.html

参考:

https://zhuanlan.zhihu.com/p/38553838
https://blog.csdn.net/u012845311/article/details/73549585
https://www.zhihu.com/question/51448623

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值