贝叶斯分类器(1)贝叶斯决策论概述、贝叶斯和频率、概率和似然

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贝叶斯分类器(1)贝叶斯决策论概述、贝叶斯和频率、概率和似然相关的知识,希望对你有一定的参考价值。

参考技术A

贝叶斯分类器,即是以贝叶斯决策理论为基础的分类器,什么是贝叶斯决策理论呢?

贝叶斯决策论是贝叶斯学派关于统计推断(根据已有资料或者说数据,对未知问题作出判断)的理论,要理解贝叶斯理论,就不得不和他的 “老对手”——频率学派(经典学派)一起聊。

首先我们看看统计推断的问题是什么。statistical inference 是学统计的目的,即根据样本数据,对总体进行统计推断(假设检验 或 预测).是指统计学中研究如何根据样本数据去推断总体数量特征的方法。统计推断主要可以分为两大类:一类是参数估计问题;另一类是假设检验问题。

关于这些问题,从20世纪上半页至今,频率学派和贝叶斯学派两大学派一直在辩论,也一直互相不服。贝叶斯学派的发展在二十世纪滞后于频率学派,所以我们在学校教材上学到的统计推断的方法基本上都是频率学派的,比如最大似然估计、卡方检验、T检验、矩估计等等。

两个学派争论的点是什么呢?

现在应该对贝叶斯学派的思想有了一点认识了。那我们看看在分类问题上贝叶斯分类器是怎么一回事呢?

贝叶斯分类器是一类分类算法的总称,贝叶斯定理是这类算法的核心,因此统称为贝叶斯分类。

在分类问题中,我们可以根据样本 计算出在样本中各个类别 出现的概率,即后验概率 ,根据之前对贝叶斯统计推断的介绍,还需要引入各种推断结果所带来的损失,我们定义 为将 误分为 时所产生的损失,根据误判出现的概率和导致的损失,可以计算出错误分类是产生的期望损失,称之为“风险”:

设想我们制定了一个判定准则 来对 进行分类得到 ,如果每个分类结果 都是风险最小的结果,那个总体的风险 也是最小的,这就是贝叶斯判定准则,称 为贝叶斯最优分类器。

贝叶斯最优分类器为:

后验概率最大化与风险最小化 :对于二分类问题,λ要么等于0要么等于1

当 ,即正确分类时, ,所以可以计算此时所以条件风险(该条件下的风险)为



就是根据样本 进行分类,想想以前讲过的KNN、LR等,所做的不就是这个工作吗,这种直接对 进行建模来预测 的方法,都叫做 判别式模型(Discriminative Model) ,判别式模型不考虑样本的产生模型,直接研究预测模型。如果我们换一种思路,先得到联合分布 ,再得到后验概率 ,这就是 生成式模型(Generative Model) ,顾名思义,生成式模型会研究样本的产生模型,判别式模型和生成式模型都是监督学习中的概念。

显然生成模型比判别模型包含更多的信息,可以做到更多的事,实际上由生成模型可以得到判别模型,但由判别模型得不到生成模型,贝叶斯分类器就是从生成模型的角度来解决分类问题,怎么实现呢?

是类“先验”(prior)概率; 是样本x相对于类标记c的类条件概率(class-conditional probability); 是用于归一化的“证据”(evidence)因子。

类先验概率 表达了样本空间中各类样本所占的比例,根据大数定律,当训练集包含充足的独立同分布样本时, 可通过各类样本出现的频率来进行估计 . 看起来是样本出现的概率,对给定样本 ,从形式上也可以看出 与样本的类标记无关 ,因此估计 的问题就转化为如何基于训练数据D来估计先验 和 的问题,所以问题的重点就是怎么求 ,得到 就能得到联合概率 ,也能能得到一个贝叶斯分类器了。那么怎么完成呢?能直接通过样本中的频率来统计吗?

对 来说,由于它涉及关于x 所有属性的联合概率,直接根据样本出现的频率来估计将会遇到严重的困难,例如,假设样本的 d 个属性都是二值的,则样本空间将有 种可能的取值,在现实应用中,这个值往往远大于训练样本数m,也就是说,很多样本取值在训练集中根本没有出现,直接使用频率来估计 显然不可行,因为"未被观测到"与"出现概率为零"通常是不同的。

那应该怎么计算呢?先说第一种方法: 最大似然估计

要求得类条件概率 ,如果我们什么信息都没有肯定是不行的,所以一般假设我们知道它的概率分布,然后用一定方法来求出分布的参数即可。对于求分布的参数,一般使用最大似然估计MLE,虽然MLE是频率学派的估计方法,不过好用的东西大家一起用嘛,贝叶斯学派有个差不多的估计方法:最大后验估计MAP,不过MAP比MLE多了个作为因子的先验概率P(θ),更复杂一些,这些内容咱们下回再讲。

说回最大似然估计,说到最大似然估计就不得不问一句,什么是似然?这里需要好好的说道说道,只有搞清楚似然的概念才能理解怎么计算它。

极大似然是频率学派的参数估计方法,似然即参数的似然,是由频率学派建立的、极大似然估计中的重要概念。从前文可知,频率学派认为参数是确定值,参数的似然就表达了给定样本 下某参数为这个确定值的可能性。在计算上,参数的似然值等于在该参数下事件发生的概率 。也就是说,似然值可以用概率来计算,但似然却不是概率,因为频率学派的体系下, 参数不是随机变量,故似然不是概率 ,概率是在确定参数的情况下,观测结果发生的可能性,概率的对象是概率空间中的事件,而似然的对象是参数。

因此,似然函数定义为:似然函数 是给定样本x时,关于参数θ的函数,其在数值上等于给定参数θ后变量X的概率

值得注意的是,因为 不是随机变量,所以各个 所对应的似然值是不能做累加的,我们都知道: ,这也是概率的一个基本性质,而似然是不满足这一点的, 并不为1,比如两个不均匀的硬币,正面的概率未知作为 ,给定 为观察到一次正面, 时 , 时 ,显然加和大于1,其实甚至可以说这样相加是没有意义的,因为 只是似然函数的自变量,并不是概率空间里的取值。这也从一方面说明似然是不满足概率定理(柯尔莫果洛夫公理)的三个条件的,似然并不是概率。

关于似然,知乎上还有一个很形象的例子,他山之石,可以借鉴一下, 如何理解似然函数?HiTao的回答

其中的核心观点是:似然和概率两个函数有着不同的名字,却源于同一个函数。 是一个有着两个变量的函数。 如果,你将θ设为常量,则你会得到一个概率函数(关于x的函数);如果,你将x设为常量你将得到似然函数(关于θ的函数)

举一个例子:
有一个硬币,它有 的概率会正面向上,有 的概率反面向上。现有正反序列: 。无论 的值是多少,这个序列的概率值为

比如,如果 ,则得到这个序列的概率值为0。如果 ,概率值为1/1024。
尝试所有 可取的值,画出了下图,即为似然函数的函数图像:

可以看出 时的似然值最大,即0.7是最可能是真值的参数值,这就是最大似然估计的思想了。

现在应该对似然有了一定的了解了,我们回忆一下贝叶斯分类器说到哪了,对:

我们的目标是用最大似然估计计算得到 ,得到联合分布,具体做法及MLE和MAP的区别下一篇再细说~



主要参考资料

《机器学习》周志华
如何理解似然函数?HiTao的回答

.

贝叶斯分类器(3)朴素贝叶斯分类器

参考技术A

根据 贝叶斯分类器(1)贝叶斯决策论概述、贝叶斯和频率、概率和似然 ,我们对贝叶斯分类器所要解决的问题、问题的求解方法做了概述,将贝叶斯分类问题转化成了求解 的问题,在上一篇 贝叶斯分类器(2)极大似然估计、MLE与MAP
中,我们分析了第一个求解方法:极大似然估计。在本篇中,我们来介绍一个更加简单的 求解方法,并在此基础上讲讲常用的一个贝叶斯分类器的实现:朴素贝叶斯分类器(Naive Bayes classifier)。

我们的目标是通过对样本的学习来得到一个分类器,以此来对未知数据进行分类,即求后验概率 。在 贝叶斯分类器(1)贝叶斯决策论概述、贝叶斯和频率、概率和似然 中,我们描述了贝叶斯分类器是以生成式模型的思路来处理这个问题的,如下面的公式所示,贝叶斯分类器通过求得联合概率 来计算 ,并将联合概率 转化成了计算类先验概率 、类条件概率 、证据因子 。

其中的难点是类条件概率 的计算,因为样本 本身就是其所有属性的联合概率,各种属性随意组合,变幻莫测,要计算其中某一种组合出现的概率真的是太难了,而朴素贝叶斯的出现就是为了解决这个问题的。

要想计算联合概率 ,我们肯定是希望事件 与事件 是相互独立的,可以简单粗暴的 ,多想对着流星许下心愿:让世界上复杂的联合概率都变成简单的连乘!

朴素贝叶斯实现了我们的梦想!朴素贝叶斯中的朴素就是对多属性的联合分布做了一个大胆的假设,即 的 个维度之间相互独立:

朴素贝叶斯通过这一假设大大简化了 的计算,当然,使用这个假设是有代价的,一般情况下,大量样本的特征之间独立这个条件是弱成立的,毕竟哲学上说联系是普遍的,所以我们使用朴素贝叶斯会降低一些准确性;如果实际问题中的事件的各个属性非常不独立的话,甚至是无法使用朴素贝叶斯的。总的来说,朴素贝叶斯大大简化了计算,同时牺牲了一些结果的准确性,具体要不要使用、怎么使用就看我们在实际问题中的权衡了。

在朴素贝叶斯的思想下再看回分类问题,事件 有 个属性,可将分类问题按下式转化:

只需要计算出上式不同类别 下的值,令值最大的类别 即为分类结果。

其中,根据大数定律, , 是类别 下的后验概率,其计算要取决于先验 ,这里需要分为 是离散或连续两种情况:

为样本中类别为 的频数, 为类别为 的样本中,第 个属性中 出现的频数。
不过有些出现的概率比较低的属性,在我们的样本中不一定会出现,即频数为0,如果不作处理的话会导致其 为0,会导致包含这个属性的样本永远都不会被分类到类别 ,而现实不一定是这样,因此我们需要对没出现的情况做平滑处理,比如常见的拉普拉斯平滑,给分子 的频数加上一个定值 ,而分母加上 ,表示为第 个属性中的每一种取值的频数都加定值 :

举例:垃圾邮件判断
朴素贝叶斯分类在垃圾邮件的判断上有不错的实践效果,这是一个二分类问题, ,假设 为垃圾邮件, 为正常邮件,统计出:

现在收到一封邮件包含一些关键词:【中奖,笔记本电脑,特朗普,大选,...】,根据大量的数据可以统计出这些词出现的频数,除以类别中所有词的总频数得到其出现的后验概率,在垃圾邮件中:

在正常邮件中:

可以计算得到:

时的值是 时值的26倍,所以判断此邮件是垃圾邮件。

我们判断西瓜好坏的问题也可以转化成离散型随机变量的分类问题,过程与上面类似。

比如垃圾邮件的例子,在多项式朴素贝叶斯中:

如果我们只关心“中奖”出现与否,不管词频,则在伯努利朴素贝叶斯中:

举例:性别判断
下面是一组人类身体特征的统计资料。

有人身高6英尺、体重130磅,脚掌8英寸,判断此人性别:

各属性为连续变量,假设男性和女性的身高、体重、脚掌都是正态分布,通过样本计算出均值和方差。男性的身高是均值5.855、方差0.035的正态分布。所以,例如男性的身高为6英尺的概率的相对值等于1.5789(密度函数的值,并不是概率,只用来反映各个值的相对可能性)。

分布确定后,就可以计算性别的分类了:

女性的概率比男性要高出将近10000倍,所以判断该人为女性。

在前文1.2.1小节中我们已经提过平滑处理,主要针对于那些在样本中没有出现过的词,它们的概率是0,导致在分类中完全没有存在感,所以要对这些进行平滑处理。

平滑处理的方法也有很多种,包括我们上面说过的拉普拉斯平滑,除此之外还有古德图灵平滑,线性插值法,回退法(K-Z回退)等,不过这些方法在自然语言处理中比较常用,我们暂时先不多介绍了,还是聚焦在朴素贝叶斯上,下面我们看看朴素贝叶斯在sklearn中的实现。

sklearn中有3种常用的不同类型的朴素贝叶斯:

1)高斯分布型朴素贝叶斯

Parameters
priors: array-like of shape (n_classes,)
类别的先验概率,如果指定,则不再根据数据计算调整
var_smoothing: float, default=1e-9
Portion of the largest variance of all features that is added to variances for calculation stability.(不是很明白)

2)多项式分布型朴素贝叶斯

Parameters
alpha: float, default=1.0
Additive (Laplace/Lidstone) smoothing parameter (0 for no smoothing).

fit_prior: bool, default=True
Whether to learn class prior probabilities or not. If false, a uniform prior will be used.

class_prior: array-like of shape (n_classes,), default=None
Prior probabilities of the classes. If specified the priors are not adjusted according to the data.

其常用函数与高斯型一样。

3)伯努利分布型朴素贝叶斯

Parameters
binarize: float or None, default=0.0
Threshold for binarizing (mapping to booleans) of sample features. If None, input is presumed to already consist of binary vectors.(用于设置二值化的阈值)

官方例子与多项式型的基本一样,而且也没有设置binarize,相当于默认使用binarize=0.0,根据源码 sklearn/preprocessing/_data.py
中的binarize(X, *, threshold=0.0, copy=True)函数可以发现,大于binarize的都赋值为1,其他为0。

优点

缺点

可见,朴素贝叶斯的缺点很大程度来来源于其假设太强,对于其假设符合程度较低的问题会损失较多的准确性,因此,如果我们能把假设弱化一下,是不是就能提高朴素贝叶斯的性能呢?在接下来的篇章中我们来继续探索。



主要参考资料

《机器学习》周志华
《统计学习方法》 李航
scikit-learn Naive Bayes文档

以上是关于贝叶斯分类器(1)贝叶斯决策论概述、贝叶斯和频率、概率和似然的主要内容,如果未能解决你的问题,请参考以下文章

贝叶斯分类器(2)极大似然估计、MLE与MAP

贝叶斯分类器理论基础

数据挖掘-贝叶斯分类器

贝叶斯分类器

最近邻、朴素贝叶斯和决策树分类器解决给定分类问题的效果如何?

执行朴素贝叶斯和决策树分类时出现 KeyError