半朴素贝叶斯分类器是什么?适度考虑特征依赖的贝叶斯分类
半朴素贝叶斯分类器(Semi-naive Bayes Classifiers)是一类对朴素贝叶斯分类器进行改进的方法。它的基本思想是:适当地放宽朴素贝叶斯中“所有特征相互独立”这个过于严格的假设,考虑一部分特征之间的依赖关系,但又不像完整的贝叶斯网络那样考虑所有的依赖关系,从而在计算的简便性和分类的准确性之间取得平衡。
两个极端之间的折中
朴素贝叶斯分类器假设:在已知类别的条件下,所有特征之间都是相互独立的。这个假设让计算变得非常简单,只需要分别统计每个特征在各个类别下的概率,再把它们相乘。但这个假设在现实中往往不成立,忽略特征之间的依赖关系可能会影响分类的准确性。
另一个极端是完全不做任何独立性假设,直接估计所有特征在各个类别下的联合概率。但这样需要估计的概率数量会随着特征数量的增加呈指数级增长。比如有 20 个只取两种值的特征,就有超过一百万种组合,绝大多数组合在训练数据中根本不会出现,无法可靠地估计它们的概率。
半朴素贝叶斯分类器在两者之间寻找一个折中:只考虑那些最重要的特征之间的依赖关系,既能比朴素贝叶斯更准确地描述数据,又不会让需要估计的概率数量多到无法处理。
独依赖估计:最常用的策略
半朴素贝叶斯分类器最常用的一种策略是“独依赖估计”:假设每个特征在类别之外,最多只依赖于另外一个特征,这个被依赖的特征叫作它的父特征。这样,每个特征的概率只需要在类别和父特征的条件下进行估计,需要估计的概率数量只是适度地增加。不同的方法在如何选择父特征上有所不同:SPODE(超父独依赖估计)让所有的特征都依赖于同一个特征,这个特征叫作超父,通过交叉验证来选择最好的超父;TAN(树增强朴素贝叶斯)由 Nir Friedman 等人在 1997 年提出,根据特征之间的条件互信息构建一棵最大带权生成树,只保留特征之间依赖程度最高的关系,让每个特征恰好最多有一个父特征;AODE(平均独依赖估计)由 Geoffrey Webb 等人在 2005 年提出,轮流把每个特征都当作超父,构建多个 SPODE 模型,再把它们的预测结果平均起来,它不需要进行模型选择,效果稳定。
更进一步
如果允许每个特征依赖于更多的特征,就得到了 k 依赖估计。理论上,考虑的依赖越多,模型越能准确地描述数据;但需要估计的概率也会随之增多,如果训练数据不够多,估计的误差反而会抵消掉考虑更多依赖带来的好处,导致效果变差。因此,依赖的数量需要与数据的规模相匹配。更一般的方法是贝叶斯网络,它用一张有向图来表示任意特征之间的依赖关系,并可以从数据中学习这张图的结构。半朴素贝叶斯分类器保留了朴素贝叶斯训练快、需要的数据较少的优点,在很多数据集上比朴素贝叶斯更准确,常用于文本分类和一些需要快速训练的场景。