当前位置:首页 > 算法 > 正文

手把手解析朴素贝叶斯算法在真实世界中的分类应用实例

  • 算法
  • 2024-10-24 14:09:18
  • 9194

⒈朴素贝叶斯算法中拉普拉斯平滑的证明

    朴素贝叶斯算法中的拉普拉斯平滑,是为了缓解先验概率为零的情况。 在贝叶斯估计中,使用狄利克雷分布作为先验分布,来估计多项分布中的参数值,即可得到拉普拉斯平滑。 证明如下:
    引入狄利克雷分布的定义,若随机向量符合狄利克雷分布,即 ,其中 ,设,则  的概率密度函数为:
  下面计算随机向量  的分量  的期望。 我们通过计算  来代替,这仍然不失一般性。  的概率密度函数为:
 的期望为:
故,
    引入多项分布的定义,若随机向量满足多项分布,即  ,其中 ,则  的分布律为:
    在多项分布参数的贝叶斯估计中,使用狄利克雷分布作为先验分布。 设 为狄利克雷分布的概率密度函数, 为多项分布的分布律,则后验分布为:
    由于多项分布的后验分布也是狄利克雷分布,故狄利克雷分布是多项分布的共轭分布。 由此可得多项分布参数  的贝叶斯估计值为:
    设  为数据集中的样本, 为样本特征向量, 为分类变量。   为数据集样本数, 为分类个数, 表示第 个分类, 表示数据集中第  个分类的样本数。 现在要根据数据集来估计分类的先验概率。
    由于 ,所以这是一个多项分布的参数估计问题。 使用上面已经证明的多项分布参数的贝叶斯估计,并设 ,则:
    根据数据集估计特定分类下特征值的先验概率,其实就是在该分类的子数据集中进行多项分布的参数估计。 按照上面相同的方法,设  为特征个数,  为第  个特征包含的值个数, 为第 个特征的第 个值, 为第 个分类的数据集中第 个特征取第  个值的样本数,则:
    这就证明了朴素贝叶斯算法中的拉普拉斯平滑。

⒉朴素贝叶斯

        在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。 对于大多数的分类算法,比如决策树,KNN,逻辑回归,支向量机等,他们都是判别方法,但是朴素贝叶斯却是生成方法。
如何理解这句话,看例题:
        根据上述数据集,如果一对男朋友,男生想生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下生是嫁还是不嫁?
这里我们联系到朴素贝叶斯公式:
p(不帅、性格不好、身高矮、不上进|嫁)=p(不帅|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上进|嫁)---------->要使这个公式成立,需要各个特征之间相互独立。
而朴素贝叶斯算法就是假设各个特征之间相互独立。
1、假如没有这个假设,那么我们对右边这些概率的估计其实是不可做的,这么说,我们这个例子有4个特征,其中帅包括{帅,不帅},性格包括{不好,好,爆好},身高包括{高,矮,中},上进包括{不上进,上进},那么四个特征的联合概率分布总共是4维空间,总个数为2*3*3*2=36个。 36个,计算机扫描统计还可以,但是现实生活中,往往有非常多的特征,每一个特征的取值也是非常之多,那么通过统计来估计后面概率的值,变得几乎不可做,这也是为什么需要假设特征之间独立的原因。
2、假如我们没有假设特征之间相互独立,那么我们统计的时候,就需要在整个特征空间中去找,比如统计p(不帅、性格不好、身高矮、不上进|嫁)。 我们就需要在嫁的条件下,去找四种特征全满足分别是不帅,性格不好,身高矮,不上进的的个数,这样的话,由于数据的稀疏性,很容易统计到0的情况。 这样是不合适的。
        根据上面俩个原因,朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。
所以公式整理以后变为:
整理训练数据中,嫁的样本数如下:
分别计算各个概率:
p(嫁)=6/12(总样本数)=1/2
p(不帅|嫁)=3/6=1/2
p(性格不好|嫁)=1/6
p(矮|嫁)=1/6
p(不上进|嫁)=1/6
总样本为:
p(不帅)=4/12=1/3
p(性格不好)=4/12=1/3
p(身高矮)=7/12
p(不上进)=4/12=1/3
将以上概率带入公式,就能得出嫁的概率。
总结:理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。 但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
而在属性相关性较小时,朴素贝叶斯性能最为良好。

⒊朴素贝叶斯分类器原理

朴素贝叶斯分类器,实际上也是对们常识做的一个算法的完善。 其以一种更为精准的量化来判断分类,使用的方法是后验概率。 本文从与决策树的比较出发,介绍先验概率和后验概率的关系,再详细介绍一下朴素贝叶斯算法的流程。

朴素贝叶斯算法比较简单,所以此文多是留以面试前复习之用。 理清各个问题之间的关系是重点。

与决策树的比较

我们在学习完经典的决策树算法之后,可以有这样一个认识:决策树的特点是它总是在沿着特征做切分。 随着层层递进,这个划分会越来越细。 大体上就像这样:

对于决策树不是很了解的朋友们可以看我这篇文章《经典决策树算法》

我今天在此基础上,在介绍一种在概率框架下实施决策的基本方法。 同样的,这也很符合我们类的经验思维。 这就是贝叶斯分类器。 相比于决策树,其分类示意如下:

此处的的蓝色与红色交织,就代表着概率的大小。 贝叶斯分类器的名字很高大上,其实背后的原理非常简单。 就是根据概率来选择我们要将某一个个体分在哪一类中。

我们可以这样去理解贝叶斯分类器。 西瓜藤新鲜的瓜甜的概率为0.7,若只看瓜藤,我们就将瓜藤新鲜的瓜判定为甜瓜。 我们引入西瓜纹理这一个第二个特征,假设纹理整齐的瓜甜的概率为0.8。 则这时候我们要算出瓜藤新鲜且纹理整齐的瓜甜的概率,比如为0.9(为什么要大于前两个概率大家可以思考一下),这样我们看到纹理和瓜藤这两个特征的时候就可以有概率的判断瓜是否甜了。

这里我们可以类比一下分类决策树。 对于决策树不是很了解的朋友们可以看我这篇文章《经典决策树算法》相比于决策树将瓜藤新鲜的瓜甜的概率直接转化成瓜藤新鲜我们就判断成瓜甜,我们的贝叶斯更是有了一种概率性的容错性,使得结果更加准确可靠一点。 但是贝叶斯分类器对数据有着比决策树更高的要求,其需要一个比较容易解释,而且不同维度之间相关性较小的模型。 这个我们在之后会细细提及。

先验概率与后验概率

我们来看贝叶斯公式:

可见,先验概率,后验概率和似然概率关系密切的很。 值得注意的是,A和B的顺序和这个先验后验是有关系的。 A和B反了,先验与后验也需要反过来。 举个例子来说:桌子上如果有一块肉和一瓶醋,你如果吃了一块肉,然后你觉得是酸的,那你觉得肉里加了醋的概率有多大?

对于这个问题,在吃起来是酸的条件下肉里面放了醋的概率,便是后验概率。 肉加了醋的前提下吃起来是酸的概率便是似然概率,肉里面加了醋的概率和吃起来是酸的概率便是先验概率。

我们可以总结一下,A事件是导致的结果,B事件是导致的原因之一。 这里我们吃到肉是酸的,则是各种原因的结果,而肉里面放了醋则是导致这个A结果的诸多原因之一。 为什么说是之一呢,因为除了放了醋,也有可能是肉变质了等等。

朴素贝叶斯分类算法

先通过一个经典例子来解释朴素贝叶斯分类的算法。 由如下表格中的数据学习一个朴素贝叶斯的分类器并确定的w类标记,表格中,为特征,取值的集合分别为,,为类标记,

此时我们对于给定的可以如下计算:

可见时候后验概率更大一些。 所以

通过以上例子,我们会朴素贝叶斯的方法其实就是一种常规做法,拉普拉斯曾经说过,概率论就是将们的常识使用数学公式表达。 接下来我们来看看最完整的朴素贝叶斯分类算法的数学表达。

⒋贝叶斯相关算法面经(desperated)

朴素贝叶斯与逻辑回归在机器学习中有不同的应用和特点。 朴素贝叶斯是生成模型,它通过学习先验概率P(Y)和条件概率P(X|Y),利用贝叶斯定理计算P(Y|X),假设特征之间在给定类别下独立。 而逻辑回归是判别模型,通过最大化对数似然函数直接求解P(Y|X),对特征间的独立性要求不那么严格。 朴素贝叶斯在数据稀缺时表现良好,适合小规模数据和多分类任务,但对数据形式敏感,且独立性假设可能不成立。
朴素贝叶斯的"朴素"源自对条件概率的计算,它假设特征之间在给定类别时独立,如公式所示。 在估计中可能出现概率为0的情况,这时通过拉普拉斯平滑(λ=1的拉普拉斯)处理,避免决策时出现全部乘积为0的问题。
朴素贝叶斯的优点包括在小数据集上的表现、多分类任务的适用性以及增量式训练能力。 缺点主要在于对数据形式的敏感性以及独立性假设的现实可行性。 与之相关的,贝叶斯线性回归与贝叶斯逻辑回归是对回归任务的扩展,最大后验证、最大似然估计和贝叶斯思想则是不同的参数估计方法。
最后,贝叶斯网络是概率模型,用于建模变量间的条件依赖关系,而贝叶斯优化则是利用贝叶斯方法进行参数优化,两者都是贝叶斯方法在不同场景的应用。