机器学习常见算法-1-朴素贝叶斯分类

Posted TagTheWorld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习常见算法-1-朴素贝叶斯分类相关的知识,希望对你有一定的参考价值。

想写一个系列的“机器学习常见算法”系列,贵在积累吧。

把朴素贝叶斯分类作为这一系列的第一篇文章,足以见得它是多么的重要了吧。重要的点在于,它体现了简单但是又异常重要的“概率”的思想,而“概率”又会伴随机器学习的始终,不离不弃。

下面有一个小的栗子来说明,我想(通过机器)知道,当我说“虽然天气阴霾,但是今天去郊游还是很开心的”这句话的时候,我是不是开心的、向上的、兴致高昂的。

第一个步骤,文本分类的首要关键任务是标注。比如现在我有1个标注任务一共有6个词语,它们分别是“开心”,“兴奋”,“郊游”,“难过”,“阴霾”,“低落”,然后需要标记这些词语是正向情感(用1表示)还是负向情感(用0表示)。为了保证标注结果的可靠性分别找了三个人来进行标注。举例来说,最简单的标注结果可能是这样:

标注数据有了,机器学习的第二个目标是训练过程。接上面的话题,现在我有一个文本分类的任务,判断一句话“虽然天气阴霾,但是今天去郊游还是很开心的”的情感倾向。其实,朴素贝叶斯的核心思想就只是一个后验概率。“我的结果已经是这样了,那么造成这样结果最有可能的原因是什么呢”?就是说我想知道,“当我说了这句话的时候,我的情感是正向还是负向的”,然后我们的任务就是来考察“在情感是正向的还是负向的时候,我才有更大的意愿想说这句话呢”。有点绕,其实就是想说:

P(B)P(A|B) = P(A)P(B|A)

然后对应于上面的任务,就是需要计算:

P(pos|text) = P(text|pos) * P(pos)/P(text)

同样的,对于负向情感:

P(neg|text) = P(text|neg) * P(neg)/P(text)

可以看到上面两个算式的分母是相同的,所以说可以去掉。我们的目的就是求上面两个概率哪个最大,然后我们就认为在我说了这句话的时候,我的情绪更有可能是正向的还是负向的。

第三个步骤,朴素贝叶斯分类还有一个不容易让人那么信服的假设:它认为多个先验条件是相互独立的。也就是说当我后面说“开心”的时候,与前面的天气“阴霾”没有任何关系。显然很多情况下这个假设是不成立的。可以这样来理解,如果对于明显不符合假设条件的情形,那么就不适合用朴素贝叶斯分类来解决问题,相反的一个想法是如果你拿不出有力的观点来反驳我的假设是错误的,那么你就暂且认为这个假设临时是正确的。忽然突发奇想一个略有趣的事情,机器学习里面总是有这样一种倾向,“我不能给你解释这个东西为什么好,但是从效果来看它是最优的,那么这样做就是对的...”

好了,根据我们上面条件独立的假设(首先还应该明确的一个事情是,机器是不能解决没有标注的数据的,至少是不能很好地解决。所以这还是说明了一个观点,标注是机器学习领域最重要的环节之一),所以说我们上面的概率公式可以写成如下的形式:

P(pos|text) = P(阴霾,郊游,开心|pos) * P(pos) = P(阴霾|pos) * P(郊游|pos) * P(开心|pos) * P(pos)

同样的,对于负向情绪的概率可以如下表示:

P(neg|text) = P(阴霾,郊游,开心|neg) * P(neg) = P(阴霾|neg) * P(郊游|neg) * P(开心|neg) * P(neg)

然后第四步就轻松而愉快了,我们分别带入标注值计算就好了:

P(pos|text) = 1/9 * 2/9 * 2/9 * 1/2 = 2/729
P(eng|text) = 2/9 * 1/9 * 1/9 * 1/2 = 1/729

好了如上表,结果显而易见:当我说“虽然天气阴霾,但是今天去郊游还是很开心的”的时候,根据三个人人工标注的结果计算出来,我有2/729的概率这时候情绪是正向的,有1/729的概率这时候情绪是负向的。所以说,机器会判断当我说这句话的时候,我更有可能处于开心的情绪当中。

说点题外话,似乎隐马应该是一种推广的贝叶斯分类,它们都是根据观测值来预测隐含值的最大可能性,但是隐马是时间序列相关的,也就意味着需要预测多个值,不知道自己理解的对不对。

好啦,感觉虽然描述有点啰嗦,但是问题还是讲清楚了的。

以上是关于机器学习常见算法-1-朴素贝叶斯分类的主要内容,如果未能解决你的问题,请参考以下文章

常见机器学习算法原理+实践系列6(朴素贝叶斯分类)

机器学习朴素贝叶斯

朴素贝叶斯算法理论推导及其变种算法

机器学习中分类算法之朴素贝叶斯分类

机器学习——朴素贝叶斯算法

机器学习—朴素贝叶斯