朴素贝叶斯算法详解

原创 2017年08月05日 22:02:15

1. 引言

  
  朴素贝叶斯算法(Naive Bayes)是机器学习中常见的基本算法之一,主要用来做分类任务的。它是基于贝叶斯定理与条件独立性假设的分类方法。对于给定的训练数据集,首先基于特征条件独立性假设学习输入/输出的联合概率分布,然后基于此模型,对于给定的输入 x 利用贝叶斯定理求出后验概率最大的输出 y
  
  基于以上的解释,我们知道:1. 该算法的理论核心是贝叶斯定理;2. 它是基于条件独立性假设这个强假设之下的,这也是该算法为什么称为“朴素”的原因。

本文将从以下几个角度去详细解释朴素贝叶斯算法:

  1. 朴素贝叶斯算法的数学原理;

  2. 朴素贝叶斯算法的参数估计;

  3. 拉普拉斯平滑;

2. 原理

  介绍完了基本概念之后,我们就应该详细地介绍算法的原理。由于该算法的基本思想是基于朴素贝叶斯定理的,所以本节首先介绍一下朴素贝叶斯算法背后的数学原理。

2.1 贝叶斯定理

  根据贝叶斯定理,对一个分类问题,给定样本特征 x,样本属于类别 y 的概率是

P(y|x)=P(x|y)P(y)P(x)(1)

公式中的 x 是特征向量的维度,假设为 d。因此,有:

P(y|x)=P(x1,x2,...,xd|y)P(y)P(x)(2)

由于条件概率分布有指数及数量的参数,因此,求解该问题是一个NP难问题,实现中很难解决,所以直接求解不可行。因此,朴素贝叶斯法对条件概率分布做了条件独立性的假设,于是有:

P(x1,x2,...,xd|y=ck)=i=0dP(xi|y=ck)(3)

  
将(3)带入(2)得:

P(y=ck|x)=P(y=ck)di=0P(xi|y=ck)P(x)(4)

这是朴素贝叶斯法分类的基本公式。因此,朴素贝叶斯分类器可以表示为:

y=f(x)=argmaxckP(y=ck)di=0P(xi|y=ck)P(x)(5)

由于所有的P(x)的分布是一样的,所以:

y=f(x)=argmaxckP(y=ck)i=0dP(xi|y=ck)(6)

2.2 后验概率最大化的意义

  由上述的推导可知,朴素贝叶斯分类是将实例分到后验概率最大的类中。这等价于期望风险最小化。这就是朴素贝叶斯法所采用的原理。

3. 参数估计

  由(6)可知,朴素贝叶斯法的学习过程主要是估计 P(y=ck) 以及 P(xj|y=ck)

P(y=ck)=Ni=1I(yi=ck)N,k=1,2,...,K(7)

P(Xj=xj|y=ck)=Ni=1I(Xj=xj,y=ck)Ni=1I(yi=ck),k=1,2,...,K(8)

4. 拉普拉斯平滑

  到这里好像方法已经介绍完了,实则有一个小问题需要注意,在公式中,如果从样本中算出的概率值为0该怎么办呢?下面介绍一种简单方法,给学习步骤中的两个概率计算公式,分子和分母都分别加上一个常数,就可以避免这个问题。更新过后的公式如下:

P(y=ck)=Ni=1I(yi=ck)+λN+Kλ,k=1,2,...,K(9)

K是类的个数

P(Xj=xj|y=ck)=Ni=1I(Xj=xj,y=ck)+λNi=1I(yi=ck)+Ljλ,k=1,2,...,K(10)

Lj是第j维特征的最大取值

5. 特征值是连续值时的参数估计

未完待续。。。


对机器学习,人工智能感兴趣的小伙伴可以加我微信:JeemyJohn,我拉你进我的机器学习群(群里很多高手哦!),或者扫描二维码!当然你也可以关注我的公众号,点击链接:燕哥带你学算法公众号团队简介

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

朴素贝叶斯Naïve Bayes分类算法在Hadoop上的实现

1. Naïve Bayes算法介绍 Naïve Bayes是一个简单有效的分类算法,已经得到广泛使用。本文讨论了海量数据(TB级)下Naïve Bayes算法的实现方法,并给出了Had...

朴素贝叶斯原理及实现

一、理论基础 (一)朴素贝叶斯定理 简单的说:一个样本属于某个类别的概率是:这个类别出现的概率 * 已知这个类别出现的情况下各个属性出现的概率的乘积 根据贝叶斯定理,事件X发生时,类别Ci发生的...

【机器学习实战-python3】决策树ID3

工具:PythonCharm 书中的代码是python2的,而我用的python3,结合实践过程,这里会标注实践时遇到的问题和针对python3的修改。 实践代码和训练测试数据可以参考这里 h...

异常(Outlier)检测算法综述

什么是异常(outlier)?Hawkins(1980)给出了异常的本质性的定义:异常是在数据集中与众不同的数据,使人怀疑这些数据并非随机偏差,而是产生于完全不同的机制。聚类算法对异常的定义:异常是聚...

【深度】从朴素贝叶斯到维特比算法:详解隐马尔科夫模型

详解隐马尔科夫模型  作者:David S. Batista 选自:机器之心 本文首先简要介绍朴素贝叶斯,再将其扩展到隐马尔科夫模型。我们不仅会讨论隐马尔科夫模型的基...

朴素贝叶斯算法源码

  • 2012年08月14日 17:20
  • 48KB
  • 下载

从朴素贝叶斯到维特比算法:详解隐马尔科夫模型

本文将从简要介绍朴素贝叶斯开始,再将其扩展到隐马尔科夫模型。我们不仅会讨论隐马尔科夫模型的基本原理,同时还会从朴素贝叶斯的角度讨论它们间的关系与局限性。 隐马尔科夫模型是用于标注问题的统...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:朴素贝叶斯算法详解
举报原因:
原因补充:

(最多只允许输入30个字)