Java实现基于朴素贝叶斯的情感词分析

朴素贝叶斯(Naive Bayesian)是一种基于贝叶斯定理和特征条件独立假设的分类方法,它是基于概率论的一种有监督学习方法,被广泛应用于自然语言处理,并在机器学习领域中占据了非常重要的地位。在之前做过的一个项目中,就用到了朴素贝叶斯分类器,将它应用于情感词的分析处理,并取得了不错的效果,本文我们就来介绍一下朴素贝叶斯分类的理论基础和它的实际使用。

在学习朴素贝叶斯分类以及正式开始情感词分析之前,我们首先需要了解一下贝叶斯定理的数学基础。

贝叶斯定理

贝叶斯定理是关于随机事件A和B的条件概率的定理,公式如下:

在上面的公式中,每一项表示的意义如下:

P(A):先验概率(prior probability),是在没有任何条件限制下事件A发生的概率,也叫基础概率,是对A事件概率的一个主观判断

P(A|B) :在B发生的情况下A发生的可能性,也被称为A的后验概率(posterior probability)

P(B|A):似然性,也被称为条件似然(conditional likelihood)

P(B):不论A是否发生,在所有情况下B发生的概率,它被称为整体似然或归一化常量(normalizing constant)

按照上面的解释,贝叶斯定理可以表述为:

后验概率 = 先验概率 * 似然性 / 归一化常量

通俗的来说,可以理解为当我们不能确定某一个事件发生的概率时,可以依靠与该事件本质属性相关的事件发生的概率去推测该事件发生的概率。用数学语言来表达就是,支持某项属性的事件发生得愈多,则该事件发生的的可能性就愈大,这个推理过程也被叫做贝叶斯推理。

在查阅的一些文档中,P(B|A)/P(B) 可以被称为可能性函数,它作为一个调整因子,表示新信息B对事件A带来的调整,作用是将先验概率(主观判断)调整到更接近真实的概率。那么,贝叶斯定理也可以理解为:

新信息出现后A的概率 = A的先验概率 * 新信息带来的调整

举一个例子,方便大家更直观的理解这一过程。假设统计了一段时间内天气和气温对于运动情况的影响,如下所示:

天气 气温 运动 晴天 非常高 游泳 晴天 高 足球 阴天 中 钓鱼 阴天 中 游泳 晴天 低 游泳 阴天 低 钓鱼

现在请计算在晴天,气温适中的情况下,去游泳的概率是多少?根据贝叶斯定理,计算过程如下:

P(游泳|晴天,中温)=P(晴天,中温|游泳)*P(游泳)/P(晴天,中温) =P(晴天|游泳)*P(中温|游泳)*P(游泳)/[P(晴天)*P(中温)] =2/3 * 1/3 *1/2 / (1/2 *1/3 ) =2/3

最终得出去游泳的概率时2/3,上面就是基于贝叶斯定理,根据给定的特征,计算事件发生概率大小的过程。

贝叶斯分析的思路对于由证据的积累来推测一个事物的发生的概率具有重大作用,当我们要预测一个事物,首先会根据已有的经验和知识推断一个先验概率,然后在新证据不断的积累的情况下调整这个概率。整个通过累积证据来得到一个事件发生概率的过程我们称为贝叶斯分析。这样,贝叶斯底层的思想就可以概括为,如果能够掌握一个事情的全部信息,就能够计算出它的一个客观概率。

另外,在贝叶斯公式的基础上进行变形,可以得到下面的公式:

其中B1,B2,…,Bj是一个完备事件组,上面的公式可以表示在事件A已经发生的条件下,寻找导致A发生的各种“原因”的Bi的概率。

朴素贝叶斯

在学习朴素贝叶斯之前,首先需要对贝叶斯分类进行一下了解,贝叶斯分类通过预测一个对象属于某个类别的概率,通过比较不同类别概率的大小预测其最可能从属的类别,是基于贝叶斯定理而构成出来的。在处理大规模数据集时,贝叶斯分类器表现出较高的分类准确性。

贝叶斯分类在处理一个未知类型的样本X时,可以先算出X属于每一个类别Ci的概率 P(Ci|X),然后选择其中概率最大的类别。假设有两个特征变量x和y,并且存在两个分类类别C1和C2,结合贝叶斯定理:

如果P(C1|x,y) > P(C2|x,y),说明在x和y发生的条件下,C1比C2发生的概率要大,那么它应该属于类别C1

反之如果P(C1|x,y) < P(C2|x,y),那么它应该属于类别C2

而朴素贝叶斯模型(Naive Bayesian Model)作为一种强大的预测建模算法,它在贝叶斯定理的基础上进行了简化,假定了目标的特征属性之间相互独立,这也是它被形容为“朴素”的原因。在实际情况中如果属性之间存在关联,那么分类准确率会降低,不过对于解决绝大部分的复杂问题非常有效。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjsjg.html