0.写在前面

朴素贝叶斯实际上是非常简单的一种机器学习方法,我们在之前的很多地方都讲过了,所以这里我们不再阐述具体的原理,可以移步:朴素贝叶斯。
但是,对于讨论班里,争论最多的就是课后的2个习题,因此,我们重点放在这两个习题上。他们分别是:

4.1 用极大似然估计法推出朴素贝叶斯法中的概率估计公式(4.8)及公式(4.9)。
4.2 用贝叶斯估计法推出朴素贝叶斯法中的概率估计公式(4.10)及公式(4.11)。

1. 极大似然估计法

极大似然估计方法是非常常见的估计方法(MLE)。而这里的公式4.8和公式4.9分别是:

P(Y=ck)=∑i=1NI(yi=ck)N(4.8)

P(Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(y_i=c_k)}{N} (4.8)

P(X=al|Y=ck)=∑i=1NI(xi=al,yi=ck)N(4.9)

P(X=a_l|Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(x_i=a_l,y_i=c_k)}{N} (4.9)

这里的4.9我简化了一下,其实道理都是一样的,那个j只不过是表示第几个特征。
那么我们怎么推呢,首先我们来推公式4.8。
目的式:P(Y=ck)=∑i=1NI(yi=ck)NP(Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(y_i=c_k)}{N}
为了方便计算,我们令P(Y=ck)=θk,Nk=∑i=1NI(yi=ck)P(Y=c_k)=\theta_k,N_k=\displaystyle \sum_{i=1}^{N}I(y_i=c_k),N为样本总数。

我们想求的是极大似然函数值,那么这就是求极值的问题,而这个又有一个约束条件:∑i=1Nθi=1\displaystyle \sum_{i=1}^{N}\theta_i=1
于是,我们就可以使用拉格朗日乘子法来解决带有约束条件的极值问题。

不知道大家还记得拉格朗日乘子法怎么做么。首先就是把约束条件作为其中一项,然后乘以λ\lambda后与原函数相加,求导等于0,解方程即可。

对于这题,我们的似然函数是:

L(θk,y1,y2,...,yn)=∏i=1np(yi)=∏i=1nθNkk

L(\theta_k,y_1,y_2,...,yn)=\prod_{i=1}^np(y_i)=\prod_{i=1}^n\theta_k^{N_k}

取对数,称为对数似然函数,结果为:l(θk)=Ln(L(θk))=∑k=1NNkInθkl(\theta_k)=Ln(L(\theta_k))=\displaystyle \sum_{k=1}^{N}N_kIn\theta_k

最终的拉格朗日乘子法得到的函数为l(θk,λ)=∑k=1NNkInθk+λ(∑i=1Nθi−1)l(\theta_k,\lambda)=\displaystyle \sum_{k=1}^{N}N_kIn\theta_k+\lambda(\sum_{i=1}^{N}\theta_i-1)

那么求导:

⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪∂l∂θ1=N1θ1+λ=0∂l∂θ2=N2θ2+λ=0∂l∂θ3=N3θ3+λ=0⋅⋅⋅∂l∂θn=Nnθn+λ=0∑k=1nθk=1

\begin{cases} \frac{\partial l}{\partial \theta_1}=\frac{N_1}{\theta_1}+\lambda=0\\ \frac{\partial l}{\partial \theta_2}=\frac{N_2}{\theta_2}+\lambda=0\\ \frac{\partial l}{\partial \theta_3}=\frac{N_3}{\theta_3}+\lambda=0\\ ···\\ \frac{\partial l}{\partial \theta_n}=\frac{N_n}{\theta_n}+\lambda=0\\ \displaystyle \sum_{k=1}^{n}\theta_k=1 \end{cases}

我们先对每一个θi\theta_i求值,然后全部加起来后,得到λ=−N\lambda=-N,带入约束条件就求得我们需要的值了:

θk=NkN

\theta_k=\frac{N_k}{N}

P(Y=ck)=∑i=1NI(yi=ck)N

P(Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(y_i=c_k)}{N}

同样的,具有条件概率的写法也是如此。
我们假设:μlk=p(x=al|y=ck)\mu_{lk}=p(x=a_l|y=c_k),其他的假设如上述所说。
则似然函数:

L(μ;(x1,y1),(x2,y2),...,(xn,yn))=∏i=1Np(xi,yi)=∏l=1L∏k=1K(μlk⋅θk)Nlk

L(\mu;(x_1,y_1),(x_2,y_2),...,(x_n,y_n))=\prod_{i=1}^Np(x_i,y_i)=\prod_{l=1}^L\prod_{k=1}^K(\mu_{lk}·\theta_k)^{N_{lk}}
同样的,取似然估计以后,得出的结论和之前的一样,因此我们也会得出相同的结论: μlk=NlkNk\mu_{lk}=\frac{N_{lk}}{N_k}。

2. 贝叶斯估计法

对于第二题,我想,大家应该知道贝叶斯公式:

p(X=al|Y=ck)=p(X=al,Y=ck)p(Y=ck)

p(X=a_l|Y=c_k)=\frac{p(X=a_l,Y=c_k)}{p(Y=c_k)}
其实如果上下都约掉N就可得:

p(X=al|Y=ck)=∑i=1NI(xi=al,yi=ck)∑i=1NI(yi=ck)

p(X=a_l|Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(x_i=a_l,y_i=c_k)}{\displaystyle \sum_{i=1}^{N}I(y_i=c_k)}
看过这篇 语言模型的同学都会知道,这里是为了防止0概率的出现而设置的数据平滑处理:

p(X=al|Y=ck)=∑i=1NI(xi=al,yi=ck)+λ∑i=1NI(yi=ck)+Sjλ

p(X=a_l|Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(x_i=a_l,y_i=c_k)+\lambda}{\displaystyle \sum_{i=1}^{N}I(y_i=c_k)+S_j\lambda}

同样的4.11也是一样可以得到,这里就不赘述了。

3. 极大似然估计与贝叶斯估计的不同。

贝叶斯估计与极大似然估计的一个主要不同就在于,贝叶斯估计有一个先验概率,而极大似然估计没有,准确说是每种可能的先验估计都相等,也就忽略了。

但是贝叶斯的先验估计也并非是一直准确的,如果对于先验估计有一个很透彻的了解,那么贝叶斯估计应当是比较好用的。但是实际上,很多情况下,我们并不知道先验概率分布,这就导致很多时候,先验概率分布也是一种猜测,猜得对了,效果好,猜的不对,效果就不好。

有的说,极大似然估计是对点估计,而贝叶斯估计是对分布估计。我觉得其实是差不多的。

统计学习方法——朴素贝叶斯相关推荐

  1. 统计学习方法|朴素贝叶斯原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  2. matlab贝叶斯判别后验概率,统计学习方法——朴素贝叶斯法、先验概率、后验概率(示例代码)...

    朴素贝叶斯法,就是使用贝叶斯公式的学习方法,朴素就是它假设输入变量(向量)的各个分量之间是相互独立的.所以对于分量之间不独立的分布,如果使用它学习和预测效果就不会很好. 简化策略 它是目标是通过训练数 ...

  3. 李航统计学习方法-朴素贝叶斯

    朴素贝叶斯法 朴素贝叶斯(naïve Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法[1]. 对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布:然 后基于此模型, ...

  4. 复习04统计学习方法(朴素贝叶斯算法Naive Bayes)---图片版

  5. 朴素贝叶斯法的参数估计——贝叶斯估计及其Python实现

    统计学习方法--朴素贝叶斯法原理 1. 贝叶斯估计 1.1 为什么要用贝叶斯估计(极大似然的缺点) 1.2 贝叶斯估计原理 贝叶斯估计的算法过程合极大似然估计的算法过程一模一样,代码也几乎一模一样,只 ...

  6. matlab 朴素贝叶斯模型 代码及其案例

    简介 朴素贝叶斯分类器(Naive Bayes Classifier 或 NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率.同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算 ...

  7. 统计学习方法:朴素贝叶斯

    作者:桂. 时间:2017-04-20  18:31:37 链接:http://www.cnblogs.com/xingshansi/p/6740308.html 前言 本文为<统计学习方法&g ...

  8. 【统计学习方法】朴素贝叶斯对鸢尾花(iris)数据集进行训练预测

    本文摘要 · 理论来源:[统计学习方法]第三四章 朴素贝叶斯 · 技术支持:pandas(读csv).numpy.sklearn.naive_bayes.GaussianNB(高斯朴素贝叶斯模型).s ...

  9. 统计学习方法笔记(三)-朴素贝叶斯原理及python实现

    朴素贝叶斯 条件概率 特征条件独立假设 朴素贝叶分类器 朴素贝叶斯分类算法原理 学习与分类算法 朴素贝叶斯算法原理 模型 多项式模型 高斯模型 伯努利模型 多项式模型的朴素贝叶斯分类器实现代码 高斯模 ...

最新文章

  1. 计算机控制直流电机闭环调速实验,最小拍控制系统及直流电机闭环调速控制系统设计和实现实验报告...
  2. TP5 实现基于标签简单的推荐算法
  3. java开放平台系统,java快速开发平台
  4. Swoole 源码分析——内存模块之内存池
  5. ComboBox自动补全小技巧
  6. Go泛型草案设计简明指南
  7. 如何判断两个矩形相交
  8. mysql restart fail_mysql突然挂掉,重启失败,求助
  9. linux 快捷matlab_ubuntu下Matlab_Linux添加工具包操作步骤
  10. 【语音处理】基于matlab GUI汉宁窗FIR陷波滤波器语音信号加噪去噪【含Matlab源码 1711期】
  11. 【虹科分享】什么是 RFC 2544?网络设备的性能基准测试方法
  12. 在北京税前工资2万元,扣掉社保五险和一金税后能拿多少钱?
  13. PHY卡 网卡区别联系
  14. 无线音箱解决方案开发过程
  15. tsconfig之include和exclude详解
  16. Yolov5学习笔记(1)——训练出自己的模型
  17. 电脑重装系统的几种方法
  18. 【汇编语言】【ARM扩展资料】硬件组成
  19. [更新ing]sklearn(十六):Nearest Neighbors *
  20. Windows 11打印测试页

热门文章

  1. 不仅仅是安全设置?打开支付宝的这些服务,网友直呼太强了
  2. dw怎样用css设置背景图片,dreamweaver
  3. 聊一聊系列之:面对秒杀
  4. (四)手把手带你搭建精美简洁的个人时间管理网站—相关产品调研
  5. c语言 case语句用大括号,c++ - 关于“ switch”中“ case”语句中的花括号 - 堆栈内存溢出...
  6. 社会网络——信管考研方向之管科图情论文分析
  7. 反虚拟机技术虚拟机硬件化处理过检测
  8. 网络规划中的IP地址分配
  9. SAS常用基础代码例子-聚类分析
  10. el-table 底部自带横线去除方法