朴素贝叶斯算法(Naive Bayes)是机器学习中常见的基本算法之一,主要用来做分类任务的。它是基于贝叶斯定理与条件独立性假设的分类方法。对于给定的训练数据集,首先基于特征条件独立性假设学习输入/输出的联合概率分布,然后基于此模型,对于给定的输入 x 利用贝叶斯定理求出后验概率最大的输出 y 。
基于以上的解释,我们知道:1. 该算法的理论核心是贝叶斯定理;2. 它是基于条件独立性假设这个强假设之下的,这也是该算法为什么称为“朴素”的原因。
本文将从以下几个角度去详细解释朴素贝叶斯算法:
朴素贝叶斯算法的数学原理;
朴素贝叶斯算法的参数估计;
拉普拉斯平滑;
介绍完了基本概念之后,我们就应该详细地介绍算法的原理。由于该算法的基本思想是基于朴素贝叶斯定理的,所以本节首先介绍一下朴素贝叶斯算法背后的数学原理。
根据贝叶斯定理,对一个分类问题,给定样本特征 x ,样本属于类别 y 的概率是
公式中的 x 是特征向量的维度,假设为 d。因此,有:
由于条件概率分布有指数及数量的参数,因此,求解该问题是一个NP难问题,实现中很难解决,所以直接求解不可行。因此,朴素贝叶斯法对条件概率分布做了条件独立性的假设,于是有:
将(3)带入(2)得:
这是朴素贝叶斯法分类的基本公式。因此,朴素贝叶斯分类器可以表示为:
由于所有的P(x)的分布是一样的,所以:
由上述的推导可知,朴素贝叶斯分类是将实例分到后验概率最大的类中。这等价于期望风险最小化。这就是朴素贝叶斯法所采用的原理。
由(6)可知,朴素贝叶斯法的学习过程主要是估计 P(y=ck) 以及 P(xj|y=ck) 。
到这里好像方法已经介绍完了,实则有一个小问题需要注意,在公式中,如果从样本中算出的概率值为0该怎么办呢?下面介绍一种简单方法,给学习步骤中的两个概率计算公式,分子和分母都分别加上一个常数,就可以避免这个问题。更新过后的公式如下:
未完待续。。。
对机器学习,人工智能感兴趣的小伙伴可以加我微信:JeemyJohn,我拉你进我的机器学习群(群里很多高手哦!),或者扫描二维码!当然你也可以关注我的公众号,点击链接:燕哥带你学算法公众号团队简介