#前言
本篇博客会对贝叶斯算法做一个最基本的原理介绍和理论公式推导,希望对大家有所帮助!在正式开始之前,我先给大家简单介绍一下贝叶斯。贝叶斯是18世纪伟大的英国数学家,而贝叶斯算法源于其生前为解决一个“逆概”问题写的一篇文章,但是贝叶斯也属于生不逢时,直到死后他的研究成果才被世人所认可。
#逆概的引入
什么是逆向概率?我们来假设这样一个问题:一个黑箱中装有6个白球和4个黑球,现在随机从黑箱中摸一个球出来,问摸出来是黑球或者白球的概率是多少?这样的思维和计算过程是典型的正向概率,而逆向概率就是我们随机摸了10次球,得到了不同数量的白球和黑球,现在要通过黑球和白球的数量来推测原本黑箱中黑球和白球的数量,这就是最简单的逆向概率问题。
#贝叶斯公式的推导
现在有一个学校,学校中男生占60%,女生占40%,且在学校中所有的男生都穿长裤,女生中有一半穿长裤,有一半穿裙子,现在有一个穿长裤的学生,问该学生是女生的概率是多少?
首先我们假设该学校一共有U名学生,我们可以很容易得出男生且穿长裤的人数为:
女生且穿长裤的人数为:
将二者进行加和得到该学校中穿长裤的总人数:
那么女生穿长裤的概率为:女生穿长裤的人数/穿长裤的总人数
我们将上述得出的穿长裤的总人数带入上述的公式得到一下的表达式:
这里我们可以进行一个简单的化简操作,将分母中的U提出来,仔上下约分得到下面的表达式:
我们会发现,分母其实就是P(Pants),我们将Girs设为A事件,将Pants设为B事件,那么上述的表达式就可以化简为以下的内容:
不难发现听起来伟大的贝叶斯公式其实就是我们高中所学习的条件概率,这样看来是不是不太难!
#先验概率
这里我们通过一个具体的例子来引入我们的概念。相信大家都有在输入法中输错的经历,但是我们发现,我们的输入法会根据我们平时的输入习惯来进行自动纠正,输入法是如何实现这一过程的?假如我们现在输入了tha,很明显不存在这样一个单词,此时输入法可能就会猜测我们想输入的是the还是than呢?接下来我们将这个问题数学化
以上的公式就是对于输入法猜测的我们想输入the还是than的可能性的计算表达式,我们将其在变得抽象一点
此时h为输入法猜测我们想输入的单词,而D为我们实际输入的单词,但是我们发现这样不能很好的计算结果,所以我们利用贝叶斯公式进行一个问题转换。由于二者的分母是一致的,而输入法本质上想要知道的结果是哪一个词的概率大,所以我们将分母约去,发现P(h/D) 与分子有关 。
得到 P(h/D)正比于分母,正如上述表达式一样。这里这里P(h)我们说他其实是输入法对于我们输入习惯的一个先验概率。
贝叶斯算法与机器学习最大的不同就是贝叶斯算法依赖于先验概率,这与机器学习的似然函数是有很大不同的。我们回到那个赌场的例子,在你前面10个都在同一张赌桌上赢了,似然函数就会认为第十一次你去赌的时候,你赢的概率是100%,但是贝叶斯算法中的先验概率则会认为十赌九输,并不会因为你前面10个人都赢了而你去赌博的时候就一定会赢。
#朴素贝叶斯算法
这里我们还是通过具体的实例来引入这个概念。相信每个人平时都或多或少收到一些垃圾邮件,而我们邮箱有时会帮助我们自动将一些邮件判别为垃圾邮件,这个过程是如何实现的?我们还是像上面那样,对这个问题进行数学化:
这里h+代表的是垃圾邮件,h-代表的是正常的邮件,计算机要判断的就是上面这两个式子哪一个更大,如果上面的更大,则系统将其自动判断别为垃圾邮件。但是我们会发现一点,对于这个D该如何解决呢,它不再像我们之前遇到的一样,仅仅代表一个词,此时它代表的是一堆词。那么这里我们的处理思路就是将D分解为d1,d2,d3等一系列词语,基于先前判断出来的垃圾邮件和正常邮件语料库中的词频,来对P(D/h+)和P(D/h-)进行一个分解,如下所示:
也就像上面表达式所传达的一样,在前一个词出现的概率下,后一个词的出现概率。但是我们该如何量化,这样的乘法形式我们是很难量化的。这里就需要引入我们的朴素贝叶斯,贝叶斯认为,每一个词都是独立的,每一个词的存在都与邮件中其他词的存在无关,所以我们可以将上述的式子变一变。
现在的样子是不是比上面要美丽的多哈哈哈哈哈。
以上就是有关贝叶斯算法的相关理论知识,希望对您有所帮助!我们下期再见,拜拜~