1. 有了之前的SVM、决策树和集成学习的背景之后,我们来说贝叶斯分类器。贝叶斯分类器根据**样本属性之间的联系是否独立**分为**朴素贝叶斯**和**半朴素贝叶斯**,朴素贝叶斯假设样本的每个属性都是独立的,不相互关联的;这种假设较强,而且在现实任务中很难成立,所以半朴素贝叶斯考虑属性之间的相互联系。<br /> 我们先来说一下比较简单的朴素贝叶斯分类器:

朴素贝叶斯分类器

对于一个样本贝叶斯分类器 - 图1,假设其有贝叶斯分类器 - 图2个属性,即贝叶斯分类器 - 图3,假设我们要判断它是不是属于类别贝叶斯分类器 - 图4,那根据小学二年级学过的贝叶斯定理,就可以得到在样本为贝叶斯分类器 - 图5的前提下,类别为贝叶斯分类器 - 图6的条件概率贝叶斯分类器 - 图7
贝叶斯分类器 - 图8
可以看下这个公式嗷,显然如果我们要计算贝叶斯分类器 - 图9属于每一个类别的概率的话,分母贝叶斯分类器 - 图10的值都是一样的,而其它的值都和要计算的类别有关,我们要判断贝叶斯分类器 - 图11到底属于哪个类,就是在每个类别上计算上述条件概率,选取概率值最大的那个类别作为样本贝叶斯分类器 - 图12的类别标记,且是不需要考虑贝叶斯分类器 - 图13的,即
贝叶斯分类器 - 图14
那么我们可以来说公式中的每个概率是如何计算的,假设训练样本集为贝叶斯分类器 - 图15,属于类别贝叶斯分类器 - 图16的样本集为贝叶斯分类器 - 图17,而属于类别贝叶斯分类器 - 图18且在第贝叶斯分类器 - 图19个属性取值为贝叶斯分类器 - 图20的样本集为贝叶斯分类器 - 图21,接下来就简单了,即:
贝叶斯分类器 - 图22
对于属性为连续值,可以考虑概率密度函数,假设其贝叶斯分类器 - 图23服从高斯分布,计算出其在贝叶斯分类器 - 图24类样本集上的均值贝叶斯分类器 - 图25和方差贝叶斯分类器 - 图26,则根据高斯分布的概率密度函数求出贝叶斯分类器 - 图27
值得注意的是,如果某个属性值在训练集中没有与某个类同时出现过,或者训练集中缺少某个类别,即贝叶斯分类器 - 图28贝叶斯分类器 - 图29的分母为0,则会导致连乘结果为0,会出现判断错误。因此为了防止这种情况的出现,我们对这两个概率做平滑处理,即:
贝叶斯分类器 - 图30
贝叶斯分类器 - 图31为类别总数。
因此贝叶斯分类器不需要训练过程,它只是在不断地计算一个先验概率表,然后对于新来的测试数据样本,根据样本属性去查表,然后计算它属于没个类别的后验概率,找到最大的概率对应的类别作为测试样本的类标签。

半朴素贝叶斯分类器

朴素贝叶斯分类器假设样本属性都是独立的互不影响的,所以计算相对容易,但这在实际任务中难以实现。半朴素贝叶斯分类器允许样本属性间存在关联,它有以下三种策略来让样本各属性联系起来:

  1. SPODE

SPODE的思想很简单,它假设所有的属性都依赖于同一个属性,被依赖的这个属性成为“超父”,然后通过交叉验证等模型选择方法来确定这个超父属性。

  1. TAN

将属性依赖约间为一棵树,约减步骤为:(1)计算任意两个属性之间的条件互信息;(2)以属性为节点构建一张完全图,将其边权重设置为其对应的条件互信息值(属性联系越紧密,互信息越大);(3)构建此图的最大带权生成树(和小学二年级学过的最小生成树计算一毛一样,边权重取负就可以啦),挑选根变量,将其设置为有向。然后属性关系图就构建完啦,就能清楚地看到属性之间的联系了。

  1. AODE

AODE思想是集成,它将每个属性都看作为超父来构建SPODE,然后将那些具有足够数据支撑训练的SPODE做集成:
贝叶斯分类器 - 图32
这边公式虽然比较多,但是和朴素贝叶斯的公式如出一辙啦,这里的贝叶斯分类器 - 图33是一个衡量样本数量的阈值,要求我们训练这个SPODE必须要到达的样本集大小。对于这贝叶斯分类器 - 图34个属性,把每个属性都看作为超父,然后就是计算在这个超父属性前提下的贝叶斯分类器 - 图35啦。概率计算还是和之前差不多,找到对应属性和类别的样本数除以对应总样本数,然后加平滑项。对于TAN的概率计算,只要有了属性的另一个相关属性都可以通过上面公式来计算得到对于的概率。

生活感悟

好像没啥可以感悟的,有了足够的经验,自然能对相似的新事物做出有效的判断,然而如果出现了意料之外的事情,往往判断不会那么有效。模型是这样的,但人似乎并不是,人的先验知识太丰富了,我们相当于一个强大的集成模型,对未知的事物有时候也能够做出相对准确的判断。因此我们需要不断的积累先验知识,并做到学以致用,以便在今后遇到未知时能够从容应对。