编程语言
首页 > 编程语言> > 3.朴素贝叶斯和KNN算法的推导和应用

3.朴素贝叶斯和KNN算法的推导和应用

作者:互联网

  前面一个博客我们用Scikit-Learn实现了中文文本分类的全过程,这篇博客,着重分析项目最核心的部分分类算法:朴素贝叶斯算法以及KNN算法的基本原理和简单python实现。

3.1 贝叶斯公式的推导

  简单介绍一下什么是贝叶斯:

  

  让我们从一个故事开始。

  1 看着后视镜往前开车

  想象这么一个场景,我开着车,经过笔直的大道,快速地往下一个路口驶去。我知道,到了下一个路口就要右转了。   这件事情很简单,我坐在驾驶室内,看到下一个路口,往右边打方向盘就好了:   马同学高等数学   突然,不管什么原因(这故事是我写的,可以安排一百种原因,干脆就不解释),反正前挡风玻璃碎了:   马同学高等数学   不要纠结我这幅图,反正你已经无法看清前面的路了,那怎么知道什么时候该右转?   还好,开车的是一位数学家,智商及时上线。   数学家根据自己的经验,估计这条笔直的道路上:   这也就意味着如果随意的右转,有95\%的概率是错误的。   数学家从后视镜看出去,发现后面有一辆车在打右转弯灯,他意识到:      新的信息出现了,此时如果右转,错误的概率就比之前小很多。   这种思考方法,就是贝叶斯定理所阐述的思考方法。

  2 结合开车来理解贝叶斯公式

  我们来看看贝叶斯公式是怎么写的:

  P(A|B)=P(A)\frac{P(B|A)}{P(B)}

  先把刚才的开车给符号化:      我们再来理解下贝叶斯公式:      因此贝叶斯公式实际上阐述了这么一个事情:      我们再通过韦恩图来理解一下这个事情(为了观看方便,下面的A,B的圆形面积是示意):         新的信息的出现,比如之前看到了亮着右转弯灯的车,就好比知道点已经落入了B。   至于为什么B事件发生后导致的调整为:

  \frac{P(B|A)}{P(B)}

  这就需要代数了,推导也不复杂,这里就不演算了。   2.1 小结   我们可以看到有形的十字路口,却看不到明天是否下雨,我们可以看到前方是否有路障,却不清楚下一次飞机是否会出事。甚至有时候,眼睛还会欺骗我们。   很多时候,我们不得不看着后视镜开车,这个时候概率论、贝叶斯定理就是我们的指路明灯。   看着后视镜开车,肯定常常会撞车,没关系,我们可以不断的去修正我们的假设。   比如,撞了几次车之后,就发现可能之前估计的在十字路口打右转弯灯的数据明显偏大了,我们修正之后再继续开车。我们人类的学习,本身也是一个试错的过程。

3 贝叶斯定理与人脑

  贝叶斯定理现在很多人在研究,就是因为不少人相信贝叶斯定理和人脑的工作机制很像(此处颇多争论,望自行判断),因此成为机器学习的基础。   比如,你和对方聊天的时候,如果对方说出“虽然”两个字,你大概就会猜测,对方后继九成的可能性会说出“但是”。我们的大脑看起来就好像是天生在用贝叶斯定理。   吴军博士在他的著作《数学之美》里面就提到了,最早的自然语言处理,比如翻译、语音识别,都是通过语法分析来进行的,就是把“主谓宾”分析清楚,然后处理,正确率惨不忍睹。   后来,google由自然语言处理专家贾里尼克领导的部门,通过统计、概率方法进行上述研究,正确率提高了很多。在书中也列举了贝叶斯定理是如何参与自然语言处理的。   书中还有一句业界广为流传的名言:   语法是人类后来总结出来的,我们天生是不需要语法就可以开口说话的,或许,人脑真的是贝叶斯大脑。   最后,有一个小小的问题,根据我们的经验,硬币正反两面出现的概率都是50\%,如果我扔了一千次都是正面,那说明了什么?   介绍完贝叶斯的基本概念,再来看一下贝叶斯在文本分类上该如何应用。就文本分类来说,我们可以认为词袋中的两两词之间的关系是相互独立的,也就是说对象的特征向量中每个维度都是相互独立的。例如,虽然苹果和梨子有共同的属性,但是苹果和梨是相互独立的,这也是朴素贝叶斯理论的思想基础。   朴素贝叶斯分类的正式定义如下:

第(3)步的各个条件概率,我们可以按以下步骤计算:

 

 

 

 

标签:KNN,开车,推导,定理,贝叶斯,右转,后视镜,我们
来源: https://www.cnblogs.com/xiaochi/p/10965624.html