引入
贝叶斯决策论是概率框架下实施决策的基本方法,它基于概率和误判误差的最小化来进行判别,是一种分类问题的解法。
原理
首先,将数据及其属性记为x,对于多分类任务,其可能的取值有N种,设为{ c1,c2,c3.....cN c 1 , c 2 , c 3 . . . . . c N },统称为c。数据x的正确分类记为 cx c x 。于是将算法的正确率记为:
若算法可以对x进行正确分类,则记误判误差为0。若错误分类,误差记为1.
于是,算法的总误差R可以表示为:
我们的目标是最小化 R(c|x) R ( c | x ) ,该目标可以转化为最大化P(c|x)。由逆概率公式可知:
成功利用逆概率公式将未知概率转化为我们已知的概率。
由逆概率公式知,判定x为类别i(记为 ci c i )的概率为,:
我们只需要求出x为任意类别的概率,若最大概率取在类别j处,便可以判定x为类别 cj c j 。
由于在计算P( ci c i |x)时,需要计算的量有三个:P( ci c i ),P(x| ci c i ),P(x)。
- 由于判别任务是对于所有数据而言的,所以P(x)的概率对于任何样本都是一样的,可以忽略不计。
- P(
ci
c
i
)代表类别
ci
c
i
在总体中所占的比例,可以利用
p(ci)=|Di||D| p ( c i ) = | D i | | D |计算得到,其中 Di D i 代表类别为 ci c i 的样本集合,D为总样本集合。
- 难点出现在计算P(x| ci c i )上面,该如何计算出现某一个类别 ci c i 中出现数据x的概率。
显然,由于x非常多,例如一个具有100个二值属性的x可以的取值有 2100 2 100 种,在训练集中不可能取得x的所有取值的样本,所以我们必须要估计P(x| ci c i )的值。
朴素贝叶斯
由于x实际上是由n个属性组成的,记为{ x1,x2......xn x 1 , x 2 . . . . . . x n }。朴素贝叶斯方法有一个重要假设:
对于已知的类别,假设其每个属性之间是独立的。
若假设成立,便可以有公式:
也就是说,有 ci c i 类别中每个属性出现的概率即可求得整体的概率。
离散属性任务
对于离散属性的任务而言,可以直接用频率代替概率,即:
由此整个预测所需要的条件已满足。
连续属性任务
显然,不可能对连续属性任务套用公式 P(xj|ci)=|Dci,xj||Dci| P ( x j | c i ) = | D c i , x j | | D c i | ,因为 xj x j 可以取任何值,无法通过频率替代概率。
由此,我们应该先假定该属性具有某种确定的概率分布形式,在基于训练样本对概率分布的参数进行估计,这里的估计方法,常用最大似然法。
极大似然估计是建立在极大似然原理的基础上的一个统计方法,是概率论在统计学中的应用。极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。
以下通过一个例子说明极大似然法如何估计参数(该图来自于北大信科罗定生老师):
于是,我们可以利用极大似然法来估算出连续型属性所遵循的分布,就可以利用属性在某值的概率密度替代离散属性中的概率。
例如,我们假设某个连续属性 xj x j 遵循正态分布 N(μ,σ2) N ( μ , σ 2 ) ,对 ci c i 类别的所有样本的 xj x j 属性值进行最大似然估计,结果得到 μ=1,σ=1 μ = 1 , σ = 1 ,于是该属性遵循分布:
若某个样本x的属性 xj=1 x j = 1 ,便可以将该值带入上式算出概率密度。
由此整个预测所需要的条件已满足。
拉普拉斯修正
在离散属性任务中,由于是直接将频率当成概率,所以若一个属性未出现,则计算出的概率始终0,为了避免这种错误,可以使用拉普拉斯修正使之平滑:
其中N为类别个数, Nj N j 为第j个属性的可能取值的数目。
拉普拉斯修正实际上是假设了属性值和类别的均匀分布,但是当样本数目较大时,该影响会被消除。
半朴素贝叶斯
朴素贝叶斯的假设过于强势,在实际模型中有时并不满足,因为样本的很多属性可能存在关联关系,并不独立。例如一个病人有发烧,虚汗……等等多种症状,要判断他的病症类型,但是可能发烧会引起虚汗,这两个属性是相关的。
为了解决这个问题,科学家们又在朴素贝叶斯上引入了一些限制条件:允许一些属性之间拥有依赖关系,由此形成了半朴素贝叶斯。
根据不同模型允许存在的依赖关系的不同,有以下几种常用的半朴素贝叶斯模型。
上图中NB为朴素贝叶斯的依赖关系,可以看见该模型中不同属性 x1,x2,x3...... x 1 , x 2 , x 3 . . . . . . 相互独立。
SPODE模型
SPODE模型假设所有的属性都依赖一个父类属性——称为“超父”,在上图SPODE中,通过一些模型选择方法来来确定超父属性。
确定超父属性后,概率公式变为了:
其中 x父 x 父 即为超父属性。
AODE模型
AODE模型同样假设所有的属性都依赖一个“超父”属性。但是AODE模型尝试将每个元素作为超父属性,建立SPODE模型,然后从中筛选较好的属性。将这些所有较好的属性集成起来作为最终的模型。
概率公式为:
那么哪些属性被选中呢?要选择有足够数据支撑的数据,即:
其中m为确认的阈值。
TAN模型
TAN模型也是假设每个属性只依赖一个属性,但是并不是统一的超父。相反,TAN将N个属性看成一个无向完全图,然后设定每条边的权重为两条边的相关性,计算公式如下:
观察该式可知:
- 若 xi,xj x i , x j 无关,即 P(xi,xj|c)=P(xi|c)∗P(xj|c) P ( x i , x j | c ) = P ( x i | c ) ∗ P ( x j | c ) ,则该式值为0
- 若 xi,xj x i , x j 相关,则 P(xi,xj|c)>P(xi|c)∗P(xj|c) P ( x i , x j | c ) > P ( x i | c ) ∗ P ( x j | c ) ,则该式为正值。
建立无向完全图之后,通过最大生成树算法,挑选根变量,并将边设置为有向。
建立依赖图之后,就可以和AODE中一样计算概率,只不过每个属性有自己独特的父类而已,其余皆相同。
以上三个模型中 P(xj|ci,x父),P(ci,xj) P ( x j | c i , x 父 ) , P ( c i , x j ) 也可以通过将频率看做概率的方法计算得到:
查看更多
所有的文章都会在我的博客和我的知乎专栏同步进行更新,欢迎阅读