孟礼斌作者

这个男人嫁还是不嫁?懂点朴素贝叶斯(Naive Bayes)原理让你更幸福

一、历史背景解读

18世纪英国业余(一点都不业余好吗)数学家托马斯·贝叶斯(Thomas Bayes,1702~1761)提出过一种看似显而易见的观点:“用客观的新信息更新我们最初关于某个事物的信念后,我们就会得到一个新的、改进了的信念。”这个研究成果由于简单显得平淡无奇,直至他死后两年才于1763年由他的朋友理查德·普莱斯帮助发表。

他的数学原理很容易理解,简单说就是,如果你看到一个人总是做一些好事,则会推断那个人多半会是一个好人。这就是说,当你不能准确知悉一个事物的本质时,你可以依靠与事物特定本质相关的事件出现的多少去判断其本质属性的概率。

用数学语言表达就是:支持某项属性的事件发生得愈多,则该属性成立的可能性就愈大。与其他统计学方法不同,贝叶斯方法建立在主观判断的基础上,你可以先估计一个值,然后根据客观事实不断修正。

1774年,法国数学家皮埃尔-西蒙·拉普拉斯(Pierre-Simon Laplace,1749-1827)独立地再次发现了贝叶斯公式。拉普拉斯关心的问题是:当存在着大量数据,但数据又可能有各种各样的错误和遗漏的时候,我们如何才能从中找到真实的规律。

拉普拉斯研究了男孩和女孩的生育比例。有人观察到,似乎男孩的出生数量比女孩更高。这一假说到底成立不成立呢?拉普拉斯不断地搜集新增的出生记录,并用之推断原有的概率是否准确。每一个新的记录都减少了不确定性的范围。拉普拉斯给出了我们现在所用的贝叶斯公式的表达:P(A/B)=P(B/A)*P(A)/P(B),该公式表示在B事件发生的条件下A事件发生的条件概率,等于A事件发生条件下B事件发生的条件概率乘以A事件的概率,再除以B事件发生的概率。公式中,P(A)也叫做先验概率,P(A/B)叫做后验概率。严格地讲,贝叶斯公式至少应被称为“贝叶斯-拉普拉斯公式”。

二、 原理推导

理论上,概率模型分类器是一个条件概率模型:

独立变量C有若干类别,条件依赖于若干特征变量,但问题在于如果特征数量n的维度较大或者每个特征能取大量值时,基于概率模型列出概率表变得不现实。所以我们修改这个模型使之变得可行。 根据贝叶斯公式有以下式子:

或者,这样表达比较简洁明了:

其中,先验概率后验概率;可以这么理解,在不知道需要预测的样本任何特征的时候,先判断该样本为某个类别的概率为,再知道样本的特征之后,乘上之后,得到该样本再知

之后,样本属于这个类别的条件概。这个乘上去的因子可能是起到促进的作用(当该因子大于1),也可能起到抑制的作用(当该因子小于1)。这个比较容易理解,比如没有任何信息的时候,可以判断一个官为贪官的概率为0.5,再知道该官员财产大于一千万后,则根据常理判断该官员为贪官的概率为0.8。

实际中,我们只关心分式中的分子部,因为分母不依赖于C,而且特征的值也是给定的,于是分母可以认为是一个常数。这样分子就等价于联合分布模型。

现在,“朴素”的条件独立假设开始发挥作用了:假设每个特,对于其他特征是独立的,即特征之间相互独立,就有:

这里还要再解释一下为什么要假设特征之间相互独立。

我们这么想,假如没有这个假设,在数据量很大的情况下,那么我们对右边这些概率的估计其实是不可做的,这么说,假设一个分类器有4个特征,每个特征有10个特征值,则这四个特征的联合概率分布是4维的,可能的情况就有种。

计算机扫描统计还可以,但是现实生活中,往往有非常多的特征,每一个特征的取值也是非常之多,那么通过统计来估计后面概率的值,变得几乎不可做,这也是为什么需要假设特征之间独立的原因,朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率

有了特征相互独立的条件以后,对,联合分布模型可表达为:

这就意味着,变量C的条件分布可以表达为:

其中,Z只依赖,当特征变量已知时Z是个常数。

至此,我们我们可以从概率模型中构造分类器,朴素贝叶斯分类器包括了这种模型和相应的决策规则。一个普通的规则就是选出最有可能的那个:这就是大家熟知的最大后验概率(MAP)决策准则。相应的分类器便是如下定义的公式:

当特征值为离散型时:

类的先验概率可以通过训练集的各类样本的出现次数来估计,例如:类的先验概率,类条件概率。即可求得类的条件概率,最后比较各个类别的概率值的大小判断该测试样本应该属于哪个类别。

当特征值为连续型时:

通常的假设这些连续数值为高斯分布。例如,假设训练集中某个连续特征x。首先我们对数据类别分类,然后计算每个类别中x的均值和方差。令表示为x在c类上的均值,表示为在c类上的方差。在给定类中某个值的概率,,可以通过将表示为均值为方差为的正态分布计算出来。如下,处理连续数值问题的另一种常用的技术是通过离散化连续数值的方法,通常,当训练样本数量较少或者是精确的分布已知时,通过概率分布的方法是一种更好的选择。在大量样本的情形下离散化的方法表现更优,因为大量的样本可以学习到数据的分布。由于朴素贝叶斯是一种典型的用到大量样本的方法(越大计算量的模型可以产生越高的分类精确度),所以朴素贝叶斯方法都用到离散化方法,而不是概率分布估计的方法。

三、举个栗子(实例)

这里举两个例子,一个离散型的,一个连续型的:

离散型实例,给定如下数据:

根据以上数据,现在有一对男女朋友,男生向女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请判断女生是嫁还是不嫁?

该问题转换为数学问题就是比较的概率。

由贝叶斯公式得:

假设各个特征相互独立,即:

首先我们整理训练数据中:

嫁的样本数总共有6个,

不帅,也嫁了的样本数总共有6个,则

性格不好,也嫁了的样本数总共有1个,则

矮,也嫁了的样本数总共有1个,则

不上进,也嫁了的样本数总共有1个,则

同理:

不嫁的样本数总共有6个,

不帅,就不嫁的样本数总共有1个,则

性格不好,就不嫁的样本数总共有3个,则

矮,就不嫁的样本数总共有6个,则

不上进,就不嫁的样本数总共有3个,则

由于分母都相同,且分子,所以最后得出的结论是该女生不嫁给这个男生。

连续型实例,给定训练数据如下:

通过以上人体测量特征,包括身高、体重、脚的尺寸,判断一个人是男性还是女性。

测试样本:

首先,假设人的身高,体重,脚的尺寸都满足高斯分布,分别计算各个特征的均值和方差,得到下表:

其次,我们认为先验概率是男性或者是女性是等概率的,即,或者通过统计样本中男女比例来作为先验概率也可以,本例得到的结果是一样的。

判断该条测试样本属于男性还是女性,就等价于比较是男性的后验概率和女性的后验概率哪个大。

分母是个常数,只需要比较分子就行,这里给出分母的值:

计算男性的后验概率

,其中,这里大于1是因为是概率密度函数,而不是概率分布函数,所以大于1也是合理的。

由于女性的后验概率分子较大,所以我们预测这个样本的为女性。

四、实战运用

达观数据作为在文本智能处理领域的领先企业,在文本挖掘领域有着深厚的技术底蕴。在实际的工作中有大量的文本分类的实际运用场景。下面将举一个常见的例子:广告识别。

这里有一批已经标注好的用户评论数据如下图,我们定义有联系方式的评论为广告,即广告识别等价于识别是否包含联系方式。

首先,将每条评论转换为词向量,这里我们使用python的分词包jieba来进行分词,例如上图中的某条评论:”您好您可以在网贷之家httpshujuwangdaizhijiacomarchives387html看到迷你贷的相关数据哦,其他第三方网站都是不准确的。”,分词结果为:“您好/您/可以/在/网贷/之家/httpshujuwangdaizhijiacomarchives387html/看到/迷你/贷/的/相关/数据/哦/,/其他/第三方/网站/都/是/不/准确/的/。”。

然后,将语料库(corpus)中所有的评论分词后的词语作为一个集合,称为词袋(Bag of words)。计算每条评论中每个词语的TF-IDF值,TF-IDF公式为:                  

,这里除以总评论数是将词频归一化了;

,这里+1是为了避免分母为0。

TF-IDF值的意义是:

一个词语在评论中出现次数越多, 同时在所有评论中出现次数越少, 越能够代表该评论。每条评论根据词袋构建一个数字向量,向量长度为词袋的词语总数,每个词对应一维特征,如果该词在这条评论中,则这维特征是这个词语的TF-IDF值;如果该词不在评论中,则这维特征为0。这样就将每条评论转换为一个向量。

假设特征之间是相互独立的,该例子就转换为连续型的贝叶斯分类器。当然,这里也可以用这个词语的词频来作为特征,这时该例子为离散型的贝叶斯分类器,这里我们用TF-IDF值。本例子使用scikit-learn中的Naive Bayes模块,这个模块中有三个训练模块:GaussianNB、MultinomialNB、BernoulliNB,分别是高斯朴素贝叶斯、多项式分布朴素贝叶斯和伯努利朴素贝叶斯。多项式分布是将重复词语是为其重复多次,伯努利朴素贝叶斯是将重复的词语视为其只出现1次,本例子是连续型的这里我们用高斯朴素贝叶斯。将转换后的数据90%作为训练集,10%作为测试集,部分代码如图:

进行交叉验证后得到的结果如图:

五、综述

贝叶斯分类器是一种生成式模型,通过计算概率来进行分类,可以用来处理多分类问题,对于小规模的数据预测,同样表现良好。贝叶斯分类器适合多分类任务,适合增量式训练,对于大规模数据,计算复杂度较低,同时算法原理比较简单易懂。

但缺点是,对输入数据比较敏感,而且贝叶斯分类器是假设特征之间相互独立,而往往实际例子中特征之间都有相互联系,所以对于特征之间相关性较强的运用场景,准确率上会有一定损失;并且连续型的特征是假设该特征满足高斯分布,同样会带来一定准确率上的损失。所以在实际运用当中,充分考虑特征之间的相关性和特征的分布情况是至关重要的。

References

1.  李贤平.概率论基础(第三版)[M]. 高等教育出版社,2010.

2.  李航.统计学习方法[M]. 北京:清华大学出版社 2012.

3.  钟波 刘琼荪.数理统计[M]. 高等教育出版社,2012.

4.  Domingos, Pedro; Pazzani, Michael. On the optimality of the simple Bayesian classifier under zero-one loss. Machine Learning. 1997, 29: 103–137.

5.  Webb, G. I.; Boughton, J.; Wang, Z. Not So Naive Bayes: Aggregating One-Dependence Estimators. Machine Learning (Springer). 2005, 58 (1): 5–24. doi:10.1007/s10994-005-4258-6.

关于作者

孟礼斌达观数据算法工程师,负责达观数据个性化推荐系统的研发、优化,以及推荐系统中机器学习算法的具体应用,对各种机器学习算法有浓厚兴趣。


达观数据
达观数据

达观数据是一家专注于文本智能处理技术的国家高新技术企业,获得2018年度中国人工智能领域最高奖项 “吴文俊人工智能科技奖”,也是本年度上海市唯一获奖企业。达观数据利用先进的自然语言理解、自然语言生成、知识图谱等技术,为大型企业和政府客户提供文本自动抽取、审核、纠错、搜索、推荐、写作等智能软件系统,让计算机代替人工完成业务流程自动化,大幅度提高企业效率。

工程文本分类文本挖掘朴素贝叶斯
3
相关数据
达观数据机构

达观数据成立于2015年,是中国领先的文本智能处理企业,利用先进的文字语义自动分析技术,为企业、政府等各大机构提供文本自动抽取、审核、纠错、搜索、推荐、写作等智能软件系统,让计算机代替人工实现业务流程自动化,大幅度提高运营效率。 达观数据为企业提供完善的文本挖掘、知识图谱、搜索引擎和个性化推荐等大数据服务,是国内唯一一家将自动语义分析技术应用于企业数据化运营的人工智能公司。

http://www.datagrand.com/
李航人物

李航,毕业于日本京都大学电气电子工程系,日本东京大学获得计算机科学博士学位。北京大学、南京大学兼职教授。曾任日本NEC公司中央研究所研究员,微软亚洲研究院高级研究员与主任研究员、华为技术有限公司诺亚方舟实验室主任,是《统计学习方法》作者。

托马斯·贝叶斯人物

18世纪英国数学家。1742年成为英国皇家学会会员。贝叶斯以其在概率论领域的研究闻名于世,他提出的贝叶斯定理对于现代概率论和数理统计的发展有重要的影响。他还曾在长老会担任牧师。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

高斯分布技术

正态分布是一个非常常见的连续概率分布。由于中心极限定理(Central Limit Theorem)的广泛应用,正态分布在统计学上非常重要。中心极限定理表明,由一组独立同分布,并且具有有限的数学期望和方差的随机变量X1,X2,X3,...Xn构成的平均随机变量Y近似的服从正态分布当n趋近于无穷。另外众多物理计量是由许多独立随机过程的和构成,因而往往也具有正态分布。

先验概率技术

在贝叶斯统计中,某一不确定量p的先验概率分布是在考虑"观测数据"前,能表达p不确定性的概率分布。 它旨在描述这个不确定量的不确定程度,而不是这个不确定量的随机性。 这个不确定量可以是一个参数,或者是一个隐含变量(英语:latent variable)。

概率分布技术

概率分布(probability distribution)或简称分布,是概率论的一个概念。广义地,它指称随机变量的概率性质--当我们说概率空间中的两个随机变量具有同样的分布(或同分布)时,我们是无法用概率来区别它们的。

文本分类技术

该技术可被用于理解、组织和分类结构化或非结构化文本文档。文本挖掘所使用的模型有词袋(BOW)模型、语言模型(ngram)和主题模型。隐马尔可夫模型通常用于词性标注(POS)。其涵盖的主要任务有句法分析、情绪分析和垃圾信息检测。

贝叶斯分类器技术

基于贝叶斯概率定理的分类器

后验概率技术

在贝叶斯统计中,一个随机事件或者一个不确定事件的后验概率是在考虑和给出相关证据或数据后所得到的条件概率。同样,后验概率分布是一个未知量(视为随机变量)基于试验和调查后得到的概率分布。“后验”在本文中代表考虑了被测试事件的相关证据。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

条件独立性技术

在概率论和统计学中,两事件R和B在给定的另一事件Y发生时条件独立,类似于统计独立性,就是指当事件Y发生时,R发生与否和B发生与否就条件概率分布而言是独立的。换句话讲,R和B在给定Y发生时条件独立,当且仅当已知Y发生时,知道R发生与否无助于知道B发生与否,同样知道B发生与否也无助于知道R发生与否。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

朴素贝叶斯技术

朴素贝叶斯是一种构建分类器的简单方法。该分类器模型会给问题实例分配用特征值表示的类标签,类标签取自有限集合。它不是训练这种分类器的单一算法,而是一系列基于相同原理的算法:所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关。举个例子,如果一种水果其具有红,圆,直径大概3英寸等特征,该水果可以被判定为是苹果。尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为这些属性在判定该水果是否为苹果的概率分布上独立的。

语料库技术

语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记;事实上,语料库英文 "text corpus" 的涵意即为"body of text"。

分类问题技术

分类问题是数据挖掘处理的一个重要组成部分,在机器学习领域,分类问题通常被认为属于监督式学习(supervised learning),也就是说,分类问题的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。根据类别的数量还可以进一步将分类问题划分为二元分类(binary classification)和多元分类(multiclass classification)。

交叉验证技术

交叉验证,有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。 一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。交叉验证的目标是定义一个数据集到“测试”的模型在训练阶段,以便减少像过拟合的问题,得到该模型将如何衍生到一个独立的数据集的提示。

文本挖掘技术

文本挖掘有时也被称为文字探勘、文本数据挖掘等,大致相当于文字分析,一般指文本处理过程中产生高质量的信息。高质量的信息通常通过分类和预测来产生,如模式识别。文本挖掘通常涉及输入文本的处理过程,产生结构化数据,并最终评价和解释输出。'高品质'的文本挖掘通常是指某种组合的相关性,新颖性和趣味性。

暂无评论
暂无评论~