机器学习–朴素贝叶斯模型原理

机器学习–朴素贝叶斯模型原理朴素贝叶斯中的朴素是指特征条件独立假设,贝叶斯是指贝叶斯定理, 我们从贝叶斯定理开始说起吧.1.贝叶斯定理贝叶斯定理是用来描述两个条件概率之间的关系1).什么是条件概率?如果有

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

朴素贝叶斯中的朴素是指特征条件独立假设, 贝叶斯是指贝叶斯定理, 我们从贝叶斯定理开始说起吧.

1. 贝叶斯定理

贝叶斯定理是用来描述两个条件概率之间的关系

1). 什么是条件概率? 

如果有两个事件A和B, 条件概率就是指在事件B发生的条件下, 事件A发生的概率, 记作P(A|B).

若P(A)>0, 则满足以下公式

机器学习--朴素贝叶斯模型原理

若P(B) > 0, 同理.

通过条件概率公式我们可以直接推出概率的乘法公式.

2). 概率的乘法公式

机器学习--朴素贝叶斯模型原理

进而通过概率的乘法公式, 可以推出贝叶斯公式.

3). 贝叶斯公式

机器学习--朴素贝叶斯模型原理

贝叶斯公式同样满足条件P(A)>0, P(B)>0, 在该公式中, A和B均代表单个事件, 但是当B代表一个事件组时, 公式又是如何呢?在介绍之前, 引出全概公式

4). 全概公式

当事件组B1, B2, B3, ….Bn是完备事件组(两两互不相容, 其和为全集), 并且当P(Bn) >0时, 对于任意一个事件A, 满足全概公式:

机器学习--朴素贝叶斯模型原理

推导过程如下:

机器学习--朴素贝叶斯模型原理

那么, 此时的完备事件组B1, B2, B3, …Bn对于任意事件A的贝叶斯公式可写成:

机器学习--朴素贝叶斯模型原理

上式中P(Bi)被称为先验概率, P(Bi|A)被称为后验概率. 

5). 先验概率, 后验概率分别指什么呢? (举例说明)

某地区10月份下大暴雨的概率为0.9. 下大暴雨时, 发洪水的概率是0.6; 不下大暴雨时, 发洪水的概率为0.02, 试求该地区已发洪水, 下暴雨的概率?

记A1=下大暴雨, B1=发洪水, A2=不下大暴雨, B2=不发洪水, 由题意知, P(A1) = 0.9, P(B1|A1) = 0.6, P(B1|A2) = 0.02, 根据贝叶斯公式得: P(A1|B1)=0.9*0.6/[0.9*0.6 + (1-0.9)*0.02] = 0.996.

从上述例子中, 先验概率(下大暴雨的概率)很容易从现有条件中得出, 而后验概率(已经发洪水时下大暴雨的概率)需要根据附加信息用贝叶斯公式去计算得出, 下面引出百度百科对于这两者的定义.

先验概率(prior probability)是指根据以往经验和分析得到的概率,如全概率公式,它往往作为”由因求果”问题中的”因”出现的概率

后验概率是指在得到“结果”的信息后重新修正的概率,是“执果寻因”问题中的”果”。先验概率与后验概率有不可分割的联系,后验概率的计算要以先验概率为基础.

事情还没有发生,要求这件事情发生的可能性的大小,是先验概率。事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小,是后验概率。

将定义与例题相结合就能更好的理解先验概率和后验概率.

6). 如果A也是事件组时, 公式又是如何呢?

假设现有两个事件A1和A2, 公式则可改写为:

机器学习--朴素贝叶斯模型原理

要想求满足条件A1和A2时Bi的概率, 关键在于求P(A1, A2|Bi)的概率, 在这之前需要了解事件的独立性:

通常情况下, 条件概率P(A|B)与无条件概率P(A)是不相等的, 如果P(A|B)=P(A), 则说明事件B对事件A的发生没有任何影响, 也就是说事件A与B是相互独立的, 又根据我们上面的概率乘法公式可以推出P(AB)=P(A|B)P(B)=P(A)P(B).

现假设事件A1和事件A2关于事件B独立, 根据事件的独立性, 则有P[(A1|B)(A2|B)]=P(A1|B)P(A2|B), 又由于只有在事件B这个共同条件下事件A1才会与事件A2独立, 我们不妨将式子改写为P(A1, A2|B) = P(A1|B)P(A2|B), 从而可以将我们的贝叶斯公式改写为:

机器学习--朴素贝叶斯模型原理

假设事件组Am中的所有事件关于完备事件组Bn中任意一个事件两两相互独立, 进而公式可以推广为:

机器学习--朴素贝叶斯模型原理

要想上式成立, 则必须要满足前提条件: 事件组Am中的所有事件关于事件组Bn的任意一个事件两两相互独立, 到这里贝叶斯定理部分就介绍完毕了,

2. 特征条件独立假设

将上面的公式应用到分类问题中, Am表示m个特征, Bn表示n个分类标签, 而要想上式成立, 要满足前提条件: m个特征关于n个分类标签中任意一个两两相互独立, 也就是特征条件独立, 而”朴素”二字表示特征条件独立假设, 即假设特征条件独立(前提条件), 想必这也就是为什么”朴素”二字恰好在贝叶斯之前.

3. 朴素贝叶斯模型

朴素贝叶斯分类模型要做的事就是在先验概率的基础上将数据集归为n个标签中后验概率最大的标签(基于最小错误率贝叶斯决策原则).

由于数据集的特征个数m和分类标签总数n是固定不变的, 即贝叶斯定理中分母不变, 所以要求最大值, 只需求出分子中的最大值, 即下式中的最大值

机器学习--朴素贝叶斯模型原理

 

又可利用argmax()函数, 表示为最大值的类别, 比如X1 = argmax(f(x))表示当f(x)中的自变量x=X1时, f(x)取最大值

机器学习--朴素贝叶斯模型原理

即求自变量Bi的值, 当Bn = Bi时, 后验概率最大, 上式也称为朴素贝叶斯推导式

通过上式, 影响最终结果的有先验概率和条件概率, 另外满足特征条件独立假设时, 上式才会成立. 即当先验概率, 条件概率和特征条件独立假设均成立时, 根据朴素贝叶斯推导式得出的结果具有真正最小错误率..

1) 先验概率

当先验概率已知时, 可以直接通过公式计算.

当先验概率未知时, 基于最小最大损失准则(让其在最糟糕的情况下, 带来的损失最小)或者N-P(聂曼-皮尔逊)决策准则来进行分类

关于这部分的具体细节可参看 https://wenku.baidu.com/view/85e559104431b90d6d85c704.html

2) 条件概率(举例说明)

现需对某产品评价中”质量好, 价格便宜, 颜值高”这三个词语作出统计, 假设它们之间两两相互独立. 已知某论坛上关于该产品的1000条评价中未购买用户概率为0.2, 未购买用户的评价中”质量好”出现0次, “价格便宜”出现100次, “颜值高”出现150次; 已购买用户的评价中”质量好”出现600次, “价格便宜”出现500次, “颜值高”出现700次, 试问评价中同时出现”质量好, 价格便宜, 颜值高”这三个词语的用户是未购买用户的概率.

首先, 特征条件相互独立, 且先验概率已知, 可直接列举出我们的公式:

机器学习--朴素贝叶斯模型原理

事件B1表示未购买用户, 事件B2表示已购买用户, 事件A1, A2, A3则分别表示”质量好, 价格便宜, 颜值高”.

由题知, P(A1|B1)=0, 分子为0, P(B1|A1, A2, A3)也就为0, 如果我们根据计算结果直接就下定义: 做出”质量好, 价格便宜, 颜值高”这个评价的用户不可能是未购买用户, 会有点以偏概全了, 比如现新有一条包含这三个词语的新评价且为未购买用户, 经询问, 该用户在体验朋友(已购买用户)的产品一段时间后, 进而在论坛作此评价. 对于此种情况, 重新计算吗?假设该用户在半个月, 一个月…后才出现, 我们要等半个月, 一个月..再计算的话, 有点不切合实际.

对于此种情况, 法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率, 所以加法平滑也叫做拉普拉斯平滑. 假定训练样本很大时, 每个分量计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。(参考自博文: https://www.cnblogs.com/bqtang/p/3693827.html)

应用在我们的示例中就是, P(A1|B1)=1/203, P(A2|B1)=101/203, P(A3|B1)=151/203, 进而求解即可

3) 特征条件独立假设

假设特征条件独立, 但是实际中往往不是真正独立甚至有时特征之间存在某种联系(比如年龄和星座), 这时就需通过特征选择, 主成分分析等方法尽可能让特征之间独立.

 

 以上便是我本次分享的内容,如有任何疑问,请在下方留言,或在公众号【转行学数据分析】联系我!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167886.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 安卓的日历_公认不卡的安卓手机

    安卓的日历_公认不卡的安卓手机一款安卓日历,包含周日历、月日历以及滑动切换视图

  • TDA2030的功率放大电路详细教程「建议收藏」

    TDA2030的功率放大电路详细教程「建议收藏」本电路可以将是利用运放TDA2030A制作的功率放大器。电源电压为±12V至±22V。输出的最大功率为18W。该电路为深度负反馈电路,输出电压的放大倍数约为Av=R1/R2=32.3(具体放大倍数请参考模电书籍负反馈部分)。其中R4选用大功率水泥电阻,因为空载时流过R4的电流会过大。D1与D2为二极管,有黑线或者银色线的一端为负极。没有标有正负号的电容为无极电容,不需要区别正负极。标有正负…

  • wxpython入门教程_wxPython 入门教程

    wxpython入门教程_wxPython 入门教程这篇文章是关于wxPython,但wxPython实际是两件事物的组合体:Python脚本语言和GUI功能的wxWindows库(关于wxWindows的介绍,请参阅developerWorks上的“细述wxWindows”)。wxWindows库是为了最大可移植性的C/C++库,而抽取GUI功能。所以wxWindows应用程序与生俱来地可以运行在Win…

  • Tips–解决BeatsX开机白灯闪三下无法连接问题(附拆机教程)[通俗易懂]

    Tips–解决BeatsX开机白灯闪三下无法连接问题(附拆机教程)[通俗易懂]解决BeatsX开机白灯闪三下无法连接问题(附拆机教程)问题描述解决方法BeatsX拆机教程问题描述BeatsX耳机用了有一年左右,但是突然有一天,开机的时候只有白灯闪三下,然后连接不上蓝牙,即使重启也没有办法。这个问题困扰了很久,我一度以为是因为里面的固件出了问题,然后在官网刷固件的时候发现固件是最新的无法在刷了,也因此意外收获了修改beatsX名字的方法,哈哈,算是因祸得福吧。最后通过咨…

  • C语言自定义函数如何返回数组

    C语言自定义函数如何返回数组C语言自定义函数如何返回数组 C语言研究中心 CTO  9个月前(01-28)  4759次浏览  5个评论最近看到一些同学问题,有提到说:如何在一个函数中返回数组呢?能否直接在自定义函数中,写成char*类型返回值,直接返回呢?,代码如下:   直接返回str数组名(注意不需要加&,还有好多同学犯这个错)但事实上,运行结果并非正常,我们尝试在

  • cloudsim仿真_虚拟机cpu怎么分配

    cloudsim仿真_虚拟机cpu怎么分配CloudSim源码分析之虚拟机分配分类: 云计算 CloudSim2011-05-1514:32 1629人阅读 评论(10) 收藏 举报虚拟机integerlistnulltableobject 原文出处:虚拟机分配指的是,选择满足特定条件(内存、软件环境配置等)的主机创建虚拟机的过程,这个过程由Datacenter对象负责。VmAllocationPolicy这

    2022年10月13日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号