引入

贝叶斯决策论是概率框架下实施决策的基本方法,它基于概率和误判误差的最小化来进行判别,是一种分类问题的解法。

朴素和半朴素贝叶斯

原理

首先,将数据及其属性记为x,对于多分类任务,其可能的取值有N种,设为{c1,c2,c3.....cN},统称为c。数据x的正确分类记为cx。于是将算法的正确率记为:

Ptrue=P(cx|x)=P(c|x)

若算法可以对x进行正确分类,则记误判误差为0。若错误分类,误差记为1.

于是,算法的总误差R可以表示为:

R(c|x)=1P(c|x)

我们的目标是最小化R(c|x),该目标可以转化为最大化P(c|x)。由逆概率公式可知:

P(c|x)=P(c)P(x|c)P(x)

成功利用逆概率公式将未知概率转化为我们已知的概率。

由逆概率公式知,判定x为类别i(记为ci)的概率为,:

P(ci|x)=P(ci)P(x|ci)P(x)

我们只需要求出x为任意类别的概率,若最大概率取在类别j处,便可以判定x为类别cj

由于在计算P(ci|x)时,需要计算的量有三个:P(ci),P(x|ci),P(x)。

  1. 由于判别任务是对于所有数据而言的,所以P(x)的概率对于任何样本都是一样的,可以忽略不计
  2. P(ci)代表类别ci在总体中所占的比例,可以利用
    p(ci)=|Di||D|
    计算得到,其中Di代表类别为ci的样本集合,D为总样本集合。
  3. 难点出现在计算P(x|ci)上面,该如何计算出现某一个类别ci中出现数据x的概率。

显然,由于x非常多,例如一个具有100个二值属性的x可以的取值有2100种,在训练集中不可能取得x的所有取值的样本,所以我们必须要估计P(x|ci)的值。

朴素贝叶斯

由于x实际上是由n个属性组成的,记为{x1,x2......xn}。朴素贝叶斯方法有一个重要假设:

对于已知的类别,假设其每个属性之间是独立的。

若假设成立,便可以有公式:

P(x|ci)=j=1nP(xj|ci)

也就是说,有ci类别中每个属性出现的概率即可求得整体的概率。

离散属性任务

对于离散属性的任务而言,可以直接用频率代替概率,即:

P(xj|ci)=|Dci,xj||Dci|

由此整个预测所需要的条件已满足。

连续属性任务

显然,不可能对连续属性任务套用公式P(xj|ci)=|Dci,xj||Dci|,因为xj可以取任何值,无法通过频率替代概率。

由此,我们应该先假定该属性具有某种确定的概率分布形式,在基于训练样本对概率分布的参数进行估计,这里的估计方法,常用最大似然法

极大似然估计是建立在极大似然原理的基础上的一个统计方法,是概率论在统计学中的应用。极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。

以下通过一个例子说明极大似然法如何估计参数(该图来自于北大信科罗定生老师):

朴素和半朴素贝叶斯

于是,我们可以利用极大似然法来估算出连续型属性所遵循的分布,就可以利用属性在某值的概率密度替代离散属性中的概率

例如,我们假设某个连续属性xj遵循正态分布N(μ,σ2),对ci类别的所有样本的xj属性值进行最大似然估计,结果得到μ=1,σ=1,于是该属性遵循分布:

xjN(1,1)=12πe((x1)22)

若某个样本x的属性xj=1,便可以将该值带入上式算出概率密度。

由此整个预测所需要的条件已满足。

拉普拉斯修正

在离散属性任务中,由于是直接将频率当成概率,所以若一个属性未出现,则计算出的概率始终0,为了避免这种错误,可以使用拉普拉斯修正使之平滑:

p(ci)=|Di||D|p(ci)=|Di|+1|D|+N

P(xj|ci)=|Dci,xj||Dci|P(xj|ci)=|Dci,xj|+1|Dci|+Nj

其中N为类别个数,Nj为第j个属性的可能取值的数目。

拉普拉斯修正实际上是假设了属性值和类别的均匀分布,但是当样本数目较大时,该影响会被消除。

半朴素贝叶斯

朴素贝叶斯的假设过于强势,在实际模型中有时并不满足,因为样本的很多属性可能存在关联关系,并不独立。例如一个病人有发烧,虚汗……等等多种症状,要判断他的病症类型,但是可能发烧会引起虚汗,这两个属性是相关的。

为了解决这个问题,科学家们又在朴素贝叶斯上引入了一些限制条件:允许一些属性之间拥有依赖关系,由此形成了半朴素贝叶斯。

根据不同模型允许存在的依赖关系的不同,有以下几种常用的半朴素贝叶斯模型。

朴素和半朴素贝叶斯

上图中NB为朴素贝叶斯的依赖关系,可以看见该模型中不同属性x1,x2,x3......相互独立。

SPODE模型

SPODE模型假设所有的属性都依赖一个父类属性——称为“超父”,在上图SPODE中,通过一些模型选择方法来来确定超父属性。

确定超父属性后,概率公式变为了:

P(ci|x)P(ci)j=1nP(xj|ci,x)

其中x即为超父属性。

AODE模型

AODE模型同样假设所有的属性都依赖一个“超父”属性。但是AODE模型尝试将每个元素作为超父属性,建立SPODE模型,然后从中筛选较好的属性。将这些所有较好的属性集成起来作为最终的模型。

概率公式为:

P(ci|x)xjP(c,xj)j=1nP(xi|ci,xj)

那么哪些属性被选中呢?要选择有足够数据支撑的数据,即:

|Dxj|>=m

其中m为确认的阈值。

TAN模型

TAN模型也是假设每个属性只依赖一个属性,但是并不是统一的超父。相反,TAN将N个属性看成一个无向完全图,然后设定每条边的权重为两条边的相关性,计算公式如下:

I(xi,xj|y)=cP(xi,xj|c)logP(xi,xj|c)P(xi|c)P(xj|c)

观察该式可知:

  • xi,xj无关,即P(xi,xj|c)=P(xi|c)P(xj|c),则该式值为0
  • xi,xj相关,则P(xi,xj|c)>P(xi|c)P(xj|c),则该式为正值。

建立无向完全图之后,通过最大生成树算法,挑选根变量,并将边设置为有向。

建立依赖图之后,就可以和AODE中一样计算概率,只不过每个属性有自己独特的父类而已,其余皆相同。

以上三个模型中P(xj|ci,x)P(ci,xj)也可以通过将频率看做概率的方法计算得到:

P(ci,xj)=Dci,cj+1|D|+NNi

P(xj|ci,x)=|Dci,xj,x|+1|Dci,x|+Nj

查看更多

所有的文章都会在我的博客和我的知乎专栏同步进行更新,欢迎阅读

相关文章:

猜你喜欢
  • 2021-04-11
  • 2021-12-01
相关资源
相似解决方案