基本原理

从统计学知识回到我们的数据分析。假如我们的分类模型样本是:

即我们有m个样本,每个样本有n个特征,特征输出有k个类别,定义为C1,C2,…,Ck,。从样本我们可以学习得到朴素贝叶斯的先验分布P(Y=Ck)(k=1,2,…,K),接着学习到条件概率分布P(X=x|Y=Ck)=P(X1=x1,X2=x2,…,Xn=xn|Y=Ck),然后我们就可以用贝叶斯公式得到X和Y的联合分布P(X,Y)了。联合分布P(X,Y)定义为:

从上面的式子可以看出P(Y=Ck)比较容易通过最大似然法求出,得到的P(Y=Ck)就是类别Ck在训练集里出现的频数。但是P(X=x|Y=Ck)=P(X1=x1,X2=x2,…,Xn=xn|Y=Ck)很难求出,这是一个超级复杂的有n个维度的条件分布。朴素贝叶斯模型在这里做了一个大胆的假设,即X的n个维度之间相互独立,这样就可以得出:

从上式可以看出,这个很难的条件分布大大简化了,但是这也可能带来预测的不准确性。如果特征之间非常不独立怎么办?如果真是非常不独立的话,那就尽量不要使用朴素贝叶斯模型,而考
虑使用其他的分类方法比较好。但是一般情况下,样本的特征之间独立这个条件的确是弱成立的,尤其是数据量非常大的时候。虽然牺牲了准确性,但是模型的条件分布的计算大大简化了,这就是贝叶斯模型的选择。
最后回到我们要解决的问题,我们的问题是给定测试集的一个新样本特征(X1(test),X2(test),…,Xn(test)),我们如何判断它属于哪个类型?
既然是贝叶斯模型,当然是用后验概率最大化来判断分类了。只要计算出所有的k个条件概率P(Y=Ck|X=X(test)),然后找出最大的条件概率对应的类别,这就是朴素贝叶斯的预测了。

推导过程

我们预测的类别Cresult是使P(Y=Ck|X=X(test))最大化的类别,数学表达式为:

由于对于所有的类别计算P(Y=Ck|X=X(test))时,上式的分母是一样的,都是P(X=X(test)) ,因此,预测公式可以简化为:

接着,利用朴素贝叶斯的独立性假设,就可以得到通常意义上的朴素贝叶斯推断公式:

朴素贝叶斯的参数估计

只要求出P(Y=Ck)和P(Xi=Xi(test)|Y=Ck)(i=1,2,…,n),通过
比较就可以得到朴素贝叶斯的推断结果。那么,如何通过训练集计算这两个概率呢?
对于P(Y=Ck),比较简单,通过极大似然估计很容易得到P(Y=Ck)为样本类别Ck出现的概率,即样本类别Ck出现的次数mk除以样本总数m。
对于P(Xi=Xi(test)|Y=Ck)(i=1,2,…,n),取决于先验条件:
(1)如果Xj是离散值,可以假设Xj符合多项式分布,得到P(Xi=Xi(test)|Y=Ck)是在样本类别Ck中,Xi(test)出现的概率。即:

其中mk为样本类别Ck出现的次数,而mkI(test)为类别为Ck的样本中,第i维特征Xi(test)出现的次数。
某些时候,可能某些类别在样本中没有出现,这样可能导致P(Xi=Xi(test)|Y=Ck)为0,这样会影响后验的估计,为解决这种情况,引入了拉普拉斯平滑,即此时有:

其中 λ \lambda λ为一个大于0的常数,常取为1。 O!为第i特征的取值个数。
(2)如果Xi是非常稀疏的离散值,即各个特征出现的概率很低,可以假设Xi符合伯努利分布,即特征Xi出现记为1,不出现记为0。即只要Xi出现即可,不关注Xi的次数。这样得到P(Xi=XI(test)|Y=Ck)是在样本类别Ck中,Xi(test)出现的概率。此时有:

其中,Xi(test)取值为0和1。
(3)如果Xi是连续值,可以有两种方法。
第一种是把连续型变量分成j个箱,把连续型强行变成分类型变量。分箱后,将每个箱中的均值 x i ˉ \bar{x_i} xi​ˉ​当作一个特征Xi上的取值,然后计算箱j中Y=1所占的比例,就是P(xi|Y=1)。这个过程的主要问题是,箱子不能太大也不能太小,如果箱子太大,就失去了分箱的基本意义,如果箱子太小,可能每个箱子里就没有足够的样本来帮助计算P(xi|Y),因此必须要适当地衡量分箱效果。
但其实,没有必要这样做,因为可以直接通过概率论中来计算连续型变量的概率分布。在分类型变量的情况中,比如掷骰⼦子的情况,有且仅有六种可能的结果1~6,并且每种结果的可能性为1/6。此时每个基本的随机事件发生的概率都是相等的,所以可以使1/N用来表示有N个基本随机事件可以发生的情况。
基于此,来思考一个简单的问题:汉堡王向客户承诺说他们的汉堡⾄至少是100g一个,但如果去汉堡王买个汉堡,可以预料到它肯定不是标准的100g。设汉堡重量为特征Xi,100g就是取值,买到一个汉堡是100g的概率P(100g|Y)是多少呢?如果买n个汉堡,很可能n个汉堡都不一样重,只要称重足够精确,100.000001g和100.00002gi就可以是不一致的。这种情况下,买无限个汉堡,可能得到无限个重量,有无限个基本随机事件的发生,所以有:
P(100g|Y) = lim ⁡ n → ∞ 1 N \lim_{n\to\infty}\large\frac1{N} limn→∞​N1​ = 0
即买到的汉堡刚好是100g概率为0。当⼀一个特征下有无数种可能发生的事件时,这个特征的取值就是连续型的,比如现在的特征“汉堡的重量”。从上面的例子可以看得出,当特征为连续型时,随机取到某一个事件发生的概率就为0
换一个问题,随机买一个汉堡,汉堡的重量量在98g~102g之间的概率是多少?
求解概率P(98g<x<102g)。随机购买100个汉堡,称重后记下所有重量在98g~102g之间的汉堡个数,假设为m,则有:
P(98g<x<102g)=m/100
如果基于100个汉堡绘制直方图,并规定每4g为一个区间,横坐标为汉堡的重量分布,纵坐标为区间上汉堡的个数。

可以看到最左边的图。m就是中间的浅绿⾊色区间中所对应的纵坐标轴。则对于概率,可以变换为:
P(98g<x<102g)= m ∗ 4 100 ∗ 4 \Large\frac{m*4}{100*4} 100∗4m∗4​= 浅 绿 色 区 间 的 面 积 直 方 图 中 所 有 区 间 的 面 积 \large\frac{浅绿色区间的面积}{直方图中所有区间的面积} 直方图中所有区间的面积浅绿色区间的面积​

如果我们购买一万个汉堡并绘制直方图(如中间的图),将直方图上的区间缩小,P(98g<x<102g)依然是所有浅绿色区域的面积除以所有柱状图的面积,直方图变得更更加平滑,更像一座山了。假设购买10W个,或者无限个汉堡,则可以想象直方图最终会变成仿佛一条曲线,而汉堡重量的概率P(98g<x<102g)依然是所有浅绿色柱子的面积除以曲线下所有柱状图的总面积。当购买无数个汉堡的时候形成的这条曲线就叫做概率密度曲线(probability density function,PDF)
一条曲线下的面积,就是这条曲线所代表的函数的积分。如果定义曲线可以用函数f(x)来表示,整条曲线下的面积就是:
∫ − ∞ + ∞ f ( x ) d x \int_{-\infty}^{+\infty}f(x)dx ∫−∞+∞​f(x)dx
其中dx是f(x)在x上的微分。在某些特定的f(x)下,可以证明,上述积分等于1。总面积是1,这说明一个连续型特征X的取值x取到某个区间[ xi, xi+ ϵ \epsilon ϵ ]之内的概率,为这个区间上概率密度曲线下的面积,所以特征Xi在区间[ xi, xi+ ϵ \epsilon ϵ ]中取值的概率可以表示为:

非常幸运的是,在后验概率的计算过程中,可以将常量 ϵ \epsilon ϵ抵消掉,然后就可以利用的f(xi)的某种变化来估计P(xi|Y)了。现在,就将求解连续型变量下某个点取值的概率问题,转化成了求解一个函数f(x)在点xi上的取值问题。接下来,只要找到f(x),就可以求解出不同的条件概率了。
在现实中,我们往往假设f(x)是满足某种统计学中的分布的,最常见的就是高斯分布(正态分布,像购买汉堡的例子),常用的还有伯努利分布,多项式分布。这些分布对应着不同的贝叶斯算法,其实他们的本质都是相同的,只不过计算的f(x)不同。每个f(x)都对应着一系列需要去估计的参数,因此在贝叶斯中,fit过程其实是在估计对应分布的参数,predict过程是在该参数下的分布中去进行概率预测。

机器学习算法之朴素贝叶斯模型相关推荐

  1. 机器学习算法基础——朴素贝叶斯算法

    26.朴素贝叶斯算法原理 联合概率和条件概率 联合概率:包含多个条件,且所有条件同时成立的概率 记作:P(A,B) P(A,B)=P(A)P(B) 条件概率:就是事件A在另外一个事件B已经发生条件下的 ...

  2. 人工智能算法一朴素贝叶斯模型

    简介 朴素贝叶斯模型主要是解决逻辑回归多维不能解耦的情况. 前提描述 在讲解朴素贝叶斯模型的时候先回归下逻辑回归的函数. 如果计算多维的时候比如在婚恋网的预测的时候,根据x1身高,x2体重,x3收入, ...

  3. 机器学习算法总结--朴素贝叶斯

    这次需要总结的是朴素贝叶斯算法,参考文章: <统计学习方法> 机器学习常见算法个人总结(面试用) 朴素贝叶斯理论推导与三种常见模型 朴素贝叶斯的三个常用模型:高斯.多项式.伯努利 简介 朴 ...

  4. 朴素贝叶斯基础【机器学习算法一朴素贝叶斯1】

    基础知识回顾 (上述内容引自李航<统计学习方法>) 过去的7天当中,有3天下雨,4天没有下雨.用0代表灭有下雨,而1代表下雨,我们可以用一个数组来表示: y=[0,1,1,0,1,0,0] ...

  5. 朴素贝叶斯实例(肿瘤良性与恶性)【机器学习算法一朴素贝叶斯5】

    import matplotlib.pyplot as plt import numpy as np#导入肿瘤数据集 from sklearn.datasets import load_breast_ ...

  6. 伯努利朴素贝叶斯【机器学习算法一朴素贝叶斯2】

    伯努利朴素贝叶斯方法适合于伯努利分布(即二项分布或0-1分布)的数据集. import numpy as np from sklearn.naive_bayes import BernoulliNB ...

  7. 机器学习第六章之朴素贝叶斯模型

    朴素贝叶斯模型(了解) 6.1 朴素贝叶斯模型算法原理 6.1.1 一维特征向量下的贝叶斯模型 6.1.2 二维特征向量下的贝叶斯模型 6.1.3 n维特征向量下的贝叶斯模型 6.1.4 朴素贝叶斯模 ...

  8. 机器学习:朴素贝叶斯模型算法原理(含实战案例)

    机器学习:朴素贝叶斯模型算法原理 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页

  9. 一步步教你轻松学朴素贝叶斯模型算法理论篇1

    一步步教你轻松学朴素贝叶斯模型理论篇1 (白宁超2018年9月3日17:51:32) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受欢迎,对 ...

最新文章

  1. 多花5美元提速500%,树莓派新品Zero 2 W发布
  2. 十亿级视频播放技术优化揭密
  3. 诺曼门的十个产品_用户决策与产品设计
  4. 现在还有没有人不学 Python 的?
  5. 解决php的It is not safe to rely on the system’s timezone settings的问题
  6. how to find data source of F4 help in web client UI
  7. 关于new handler与default、delete关键字
  8. iSCSI存储设备的udev绑定 以及iscsi重启卡住解决方法
  9. PAT A 1065. A+B and C (64bit) (20)
  10. VS2019添加自定义发布本地的Nuget(.nupkg文件)
  11. SIM900A—基础指令
  12. ROS激光雷达小车自主导航学习(一)(持续更新中)
  13. mzy git学习,禁用Fast forward的普通合并(六)
  14. 拿到offer后 还应该继续去面试?
  15. Asuswrt RT-AC68U 华硕路由器文件删除漏洞 栈溢出
  16. 2009 year English Inprovement for IT developments
  17. 对 iOS 14.2 糟糕的音乐控制界面的思考
  18. 微信小程序时间格式转换
  19. ESP32编译运行ADF音频库
  20. 网站常用的favicon.ico文件

热门文章

  1. 分布式专题-分布式消息通信之ActiveMQ02-ActiveMQ原理分析(上)
  2. 昂首那瞬间,球已停止转动——HTML5实现3D球效果
  3. 什么是拷贝构造函数?拷贝构造函数何时被调用
  4. 下一代微服务架构——服务网格Service Mesh
  5. 机器学习8—聚类算法之DBSCAN和Birch算法
  6. mac装机系列:iterm2顶部栏没有了怎么办?
  7. 指定代码放哪个cpu运行
  8. 密码存储之PyQt5知识点储备
  9. pulse sensor心率传感器
  10. Java synchronized关键字实现线程同步