朴素贝叶斯分类——大道至简

分类问题

已知m个样本 《朴素贝叶斯分类——大道至简》,x是特征变量,y是对应的类别。
要求一个模型函数h,对于新的样本 《朴素贝叶斯分类——大道至简》,能够尽量准确的预测出 《朴素贝叶斯分类——大道至简》

概率角度

很多机器学习算法从误差角度来构建模型函数h,也就是先假设一个h,然后定义一个h(x)与y的误差,通过逐步减少h(x)与y的误差来获得一个拟合的模型h。

现在我们从概率的角度来考虑一下。
假设y有m个类别,即 《朴素贝叶斯分类——大道至简》
对于样本 《朴素贝叶斯分类——大道至简》,如果能计算出每个类别的条件概率 《朴素贝叶斯分类——大道至简》,那么可以认为概率最大的那个类别就是 《朴素贝叶斯分类——大道至简》 所属的类别。(关于条件概率和贝叶斯定理请参考 理解贝叶斯定理)。即
《朴素贝叶斯分类——大道至简》

朴素贝叶斯分类器

已知m个样本 《朴素贝叶斯分类——大道至简》
x是n维特征变量,即 《朴素贝叶斯分类——大道至简》
y是对应的类别,设有K个类别,即 《朴素贝叶斯分类——大道至简》

对任一给定的x,我们需要分别计算出x属于各分类的概率 《朴素贝叶斯分类——大道至简》,其中有最大值的《朴素贝叶斯分类——大道至简》,x即属于该分类《朴素贝叶斯分类——大道至简》,即样本x属于分类
《朴素贝叶斯分类——大道至简》

现在需要计算 《朴素贝叶斯分类——大道至简》,应用贝叶斯定理:
《朴素贝叶斯分类——大道至简》

这里 《朴素贝叶斯分类——大道至简》 是一个条件联合概率,意思是在分类 《朴素贝叶斯分类——大道至简》 中,特征 《朴素贝叶斯分类——大道至简》 取一组特定值(也就是需要预测的样本x的各特征的值)的概率。这个概率不容易计算,为了方便,于是朴素贝叶斯(Naive Bayes) 隆重登场。在这里朴素的意思是,假定 x 的各特征 《朴素贝叶斯分类——大道至简》 是条件独立的。(参考维基百科 – 条件独立)。因此
《朴素贝叶斯分类——大道至简》
这个转换其实就是 独立变量的联合分布 = 各变量先验分布的乘积(参考 维基百科 – 联合分布),只不过这里是条件概率,但是因为变换前后都有同样的条件 《朴素贝叶斯分类——大道至简》,从样本空间 《朴素贝叶斯分类——大道至简》 的角度看,其实就是联合分布转换成先验分布的乘积。(对样本空间的理解请参考 理解贝叶斯定理)。

将(5)带回(4)得
《朴素贝叶斯分类——大道至简》

对任一给定的样本x的值是确定的,且x不依赖于C,所以P(x)可以看作常量。所以可以忽略 《朴素贝叶斯分类——大道至简》
《朴素贝叶斯分类——大道至简》
这就是朴素贝叶斯分类的模型函数。

参数估计

上述公式中主要有两项,分别考察一下如何计算。

参数1:《朴素贝叶斯分类——大道至简》

上式中 《朴素贝叶斯分类——大道至简》 比较容易计算,用频率来估算概率,统计m个样本中属于 《朴素贝叶斯分类——大道至简》 的样本的频率即可。设m个样本中有 《朴素贝叶斯分类——大道至简》 个样本的类别是 《朴素贝叶斯分类——大道至简》,则
《朴素贝叶斯分类——大道至简》

参数2:《朴素贝叶斯分类——大道至简》

《朴素贝叶斯分类——大道至简》的计算需要事先假设样本特征《朴素贝叶斯分类——大道至简》的数据分布情况。对特征分布的假设,我们称之为事件模型,通常会采用以下三种假设。

  1. 多项式分布
    如果特征《朴素贝叶斯分类——大道至简》是离散值,可以假设它符合 多项式分布。可以统计《朴素贝叶斯分类——大道至简》的某个特征在样本中的频率来估算其概率。
    假设 特征《朴素贝叶斯分类——大道至简》《朴素贝叶斯分类——大道至简》 个可能的取值(比如天气有阴、晴、雨三种状态,则 《朴素贝叶斯分类——大道至简》),并且在n个样本中,类别为 《朴素贝叶斯分类——大道至简》、特征 《朴素贝叶斯分类——大道至简》 取值为 s 的样本有 《朴素贝叶斯分类——大道至简》 个。则

《朴素贝叶斯分类——大道至简》
有时候样本中某个特征的特定取值的样本数 《朴素贝叶斯分类——大道至简》,这将导致整个 《朴素贝叶斯分类——大道至简》,严重扭曲了该特征的概率值。因此,通常可以采用拉普拉斯平滑来避免这种情况发生。即
《朴素贝叶斯分类——大道至简》
通常取 《朴素贝叶斯分类——大道至简》
将(8)和(10)带入贝叶斯分类器(7),得到

《朴素贝叶斯分类——大道至简》

用一个粗略的示意图来理解一下特征为离散值时,条件概率《朴素贝叶斯分类——大道至简》如何根据样本集来进行估算:

《朴素贝叶斯分类——大道至简》 特征为离散值

图中表示整个样本空间,有两个类别
《朴素贝叶斯分类——大道至简》 ,每个样本有两个特征
《朴素贝叶斯分类——大道至简》 ,其中
《朴素贝叶斯分类——大道至简》 有3个可取的离散值
《朴素贝叶斯分类——大道至简》
《朴素贝叶斯分类——大道至简》 有4个可取的离散值
《朴素贝叶斯分类——大道至简》 。图中橙色部分就是
《朴素贝叶斯分类——大道至简》 ,即 类别=
《朴素贝叶斯分类——大道至简》 ,特征=
《朴素贝叶斯分类——大道至简》 ,特征值=
《朴素贝叶斯分类——大道至简》 时(k=1,j=1,s=1)的样本数,蓝色部分就是
《朴素贝叶斯分类——大道至简》 ,即 类别=
《朴素贝叶斯分类——大道至简》 ,特征=
《朴素贝叶斯分类——大道至简》 ,特征值=
《朴素贝叶斯分类——大道至简》 时(k=1,j=2,s=3)的样本数。整个灰色部分是
《朴素贝叶斯分类——大道至简》 ,即类别为
《朴素贝叶斯分类——大道至简》 的样本数。

举例:根据天气情况决定是否打网球
本案例来自 朴素贝叶斯分类器

《朴素贝叶斯分类——大道至简》 打网球样本

上面表格是某同学在不同天气情况下的打网球决策数据。
假设今天天气状况是:Outlook=sunny, Temperature=cool,Humidity=high,Wind=strong,该同学是否会去打网球呢?
这里的几个特征,天气、温度、湿度、风速都是离散型变量,适合采用上面的多项式贝叶斯分类方法。将上面的公式写在这里便于查看。
《朴素贝叶斯分类——大道至简》

我们需要计算 《朴素贝叶斯分类——大道至简》 两种情况下,《朴素贝叶斯分类——大道至简》 的估算概率。
统计上表中各种情况下的样本数量可知:
总样本数 m=14

打球(k=yes)的样本数 《朴素贝叶斯分类——大道至简》 = 9
不打球(k=no)的样本数 《朴素贝叶斯分类——大道至简》 = 5

天气的取值 《朴素贝叶斯分类——大道至简》(Sunny/Overcast/Rain)
晴天打球(k=yes,j=Outlook,s=sunny)的样本数 《朴素贝叶斯分类——大道至简》
晴天不打球(k=no,j=Outlook,s=sunny)的样本数 《朴素贝叶斯分类——大道至简》

温度的取值 《朴素贝叶斯分类——大道至简》(Hot/Mild/Cool)
冷天打球(k=yes,j=Temperature,s=cool)的样本数 《朴素贝叶斯分类——大道至简》
冷天不打球(k=no,j=Temperature,s=cool)的样本数 《朴素贝叶斯分类——大道至简》

湿度的取值 《朴素贝叶斯分类——大道至简》(High/Normal)
潮湿天打球(k=yes,j=Humidity,s=high)的样本数 《朴素贝叶斯分类——大道至简》
潮湿天不打球(k=no,j=Humidity,s=high)的样本数 《朴素贝叶斯分类——大道至简》

风力的取值 《朴素贝叶斯分类——大道至简》(Strong/Weak)
大风天打球(k=yes,j=Wind,s=strong)的样本数 《朴素贝叶斯分类——大道至简》
大风天不打球(k=no,j=Wind,s=strong)的样本数 《朴素贝叶斯分类——大道至简》

将上述数据代入公式(11),对于样本 《朴素贝叶斯分类——大道至简》 ,打球(k=yes)的概率
《朴素贝叶斯分类——大道至简》
不打球(k=nos)的概率
《朴素贝叶斯分类——大道至简》

这里 0.01822 > 0.007084,所以该同学可能不会去打球。经过归一化,
不打球的概率 = 0.01822 / (0.01822 + 0.007084) = 72%
(注:这里计算结果与原案例中的数值不同,因为这里有做拉普拉斯平滑,原案例中没有。本案例中其实没有出现特定特征的样本数为0的情况,可以不用做拉普拉斯平滑,不过这里是按照公式写下来的,就按公式计算了)

  1. 伯努利分布
    如果特征《朴素贝叶斯分类——大道至简》是稀疏二项离散值,可以假设它符合 伯努利分布。上面打网球的案例中,湿度取值是 {high,normal},风力取值是 {strong,weak},这两个特征都是二项离散值。
    伯努利分布只有两种可能的取值,我们将其编码为 {0,1},则
    《朴素贝叶斯分类——大道至简》

另外注意到伯努利分布其实是多项式分布的特例,所以我们可以用上面公式(12)计算,也可以用之前多项式分布公式(11)计算。

垃圾邮件分类等涉及文本的任务中可以采用伯努利分布,比如构造一个5000个不同单词的向量作为输入特征x,对于一段文本,其中有出现的单词,在x中对应单词的位置设为1,其它位置为0,这样x中的每个特征(单词)的取值为1或0,符合伯努利分布。

  1. 高斯分布
    如果特征《朴素贝叶斯分类——大道至简》是连续变量,可以假设它符合 高斯分布(正态分布)。准确点说,是假设每个类别 《朴素贝叶斯分类——大道至简》 下的 《朴素贝叶斯分类——大道至简》 符合高斯分布。这样,我们可以通过高斯分布的概率密度函数来计算样本中 《朴素贝叶斯分类——大道至简》 某个特定值的条件概率 《朴素贝叶斯分类——大道至简》。高斯分布的概率密度函数为:
    《朴素贝叶斯分类——大道至简》
    其中 《朴素贝叶斯分类——大道至简》 是均值,《朴素贝叶斯分类——大道至简》是方差。
    假设在类别 《朴素贝叶斯分类——大道至简》 中,特征 《朴素贝叶斯分类——大道至简》 的均值为 《朴素贝叶斯分类——大道至简》,方差为 《朴素贝叶斯分类——大道至简》(这两项可以通过样本数据统计出来)。则
    《朴素贝叶斯分类——大道至简》

案例请参考 维基百科 – 案例 – 性别分类

处理连续数值问题的另一种常用的技术是通过离散化连续数值的方法。通常,当训练样本数量较少或者是精确的分布已知时,通过概率分布的方法是一种更好的选择。
而在大量样本的情形下离散化的方法表现更优,因为大量的样本可以学习到数据的实际分布,而不用“朴素”的假设其分布。典型情况下很多任务都会提供大量的样本,所以这时选择离散化方法会比概率分布估计的方法更好。

题外话

顺便说一句,每次看到朴素这个词,我就仿佛看到贝叶斯穿着一身打满补丁衣服的样子。而naive意思是缺乏经验的;幼稚的;无知的;轻信的。从公式推导过程来看,朴素贝叶斯分类器采用了一些简化条件的假设,比如假设 x 的各特征 《朴素贝叶斯分类——大道至简》 是条件独立的,假设样本特征数据符合多项式分布、伯努利分布、高斯分布等,这些假设都可能不完全符合实际情况,因为对险恶的现实世界的无知从而采用了一些天真的假设。
不过,朴素还有一层含义是专一、纯粹,在这个意义上,贝叶斯分类也算大道至简,大智若愚了。

优缺点

朴素贝叶斯的主要优点有:

1)算法简单,有稳定的分类效率。
2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。
3)对缺失数据不太敏感。

朴素贝叶斯的主要缺点有:   
1)“朴素”的假设如果与实际情况不符,会影响模型效果。
2)输入特征数据的表现形式,比如是连续特征,离散特征还是二元特征,会影响概率计算和模型的分类效果。

参考

朴素贝叶斯算法原理小结
朴素贝叶斯分类器
维基百科 – Naive Bayes classifier
理解贝叶斯定理

    原文作者:X猪
    原文地址: https://www.jianshu.com/p/96c334191852
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞