机器学习系列04——贝叶斯决策(Bayes)
2016-02-20 00:53
666 查看
贝叶斯决策(Bayes)
【前言】前面几天一直比较忙,写了机器学习的前几篇文章,中间还研究了下微信订阅号开发,简单的做了个微信订阅号,每天发布一天好的文章给大家,希望多少对大家有点帮助,今天继续写贝叶斯决策,这个算法涉及到概率论中的内容比较多,大家耐心看哈!【摘要】本文主要讲解“贝叶斯决策”算法,本算法是机器学习中应用非常广泛的算法之一,尤其在文本分类中的应用,例如在垃圾文件分类中的应用,本文从一定的数学基础(条件概率、全概率公式等)开始逐步引入贝叶斯定理、贝叶斯公式,以及对贝叶斯公式的理解,最后写到了文本分类问题,以及贝叶斯决策在文本分类中的应用方法。
1、贝叶斯定理
1.1、条件概率
所谓"条件概率"(Conditional probability),就是指在事件B发生的情况下,事件A发生的概率,用P(A|B)来表示。根据文氏图,可以很清楚地看到在事件B发生的情况下,事件A发生的概率就是P(A∩B)除以P(B)。
由条件概率推导贝叶斯定理:
根据条件概率的定义。在事件B发生的条件下事件A发生的概率是:
同样,在事件A发生的条件下事件B发生的概率为:
整理与合并两个方程式,得到:
这个引理有时称为概率惩罚规则。上式两边同除以P(A),若P(A)非零,我们可以得到贝叶斯定理:
1.2、全概率公式
假设样本空间S,是两个事件A与A'的和,如下图:上图中,事件A和事件A'共同构成了样本空间S。
这种情况下,事件B能划分成两个部分。如下图:
即:
P(B) = P(B A) + P(B A')
由上面的推导可知:P(B A) = P(B|A)P(A)
所以:P(B) = P(B|A)P(A) +P(B| A')P(A')
这就是全概率公式。它的含义是,如果A和A'构成样本空间的一个划分,那么事件B的概率,就等于A和A'的概率分别乘以B对这两个事件的条件概率之和。
全概率公式的另一种写法:
P(A|B) =
1.3、贝叶斯公式
或者写成如下形式:
我们把P(A)称为"先验概率"(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。P(A|B)称为"后验概率"(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。P(B|A)/P(B)称为"可能性函数"(Likelihood),这是一个调整因子,使得预估概率更接近真实概率。(这一段话很重要,大家好好理解!)
1.4、贝叶斯推断的含义(理解)
先预估一个"先验概率",然后加入实验结果,看这个实验到底是增强还是削弱了"先验概率",由此得到更接近事实的"后验概率"。在这里,如果"可能性函数"P(B|A)/P(B)>1,意味着"先验概率"被增强,事件A的发生的可能性变大;如果"可能性函数"=1,意味着B事件无助于判断事件A的可能性;如果"可能性函数"<1,意味着"先验概率"被削弱,事件A的可能性变小。
2、贝叶斯——文本分类
2.1、文本分类问题
在文本分类中,假设我们有一个文档d∈X,X是文档向量空间(document space),和一个固定的类集合C={c1,c2,…,cj},类别又称为标签。显然,文档向量空间是一个高维度空间。我们把一堆打了标签的文档集合<d,c>作为训练样本,<d,c>∈X×C。例如:<d,c>={Beijingjoins the World Trade Organization, China}
对于这个只有一句话的文档,我们把它归类到China,即打上china标签。
我们期望用某种训练算法,训练出一个函数γ,能够将文档映射到某一个类别:γ:X→C
这种类型的学习方法叫做有监督学习,因为事先有一个监督者(我们事先给出了一堆打好标签的文档)像个老师一样监督着整个学习过程。
朴素贝叶斯分类器是一种有监督学习,常见有两种模型,多项式模型(multinomialmodel)和伯努利模型(Bernoulli model)
2.2、多项式模型
2.2.1、基本原理
在多项式模型中,设某文档d=(t1,t2,…,tk),tk是该文档中出现过的单词,允许重复,则先验概率P(c)= 类c下单词总数/整个训练样本的单词总数;
类条件概率P(tk|c)=(类c下单词tk在各个文档中出现过的次数之和+1)/(类c下单词总数+|V|)
V是训练样本的单词表(即抽取单词,单词出现多次,只算一个),|V|则表示训练样本包含多少种单词。在这里,m=|V|, p=1/|V|。
P(tk|c)=可以看作是单词tk在证明d属于类c上提供了多大的证据,而P(c)则可以认为是类别c在整体上占多大比例(有多大可能性)。
2.2.2、举例
给定一组分类好了的文本训练数据,如下:docId | doc | 类别In c=China? |
1 | Chinese Beijing Chinese | yes |
2 | Chinese Chinese Shanghai | yes |
3 | Chinese Macao | yes |
4 | Tokyo Japan Chinese | no |
Chinese, Tokyo, Japan),类别集合为Y={yes, no}。
2.3、伯努利模型
2.3.1、基本原理(重要,要记住)
P(c)=类c下文件总数/整个训练样本的文件总数P(tk |c)= (类c下包含单词tk的文件数+1)/(类c下单词总数+2)
在这里,m=2,p=12m=2,p=12。
2.3.2、举例
(依旧使用多项式模型中的例子)2.4、两个模型的区别(了解)
二者的计算粒度不一样,多项式模型以单词为粒度,伯努利模型以文件为粒度,因此二者的先验概率和类条件概率的计算方法都不同。计算后验概率时,对于一个文档d,多项式模型中,只有在d中出现过的单词,才会参与后验概率计算,伯努利模型中,没有在d中出现,但是在全局单词表中出现的单词,也会参与计算,不过是作为“反方”参与的。
相关文章推荐
- 支持向量机(SVM)算法概述
- kNN文本分类器实现
- MMSEG中文分词算法
- 最大熵文本分类 算法实现
- 类标签缺失 weka的StringToWordVector类解析
- Cart文本分类算法原理和例子
- 文本分类
- 基于KNN算法的文本分类研究
- 用户商品评论自动分类
- N-gram语言模型文本分类器
- 短文本合并重复(去重)的简单有效做法
- 概率估计(极大似然估计、拉普拉斯平滑定理、M-估计的关系)
- 数据挖掘:基于朴素贝叶斯分类算法的文本分类实践
- 数据挖掘:基于TF-IDF算法的数据集选取优化
- 搜索引擎:文本分类——TF/IDF算法
- 数据挖掘--贝叶斯Bayes算法实现
- LibSVM实现文本分类总结
- 采用Weka中的KNN算法进行文本分类
- JGibbLDA使用总结
- Spark下实现LDA+SVM的文本分类处理