| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
9年前发布

贝叶斯学习举例--学习分类文本

“我感兴趣的电子新闻稿”或“讨论机器学习的万维网页”。在这两种情况下,如果计算机可以精确地学习到目标概念,就可从大量在线文本文档中自动过滤出最相关的文档显示给读者。

这里描述了一个基于朴素贝叶斯分类器的文本分类的通用算法。

将要展示的朴素贝叶斯算法遵循以下的问题背景:

1、考虑实例空间X包含了所有的文本文档(即任意长度的所有可能的单词和标点符号串)。

2、给定某未知目标函数f(x) 的一组训练样例,f(x)的取值来自于某有限集合V。此任务是从训练样例中学习,以预测后续文本文档的目标值。

作为示例,这里考虑的目标函数是:将文档分类为对某人是否感兴趣,使用目标值likedislike代表这两类。

在应用朴素贝叶斯分类器时包含的两个主要设计问题是:

1、首先要决定怎样将任意文档表示为属性值的形式,

2、第二要决定如何估计朴素贝叶斯分类器所需的概率。


给定一文本文档,(这里先考虑英文文档),可对每个单词的位置定义一个属性,该属性的值为在此位置上找到的英文单词。该文本文档如下例所示:

This is an example document for the naiveBayes classifier. This document contains only one paragraph, or two sentences.

这样,上例中的文本被表示为19个属性,对应19个单词位置。第一个属性的值为“This”,第二个为“is”,依次类推。注意较长的文档也需要较多的属性数目。


为了明确起见,假定我们有700个训练文档,并且已由人工将其分类为dislike,而另外300个文档被分类为like

现在有了一个新文档要分类。仍为明确起见,该文档就是上面的两句英文例子。在此情况下,可应用式朴素贝叶斯分类器如下



概括地讲,朴素贝叶斯分类vNB是使该文档中的单词在此处被观察到的概率最大的一个分类,它遵循通常的朴素贝叶斯独立性假定。

独立性假定


说明在此设定下在一个位置上出现某单词的概率独立于另外一个位置的单词。

说明:这一假定在有些时候并不反映真实情况。例如,在某处观察到单词learning 的概率会因为它前一位置单词是machine而增大。虽然此独立性假定很不精确,但这里别无选择,必须作此假定——没有这个假定,要计算的概率项将极为庞大。幸运的是,在实践中朴素贝叶斯学习器在许多文本分类问题中性能非常好,即使此独立性假定不正确。

为使用上式计算vNB,需要估计概率项P(vi)和P(ai=wk|vi)。这里引入wk代表英文词典中的第k个单词。

1、前一项P(vi)可基于每一类在训练数据中的比例很容易地得到(此例中P(like)=0.3且P(dislike)=0.7)。

2、如以往那样,估计类别的条件概率(如P(a1)=“This”| P(dislike))要困难的多,因为必须对每个文本位置、英文单词和目标值的组合计算此概率项。非常不幸,在英文词汇中包含约5万个不同单词,然后本例中有2个可能的目标值和19个文本位置,所以必须从训练数据中估计2×19×50000≈200万个这样的概率项。

       幸运的是,可以再引入一合理的假定以减少需要估计的概率数量。确切地讲,可假定遇到一特定单词wk的概率独立于单词所在位置。形式化的表述是,在给定目标分类的情况下,假定各属性是独立同分布的,即对所有的i,j, k, mP(ai=wk|vj)=P(am=wk|vj)。因此,为估计整个概率集合P(a1=wk|vj),P(a2=wk|vj),可通过一个位置无关的概率P(wk|vj),而不考虑单词的位置。其效果是,现在只需要2×50000个不同的概率项P(wk|vj)。虽然这仍然是一个较大的数值,但却是可管理的。注意到如果训练数据有限,作此假定的一个主要优点在于,它使可用于估计每个所需概率的样例数增加了,因此增加了估计的可靠程度。

为完成学习算法的设计,需要选择一个方法估计概率项(估计概率的贝叶斯方法,也就是m-估计)。因此,对P(wk|vj)的估计为:


其中n为所有目标值为vj的训练样例中单词位置的总数,nk是在n个单词位置中找到wk的次数,而|Vocabulary|为训练数据中的不同单词(以及其他记号)的总数。

概括地说,最终的算法使用的朴素贝叶斯分类器假定单词出现的概率与它在文本中的位置无关。

最终的算法显示在下表中:

Learn_naive_Bayes_text(Examples, V)

Examples为一组文本文档以及它们的目标值。V为所有可能目标值的集合。此函数作用是学习概率项P(wk|vj),它描述了从类别vj中的一个文档中随机抽取的一个单词为英文单词wk的概率。该函数也学习类别的先验概率P(vj)。

1.收集Examples中所有的单词、标点符号以及其他记号

     Vocabulary←在Examples中任意文本文档中出现的所有单词及记号的集合

2.计算所需要的概率项P(vj)和 P(wk|vj)

     对V中每个目标值vj

     docsjExamples中目标值为vj的文档子集

     P(vj) ←

     Textj←将docsj中所有成员连接起来建立的单个文档

     n←在Textj中不同单词位置的总数

     对Vocabulary中每个单词wk

     nk←单词wk出现在Textj中的次数

     P(wk|vj) ←

 Classify_naive_Bayes_text(Doc)

对文档Doc返回其估计的目标值。ai代表在Doc中的第i个位置上出现的单词。

     positions←在Doc中包含的能在Vocabulary中找到的记号的所有单词位置

    返回


在学习过程中,过程Learn-naive-Bayes-text分析所有训练文档,从中抽取出所有出现的单词的记号;然后在不同目标类中计算其频率以获得必要的概率估计。以后,若给定一个待分类新实例,过程 Classify-naive-Bayes-text 使用此概率估计来按照公式计算VNB。注意在新文档中出现但不在训练集的文档中的任何单词将被简单地忽略。


来自: http://blog.csdn.net//u011067360/article/details/22892607

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1453126649667.html
机器学习