贝叶斯分析方法
贝叶斯方法
托马斯·贝叶斯
出于对机器学习的强烈好奇心,我通过度娘,google了解了一下贝叶斯方法的相关知识:
> 所谓的贝叶斯方法源于托马斯·贝叶斯生前为解决一个逆概
的问题写的一篇文章 - An essay towards solving a problem in the doctrine of chances
;
在贝叶斯这篇文章出世之前,人们已经能够计算正概
,比如假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大
。我们当然明白是N/N+M
;而一个自然而然的问题是反过来:如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出几个球,观察这些取出来的球的颜色之后,那么我们可以就可以由此对袋子里面的黑白球的比例进行一个推测
。这个问题,就是所谓的逆概
问题。
实际上,贝叶斯当时的论文只是对这个问题的一个求解尝试,可能他当时也没有意识到这里面包含着的深刻的思想。然而后来,贝叶斯方法席卷了概率论,并将应用延伸到各个问题领域,所有需要作出概率预测的地方都可以见到贝叶斯方法的影子,当然特别地,就是贝叶斯算法是机器学习
的核心方法之一。
方法
就比如现实世界本身就是不确定的,人类的观察能力是有局限性的,因为我们日常所观察到的只是这个事物表面上的结果,就比如上方那个袋子里面取黑白球的例子来说,我们往往只能知道从里面取出来的球是什么颜色,而并不能直接看到袋子里面实际的情况。这个时候,我们就需要提供一个猜测,所谓猜测,当然就是不确定的,但也绝对不是什么都不知道的乱猜——具体地说,我们需要做两件事情: > 算出各种不同猜测的可能性大小。 > 算出最靠谱的猜测是什么。
第一个就是计算特定猜测的后验概率,对于连续的猜测空间则是计算猜测的概率密度函数。而第二个则是所谓的模型比较了,模型比较如果不考虑先验概率的话就是最大似然方法
《人工智能:现代方法》
经典著作《人工智能:现代方法》的作者之一 Peter Norvig 曾经写过一篇文章《How to Write a Spelling Corrector》,里面用到的就是贝叶斯方法;
首先我们来看看这篇文章里面到底是什么,首先开场白,说他的两个朋友对google的拼写纠正很好奇。输入speling可以搜索出spelling,然后他就开始解释,并且写出一个纠正器的代码。
这个时候我们知道了 问题所在,我们也知道了我们要求的东西是什么:
> 一个概率
> P(猜测的他们想输入的单词|他们实际输入的单词)
找出那个使得这个概率最大的猜测单词。显然,我们的猜测未必是唯一的;比如用户输入:里
,那么他到底是想输入这里
,还是想输入 那里
?到底哪个猜测可能性更大呢?这个时候我们就可以依靠贝叶斯,我们不妨将我们的多个猜测记为a+num
,它们都属于一个猜测空间A
,将他们实际输入的单词为B
,于是
P(猜测1|他们输入的单词)
P(a1|B)
P(a2|B)
p(a|B)
P(a|B)=P(a)*P(B|a)/P(B)
对于不同的猜测 a+num
,P(B)
都是一样的
P(a|B)∝P(a)*P(B|a)
对于给定观测数据,一个猜测是好是坏,取决于先验概率
和似然
的乘积。具体到 例子上,含义就是,用户实际是想输入这里
的可能性大小取决于这里
本身在词汇表中被使用的可能性大小和想打 这里
却打成里
的可能性大小的乘积。
下面的事情就很简单了,对于我们猜测为可能的每个单词计算一下P(a)*P(B|a)
这个值,然后取最大值,然后就是那个最有可能的答案了。
朴素贝叶斯
朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。朴素贝叶斯原理简单,也很容易实现,比如垃圾邮件过滤就是使用该方法。
朴素贝叶斯方法包括两个部分:
- 如果你想预测当条件1和条件2出现,结果是什么,你需要求取条件1和条件2情况下,出现概率最大的那个结果。
- 每个结果出现的概率使用贝叶斯定理进行计算。
我们称之为“朴素”,是因为整个形式化过程只做原始、简单的假设。
朴素贝叶斯比起真正的贝叶斯只是多了两个假设条件来降低了复杂度:
多个特性之间相互独立,特性之间没有关联关系也不会相互影响,这在现实生活中是不可能的,就跟人说话一样,例如
吸烟
和运动员
这两个词,理论上运动员是很少吸烟的,也就说如果一个人的特性里已经吸烟了那么他是运动员的概率将会建小,但是朴素贝叶斯忽略了特性之间的关系,把吸烟和运动员这两个特性独立开来,互不影响。
特性之间地位相同,这个更好理解,
是否吸烟
与是否爱运动
这两个特性对最终分类的影响力是相同的,并不存在某个特性的地位高高在上的情况。
如果没有朴素贝叶斯,情况是怎样的呢?如果有N个特性,每个特性都要考虑对其它特性概率的影响,需要维护(N-1)的2次方的概率关系,这N个特性权重又不一样,又增加了N个权重,想想就要脑裂了。。。所以朴素贝叶斯不是最贴近真相的算法,但是在算法和结果见取了平衡。
当然对于这一块,Yannick的一篇文章-《Machine Learning: Naive Bayes》见解更加的到位,希望大家能够更加的清楚;