2021-01-01

本文深入介绍了朴素贝叶斯算法,包括其理论基础、应用场景和工作原理。通过两个实例,展示了如何利用该算法进行疾病诊断和垃圾邮件分类。朴素贝叶斯算法因其假设特征间的独立性而在数据有限时仍能有效工作,但这一假设在实际中可能过于简化。尽管如此,它仍然是机器学习中一种实用且高效的分类方法。
摘要由CSDN通过智能技术生成

标题

机器学习算法(二): 朴素贝叶斯算法:理论学习

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法,是经典的机器学习算法之一,处理很多问题时直接又高效,因此在很多领域有着广泛的应用,如垃圾邮件过滤、文本分类等。也是学习研究自然语言处理问题的一个很好的切入口。

朴素贝叶斯的核心思想就是,你不是要给我分类吗?我算出自己属于各个分类的条件概率,属于谁的概率最大,就归入哪一类。
举例一:
某个医院早上收了六个门诊病人,如下表。

症状 职业 疾病
打喷嚏 护士 感冒
打喷嚏 农夫 过敏
头痛 建筑工人 脑震荡
头痛 建筑工人 感冒
打喷嚏 教师 感冒
头痛 教师 脑震荡
现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他最有可能患有何种疾病?

本质上,这就是一个典型的分类问题,症状和职业是特征属性,疾病种类是目标类别

根据贝叶斯定理

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

可得

P(感冒|打喷嚏x建筑工人)
    = P(打喷嚏x建筑工人|感冒) x P(感冒)
    / P(打喷嚏x建筑工人)

假定"打喷嚏"和"建筑工人"这两个特征是独立的,因此,上面的等式就变成了

P(感冒|打喷嚏x建筑工人)
    = P(打喷嚏|感冒) x P(建筑工人|感冒) x P(感冒)
    / P(打喷嚏) x P(建筑工人)

这是可以计算的。

P(感冒|打喷嚏x建筑工人)
    = 0.66 x 0.33 x 0.5 / 0.5 x 0.33
    = 0.66

因此,这个打喷嚏的建筑工人,有66%的概率是得了感冒。同理,可以计算这个病人患上过敏或脑震荡的概率。比较这几个概率,就可以知道他最可能得什么病。

作者:Frankie8713
链接:https://www.jianshu.com/p/a8fb2ed7adbe
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

举例二:
文本分类器,通常会用来识别垃圾邮件。
首先,我们可以把一封邮件的内容抽象为由若干关键词组成的集合,这样是否包含每种关键词就成了一封邮件的特征值,而目标类别就是属于垃圾邮件或不属于垃圾邮件

假设每个关键词在一封邮件里出现与否的概率相互之间是独立的,那么只要我们有若干已经标记为垃圾邮件和非垃圾邮件的样本作为训练集,那么就可以得出,在全部垃圾邮件(记为Trash)出现某个关键词Wi的概率,即P(Wi|Trash)

而我们最重要回答的问题是,给定一封邮件内容M,它属于垃圾邮件的概率是多大,即P(Trash|M)

根据贝叶斯定理,有

P(Trash|M) = P(M|Trash) * P(Trash) / P(M)

我们先来看分子:
P(M|Trash)可以理解为在垃圾邮件这个范畴中遇见邮件M的概率,而一封邮件M是由若干单词Wi独立汇聚组成的,只要我们所掌握的单词样本足够多,因此就可以得到

P(M|Trash) = P(W1|Trash) * P(W2|Trash) * … P(Wn|Trash)

这些值我们之前已经可以得到了。

再来看分子里的另一部分P(Trash),这个值也就是垃圾邮件的总体概率,这个值显然很容易得到,用训练集中垃圾邮件数除以总数即可。

而对于分母来说,我们虽然也可以去计算它,但实际上已经没有必要了,因为我们要比较的P(Trash|M)和P(non-Trash|M)的分母都是一样的,因此只需要比较分子大小即可。

这样一来,我们就可以通过简单的计算,比较邮件M属于垃圾还是非垃圾二者谁的概率更大了。

作者:Frankie8713
链接:https://www.jianshu.com/p/a8fb2ed7adbe
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

朴素贝叶斯朴素在哪?
朴素贝叶斯的英文叫做Naive Bayes,直译过来其实是天真的贝叶斯,那么他到底天真在哪了呢?

这主要是因为朴素贝叶斯的基本假设是所有特征值之间都是相互独立的,这才使得概率直接相乘这种简单计算方式得以实现。然而在现实生活中,各个特征值之间往往存在一些关联,比如上面的例子,一篇文章中不同单词之间一定是有关联的,比如有些词总是容易同时出现。

因此,在经典朴素贝叶斯的基础上,还有更为灵活的建模方式——贝叶斯网络(Bayesian Belief Networks, BBN),可以单独指定特征值之间的是否独立。这里就不展开了,有兴趣的同学们可以做进一步了解。

朴素贝叶斯工作原理
提取所有文档中的词条并进行去重
获取文档的所有类别
计算每个类别中的文档数目
对每篇训练文档:
对每个类别:
如果词条出现在文档中–>增加该词条的计数值(for循环或者矩阵相加)
增加所有词条的计数值(此类别下词条总数)
对每个类别:
对每个词条:
将该词条的数目除以总词条数目得到的条件概率(P(词条|类别))
返回该文档属于每个类别的条件概率(P(类别|文档的所有词条))
朴素贝叶斯算法流程
收集数据: 可以使用任何方法。
准备数据: 需要数值型或者布尔型数据。
分析数据: 有大量特征时,绘制特征作用不大,此时使用直方图效果更好。
训练算法: 计算不同的独立特征的条件概率。
测试算法: 计算错误率。
使用算法: 一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴素贝叶斯分类器,不一定非要是文本。
朴素贝叶斯优缺点
优点: 在数据较少的情况下仍然有效,可以处理多类别问题。
缺点: 对于输入数据的准备方式较为敏感。
适用数据类型: 标称型数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值