当前位置: 首页 > news >正文

【收藏】记住这五个字,入门朴素贝叶斯模型

导语:作为理科生或者程序员,引以为傲的除了身上的格子衬衫外,我们还有一样很重要的就是逻辑思维,对于很多事,譬如一些女生的流行观点,我们似乎天然地就喜欢抛出一句“真没逻辑”的评价,这也为我们自己挣得了“凭实力单身”的美誉。如果你也是这样的,那么你需要好好了解一下贝叶斯公式的基本思想。

贝叶斯公式的基本思想

朴素贝叶斯由两部分组成,“朴素”是一种带有假设的限定条件,“贝叶斯”则指的是贝叶斯公式。合起来,朴素贝叶斯指的就是在“朴素”假设条件下运用“贝叶斯公式”。

显然,“朴素贝叶斯”是一条偏正短语,核心和重点是贝叶斯公式。贝叶斯公式与其说是一条公式,更不如说是一种思想。统计学中有两座山头,分别叫频率学派和贝叶斯学派,而这两座山头都有各自庞大的学识体系。这里本着现学现用的原则,只拣我们马上就能用的讲。

我们一般会把符号说明安排在数学解析部分,不过这里有两个概率符号需要提前介绍,它们是本章的主角。

● P(X) :这是概率统计中最基本的符号,表示X出现的概率。如在掷骰子的游戏中,P(6)就是指骰子出现数字“6”的概率。这个概率显然为1/6。

● P(X|Y) :这是条件概率的符号,比上面的概率符号中间多了一竖,代表条件。P(X|Y)的意思是在Y发生的条件下,X发生的概率。它是贝叶斯公式的主角。

是不是觉得距离完全了解条件概率还差那么一点点儿?上文我们一起了解了出题老师的心路历程,现在还是继续请这位出题老师补上这最后的一点点吧。

我们用P(D)代表选项D为错误选项的概率,在正确答案均匀分布时,概率值为25%。那么P(D|C)就代表选项C为错误选项时,D为错误选项的概率。这与单纯的P(D)有什么不同呢?别忘了,这位老师有一点癖好,选择了C为错误选项之后,会顺手把D也作为错误选项。现在的已知条件是选项C已经确定是错误选项了,在这种前提条件下,选项D是错误选项的概率,也即P(D|C)的值就远远超过了25%。这就是条件概率的意义。

对于条件概率,我还要多说一点儿。前面我们说线性模型是“钢铁直男”的典范,相比之下,条件概率以及后面的贝叶斯公式就是“直男们”理解少女之心的一把钥匙。

贝叶斯的基本逻辑

作为理科生或者程序员,引以为傲的除了身上的格子衬衫外,我们还有一样很重要的就是逻辑思维,对于很多事,譬如一些女生的流行观点,我们似乎天然地就喜欢抛出一句“真没逻辑”的评价,这也为我们自己挣得了“凭实力单身”的美誉。如果你也是这样的,那么你需要好好了解一下贝叶斯公式的基本思想。

贝叶斯公式的核心是条件概率,譬如P(B|A),就表示当A发生时,B发生的概率,如果P(B|A)的值越大,说明一旦发生了A,B就越可能发生。两者可能存在较高的相关性。

相关性就是贝叶斯公式要表达的哲学,明白了这一哲学,对于很多事情,特别是女生的流行观点,我们将豁然开朗。譬如很多男生都曾经被女朋友要求在节日送礼物,而理由多半是这么一句话:“我不是在乎礼物,而是在乎你用不用心。”很多男生想不明白:你要我送礼物,又说不在乎礼物,这是什么逻辑?

那么这里我要说:女生说的是有逻辑的!只不过与男生不一样,男生的逻辑偏重因果性,女生的逻辑偏重相关性。因果性很简单,就是A→B,但如果A和B满足相关性,情况则要复杂一些,譬如最经典的数据挖掘案例“尿布和啤酒”,年轻的爸爸会在买尿布的时候顺便买啤酒,这时尿布和啤酒就呈相关性,如果我们用P(尿布)来表示买尿布的概率的话,一旦P(尿布)的值增加,那么P(啤酒|尿布)的值也会增加。其意义是,当尿布的销量增加时,啤酒的销量也会增加,这就是相关性,但相关性不是因果性,二者虽然同时增长,但并不存在因果关系。

明白了这一点,男生就能明白女生的逻辑。对于“我不是在乎礼物,而是在乎你用不用心”这句话,我们用公式可以表达如下:

P(用心|送礼物)

那么,根据贝叶斯公式,当送礼物的发生概率越大,也即P(送礼物)的值越大, P(用心|送礼物)的值也就越大,也就表示你对这个女生越用心。这就是女生怎样利用相关性,通过送礼物来考察你是否用心。

好了,我们大致解释了贝叶斯公式。最后要说的是,相关性是建立在统计数据的基础之上的,所以“送礼物”和“用心”到底是否具有相关性,还需要进行社会学的调查。

用贝叶斯公式进行选择

如果你已经熟悉机器学习算法的套路,一定已经从上面对条件概率的描述中“闻”到了预测的味道。贝叶斯公式预测的核心思想就5个字——“看起来更像”。

在贝叶斯看来,世界不是静止和绝对的,而是动态和相对的,希望利用已知经验来进行判断。用“经验”进行“判断”,经验怎么来?有了经验怎么判断?一句话实际包含了两轮过程。

第一轮的分级:是已知类别而统计特征,即某一特征在该类中的出现概率,是把类别分解成特征概率的过程。

第二轮的还原:是已知特征而推测类别,这里将第一轮的结果用上,是把知道统计情况的特征还原成某一类的过程。

说到这里,就不能不提“先验”和“后验”了,这两个词儿看起来相当哲学,也确实是康德的《纯粹理性批判》中的主角。对于这里的“验”,主张认知的人将其解释成经验,主张实践的人将其解释成“实验”,在我看来,先验和后验不妨认为是两位诸葛亮,先验这位是事前诸葛亮,后验这位是事后诸葛亮。就以空城计来说,诸葛亮布阵的时候,是根据司马懿一贯的个性,断定他不敢进城,这是先验。等到司马懿真的来了,在城下犹豫不决,要退不退,诸葛亮一看就知道事妥了,这是后验。

贝叶斯版的预测未来

先验和后验是怎么用于预测的呢?这里我想展示一下我在中学时学会的看发型猜女同学的“技术”。假设我的班上一共有10位女同学,其中一位叫安吉利,中学时女生个子都差不多高,又穿着一样的校服,光看背影猜中谁是安吉利的概率是10%,基本靠蒙了,这就是先验概率,先记作P(安吉利)。但是有一天我突然发现,安吉利同学特别喜欢扎马尾,不过扎马尾又不是什么独占的发明专利,而且这个年龄阶段的女孩子又都爱扎马尾,所以,不是所有扎马尾的女同学都叫安吉利。

怎么办呢?我又利用上课的时间统计了一下,班上女同学一共有三种发型,扎马尾的概率大概为30%,记作P(马尾)。而安吉利同学真的非常喜欢扎马尾,她扎马尾的概率高达70%,记作P(马尾|安吉利)。这里我们用上了前面介绍的条件概率,P(马尾|安吉利)的意思是,在女同学是安吉利的前提条件下发型是马尾的概率,在贝叶斯公式中这又称为似然度(Likelihood)。有了这三个统计数据,我心里就有底了,往后见到扎马尾的女同学,有两成多的概率就是我们的安吉利。

其中的奥秘就是贝叶斯公式。也许你已经察觉,扎马尾的女同学中她是安吉利的概率也是一种条件概率,记作P(安吉利|马尾),这就是后验概率。根据贝叶斯公式,我们有:

P(马尾)·P(安吉利|马尾)= P(安吉利)·P(马尾|安吉利)

代入我们牺牲宝贵的上课时间得到的统计数据,则可算出:

P(安吉利|马尾)=10%×70%/30%=23.3%

前面我们说,用先验和后验进行选择判断要分成两个阶段,现在有了似然度就好解释了。先验概率是已经知道的,而我们通过经验或实验要了解的就是这个似然度,知道似然度再加上先验,我们就能知道后验概率了。

可惜的是,虽然贝叶斯公式能够告诉我谁是安吉利,但是它没办法告诉我。为什么安吉利同学会对马尾如此执迷。

下次再聊。

以上内容摘自《机器学习算法的数学解析与Python实现》一书,经出版方授权发布。

推荐阅读

《机器学习算法的数学解析与Python实现》

入门机器学习的第一本书。从生活案例中理解算法,发现算法的乐趣,再把算法应用到机器学习中,让你零基础掌握算法精髓,快速进入人工智能开发领域。

木羊同学,原名莫凡,新技术深度爱好者,曾经从事信息安全前沿技术跟踪研究和数据分析工作,在各类信息安全类技术期刊杂志发表文章五十余篇,现转为投身高端知识“白菜化”项目,希望能让将更多听起来高大上的名词沾一沾人间烟火,成为日常中生活真正用得上的知识,著有《机器学习算法的数学解析与Python实现》。个人公众号“睡前机器学习”,个人知乎号“木羊”。

欢迎扫码加入读者群与作者直接交流

机器学习 学习&交流

扫码加入互动群

往期精彩回顾

 书讯 | 大数据战略上升为国家战略,悄悄告诉你大数据大牛都在读的8本书

收藏 | 有图有真相——图神经网络到底是什么?
干货 | 用户画像的核心技术盘点

上新 | 带你了解增强现实的基础理论、核心技术、系统架构以及激动人心的应用和未来

相关文章:

  • 当当 “书香节” | 每满100减50! 优惠码再减30!170元买400块的书!
  • 听说出版圈有人要模仿李佳琦直播卖书了?
  • “乔帮主”的云技术实践绝学,“降云十八掌”
  • 想转行做数据产品经理?这份书单赶紧收藏起来
  • 机器智能正在代替人类做的5件事
  • 五一在家宅5天?前端开发工程师必读书单送给你!(文末大彩蛋!)
  • 一文掌握数据库最核心的功能——优化器
  • 干货收藏!快速掌握用户画像项目的开发流程(附流程图)
  • OpenShift : 通往云原生、DevOps、微服务和Serverless的大门
  • 何谓云原生?如何走近云原生?
  • 不只是围棋,除了AlphaGo,肖博士和你聊聊不一样的强化学习
  • 73页PPT,教你从0到1构建用户画像系统(附下载)
  • 【第3期】聊聊G1中的引用集
  • 学Java最权威、最畅销、口碑最佳的书都在这了!花170买400的书
  • 教你怎么花170元买400块的书【机器学习算法与实战篇】
  • AHK 中 = 和 == 等比较运算符的用法
  • docker-consul
  • export和import的用法总结
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Java面向对象及其三大特征
  • k8s 面向应用开发者的基础命令
  • linux学习笔记
  • PHP那些事儿
  • Spring Cloud中负载均衡器概览
  • windows下mongoDB的环境配置
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 从0到1:PostCSS 插件开发最佳实践
  • 码农张的Bug人生 - 见面之礼
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 我这样减少了26.5M Java内存!
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 一些css基础学习笔记
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • MyCAT水平分库
  • ​queue --- 一个同步的队列类​
  • #Java第九次作业--输入输出流和文件操作
  • (pytorch进阶之路)扩散概率模型
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (分布式缓存)Redis分片集群
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (四)图像的%2线性拉伸
  • (学习日记)2024.01.09
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)nsfocus-绿盟科技笔试题目
  • *上位机的定义
  • .NET 分布式技术比较
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [android] 请求码和结果码的作用
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析