【语言处理与Python】6.4决策树/6.5朴素贝叶斯分类器/6.6最大熵分类器

6.4决策树

决策树是一个简单的为输入值选择标签的流程图。这个流程图由检查特征值的决策节点
和分配标签的叶节点组成。为输入值选择标签,我们以流程图的初始决策节点(称为其根节点)开始。

image

 

熵和信息增益在决策树桩确定上的应用(可以自行查找相关资料阅读)

可以参考:http://blog.csdn.net/athenaer/article/details/8425479

决策树的一些缺点:

1、可能会导致过拟合。

由于决策树的每个分支会划分训练数据,在
训练树的低节点,可用的训练数据量可能会变得非常小。因此,这些较低的决策节点可能过
拟合训练集,学习模式反映训练集的特质而不是问题底层显著的语言学模式。对这个问题的
一个解决方案是当训练数据量变得太小时停止分裂节点。另一种方案是长出一个完整的决策
树,但随后进行剪枝剪去在开发测试集上不能提高性能的决策节点。

2、强迫按照特定的顺序检查。

它们强迫特征按照一个特定的顺序进行检查,即使特征可能是
相对独立的。例如:按主题分类文档(如体育、汽车或谋杀之谜)时,特征如hasword(foot
ball),极可能表示一个特定标签,无论其他的特征值是什么。由于决定树顶部附近的空间有
限,大部分这些特征将需要在树中的许多不同的分支中重复。因为越往树的下方,分支的数
量成指数倍增长,重复量可能非常大

我们下面将讨论的朴素贝叶斯分类方法克服了这一限制,允许所有特征“并行”的起作用。

6.5朴素贝叶斯分类器

在朴素贝叶斯分类其中,每个特征都有发言权,来确定哪个标签应该被分配到一个给定的输入值。为一个输入值选择标签,朴素贝叶斯分类器以计算每个标签的先验概率开始,它由在训练集上检查每个标签的频率来确定。之后,每个特征的贡献与它的先验概率组合,得到每个标签的似然估计。似然估计最高的标签会分配给输入值。

潜在概率模型

理解朴素贝叶斯分类器的另一种方式是它为输入选择最有可能的标签。

我们可以计算表达式P(label|features),给定一个特别的特征集,一个输入,具有特定标签的概率。

P(label|features)= P(features,label)/P(features),其中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)是一个单独的特征对标签可能性的贡献。

零计数和平滑

建立朴素贝叶斯模型时,我们通常采用更复杂的技术,为了防止给定标签的标签可能性为0,这种技术称作平滑技术。

非二元特征

独立的朴素

为什么会称为朴素,因为它不切实际的假设所有的特征之间是相互独立的。

双重计数的原因

P(features,label) = w[label]×∏f ∈features w[f,label](考虑在训练中特征的贡献之间可能的相互作用)

在这里,w[label]是一个给定标签的“初始分数”,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)

最大熵模型

最大熵分类器模型是朴素贝叶斯分类器模型的泛化。

下面的内容摘自:http://wiki.52nlp.cn/%E6%9C%80%E5%A4%A7%E7%86%B5%E6%A8%A1%E5%9E%8B%E4%B8%8E%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86

最大熵模型与自然语言处理

日常生活中,很多事情的发生表现出一定的随机性,试验的结果往往是不确定的,而且也不知道这个随机现象所服从的概率分布,所有的只有一些试验样本或样本特征,统计学常常关心的一个问题,在这种情况下如何对分布作出一个合理的推断?根据样本信息对某个未知分布作出推断的方法,最大熵的方法就是这样一个方法。

最大熵原理是在1957 年由E.T.Jaynes 提出的,其主要思想是,在只掌握关于未知分布的部分知识时,应该选取符合这些知识但熵值最大的概率分布。因为在这种情况下,符合已知知识的概率分布可能不止一个。我们知道,熵定义的实际上是一个随机变量的不确定性,熵最大的时侯,说明随机变量最不确定,换句话说,也就是随机变量最随机,对其行为做准确预测最困难。从这个意义上讲,那么最大熵原理的实质就是,在已知部分知识的前提下,关于未知分布最合理的推断就是符合已知知识最不确定或最随机的推断,这是我们可以作出的唯一不偏不倚的选择,任何其它的选择都意味着我们增加了其它的约束和假设,这些约束和假设根据我们掌握的信息无法作出。

自然语言处理中很多问题都可以归结为统计分类问题,很多机器学习方法在这里都能找到应用,在自然语言处理中,统计分类表现在要估计类a 和某上下文b 共现的概率P(a,b) ,不同的问题,类a 和上下文b 的内容和含义也不相同。在词性标注中是类的含义是词性标注集中的词类标记,而上下文指的是当前被处理的词前面一个词及词类,后面一个词及词类或前后若干个词和词类。通常上下文有时是词,有时是词类标记,有时是历史决策等等。大规模语料库中通常包含a 和b 的共现信息,但b 在语料库中的出现常常是稀疏的,要对所有可能的(a,b)计算出可靠的P(a,b) ,语料库规模往往总是不够的。问题是要发现一个方法,利用这个方法在数据稀疏的条件下可靠的估计P(a,b) 。不同的方法可能采用不同的估计方法。

p*=argmaxH(p) p∈P

P(p|p是X上满足条件的概率分布)

特征:(x, y)

y:这个特征中需要确定的信息

x:这个特征中的上下文信息

关于某个特征(x, y)的样本——特征所描述的语法现象在标准集合里的分布:

(xi, yi)pairs

yi是y的一个实例

xi是yi的上下文

特征函数:对于一个特征(x0, y0),定义特征函数:

f(x, y)=1 如果y=y0且x=x0

0 其他情况

特征函数期望值:

对于一个特征(x0, y0),在样本中的期望是:

p'(f)=Σp'(x, y)f(x, y)

p'(x, y)是(x, y)在样本中出现的概率

条件:

对每一个特征(x, y),模型所建立的条件概率分布要与训练样本表现出来的分布相同。

Epfj =Σp'(x) fj(x)

于是,最大熵模型可表示为

p*=-argmaxΣp(y|x)p'(x)logp(y|x)

p∈P

P={p(y|x)|∀fi: Σp(y|x)p'(x)fi(x, y)=Σp'(x, y)fi(x, y)

(x,y) (x,y)

∀x: Σp(y|x) =1 }

y

即解带限制条件的极值问题。

 

生成式分类器对比条件式分类器

朴素贝叶斯分类器是一个生成式分类器的例子,建立一个模型,预测P(input,label)即(input,label)对的联合概率。

所以:生成式模型可以用来回答下列问题

1. 一个给定输入的最可能的标签是什么?
2. 对于一个给定输入,一个给定标签有多大可能性?
3. 最有可能的输入值是什么?
4. 一个给定输入值的可能性有多大?
5. 一个给定输入具有一个给定标签的可能性有多大?
6. 对于一个可能有两个值中的一个值(但我们不知道是哪个)的输入,最可能的标签
是什么?

最大熵分类器是条件式分类器的一个例子。条件式分类器建立模型预测P(label|input),一个给定输入值的标签的概率,因此条件式模型仍然可以被用来回答问题1、2.

posted @ 2013-05-27 15:05  createMoMo  阅读(1480)  评论(0编辑  收藏  举报