朴素贝叶斯分类器
在朴素贝叶斯分类器中,每个特征都得到发言权,来确定哪个标签应该被分配到一个给定的输入值。为一个输入值选择标签,朴素贝叶斯分类器以计算每个标签的先验概率开始,它由在训练集上检查每个标签的频率来确定。之后,每个特征的贡献与它的先验概率组合,得到每个标签的似然估计。似然估计最高的标签会分配给输入值。
如何计算朴素贝叶斯的标签似然得分?
朴素贝叶斯以计算每个标签的先验概率开始,基于每个标签出现在训练数据中的频率。然后每个特征都用于估计每个标签的似然估计,通过用输入值中有那个特征的标签的概率乘以它。似然得分结果可以认为是从具有给定的标签和特征集的训练集中随机选取的值的概率的估计,假设所有特征概率是独立的。
潜在概率模型
朴素贝叶斯假设(或独立性假设)
基于独立性假设,计算表达式P(label|features)
P(label|features) = P(features, label)/P(features)
P(features) = Σlabel ∈ labels P(features, label)
P(features, label) = P(label) × P(features|label)
P(features, label) = P(label) × Πf ∈ featuresP(f|label)
P(label)是一个给定标签的先验概率,每个P(f|label)是一个单独的特征对标签可能性的贡献。
零计数和平滑
P(f|label) = count(f, label)/count(label)
虽然count(f,label)/count(label)当count(f,label)相对高时是P(f|label)的好的估计,当count(f)变小时这个估计变得不那么可靠。因此,建立朴素贝叶斯模型时,我们通常采用更复杂的平滑技术,用于计算P(f|label),给定标签的特征的概率。
期望似然估计
Heldout 估计
nltk.probability 模块提供了多种平滑技术的支持。
非二元特征
装箱
回归
独立的朴素
如果我们忽略了独立性假设,使用特征不独立的朴素贝叶斯分类器会发生什么?产生的一个问题是分类器“双重计数”高度相关的特征的影响,将分类器推向更接近给定的标签而不是合理的标签。
双重计数的原因
双重计数问题的原因是在训练过程中特征的贡献被分开计算,但当使用分类器为新输入选择标签时,这些特征的贡献被组合。因此,一个解决方案是考虑在训练中特征的贡献之间可能的相互作用。然后,我们就可以使用这些相互作用调整独立特征所作出的贡献。
写计算标签的可能性的方程,分离出每个功能(或标签)所作出的贡献:
P(features, label) = w[label] × Πf ∈ features w[f, label]
称w[label]和w[f, label]为模型的参数或权重。
w[label] = P(label),w[f, label] = P(f|label)
6.6 最大熵分类器
最大熵分类器使用搜索技术找出一组将最大限度地提高分类器性能的参数。特别的,它查找使训练语料的整体可能性最大的参数组。其定义如下:
P(features) = Σx ∈ corpus P(label(x)|features(x))
其中P(label|features),一个特征为features 将有类标签label 的输入的概率,被定义为:
P(label|features) = P(label, features)/Σlabel P(label, features)
最大熵分类器采用迭代优化技术选择模型参数,该技术用随机值初始化模型的参数,然后反复优化这些参数,使它们更接近最优解。
最大熵模型
联合特征是有标签的的值的属性,而(简单)特征是未加标签的值的属性。描述和讨论最大熵模型的文字中,术语“特征features”往往指联合特征;术
语“上下文contexts”指我们一直说的(简单)特征。
P(input, label) = Πjoint-features(input,label)w[joint-feature]
熵的最大化
直觉上熵作为衡量一套标签是如何“无序”。特别的,如果是一个单独的标签则熵较低,但如果标签的分布比较均匀则熵较高。一般情况下,最大熵原
理是说在与我们所知道的一致的的分布中,我们会选择熵最高的。
生成式分类器对比条件式分类器
朴素贝叶斯分类器和最大熵分类器之间的一个重要差异是它们可以被用来回答问题的类型。
朴素贝叶斯分类器是一个生成式分类器的例子,建立一个模型,预测P(input, label),即(input, label)对的联合概率。因此,生成式模型可以用来回答下列问题:
一个给定输入的最可能的标签是什么?
对于一个给定输入,一个给定标签有多大可能性?
最有可能的输入值是什么?
一个给定输入值的可能性有多大?
一个给定输入具有一个给定标签的可能性有多大?
对于一个可能有两个值中的一个值(但我们不知道是哪个)的输入,最可能的标签是什么?
最大熵分类器是条件式分类器的一个例子。条件式分类器建立模型预测P(label|input)——一个给定输入值的标签的概率。因此,条件式模型仍然可以被用来回答问题1和2。然而,条件式模型不能用来回答剩下的问题3-6。
一般情况下,生成式模型确实比条件式模型强大,因为我们可以从联合概率P(input, label)计算出条件概率P(label|input),但反过来不行。