统计学习方法——朴素贝叶斯
0.写在前面
朴素贝叶斯实际上是非常简单的一种机器学习方法,我们在之前的很多地方都讲过了,所以这里我们不再阐述具体的原理,可以移步:朴素贝叶斯。
但是,对于讨论班里,争论最多的就是课后的2个习题,因此,我们重点放在这两个习题上。他们分别是:
4.1 用极大似然估计法推出朴素贝叶斯法中的概率估计公式(4.8)及公式(4.9)。
4.2 用贝叶斯估计法推出朴素贝叶斯法中的概率估计公式(4.10)及公式(4.11)。
1. 极大似然估计法
极大似然估计方法是非常常见的估计方法(MLE)。而这里的公式4.8和公式4.9分别是:
P(Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(y_i=c_k)}{N} (4.8)
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(\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)
那么求导:
\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,带入约束条件就求得我们需要的值了:
\theta_k=\frac{N_k}{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(\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=a_l|Y=c_k)=\frac{p(X=a_l,Y=c_k)}{p(Y=c_k)}
其实如果上下都约掉N就可得:
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=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. 极大似然估计与贝叶斯估计的不同。
贝叶斯估计与极大似然估计的一个主要不同就在于,贝叶斯估计有一个先验概率,而极大似然估计没有,准确说是每种可能的先验估计都相等,也就忽略了。
但是贝叶斯的先验估计也并非是一直准确的,如果对于先验估计有一个很透彻的了解,那么贝叶斯估计应当是比较好用的。但是实际上,很多情况下,我们并不知道先验概率分布,这就导致很多时候,先验概率分布也是一种猜测,猜得对了,效果好,猜的不对,效果就不好。
有的说,极大似然估计是对点估计,而贝叶斯估计是对分布估计。我觉得其实是差不多的。
统计学习方法——朴素贝叶斯相关推荐
- 统计学习方法|朴素贝叶斯原理剖析及实现
欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...
- matlab贝叶斯判别后验概率,统计学习方法——朴素贝叶斯法、先验概率、后验概率(示例代码)...
朴素贝叶斯法,就是使用贝叶斯公式的学习方法,朴素就是它假设输入变量(向量)的各个分量之间是相互独立的.所以对于分量之间不独立的分布,如果使用它学习和预测效果就不会很好. 简化策略 它是目标是通过训练数 ...
- 李航统计学习方法-朴素贝叶斯
朴素贝叶斯法 朴素贝叶斯(naïve Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法[1]. 对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布:然 后基于此模型, ...
- 复习04统计学习方法(朴素贝叶斯算法Naive Bayes)---图片版
- 朴素贝叶斯法的参数估计——贝叶斯估计及其Python实现
统计学习方法--朴素贝叶斯法原理 1. 贝叶斯估计 1.1 为什么要用贝叶斯估计(极大似然的缺点) 1.2 贝叶斯估计原理 贝叶斯估计的算法过程合极大似然估计的算法过程一模一样,代码也几乎一模一样,只 ...
- matlab 朴素贝叶斯模型 代码及其案例
简介 朴素贝叶斯分类器(Naive Bayes Classifier 或 NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率.同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算 ...
- 统计学习方法:朴素贝叶斯
作者:桂. 时间:2017-04-20 18:31:37 链接:http://www.cnblogs.com/xingshansi/p/6740308.html 前言 本文为<统计学习方法&g ...
- 【统计学习方法】朴素贝叶斯对鸢尾花(iris)数据集进行训练预测
本文摘要 · 理论来源:[统计学习方法]第三四章 朴素贝叶斯 · 技术支持:pandas(读csv).numpy.sklearn.naive_bayes.GaussianNB(高斯朴素贝叶斯模型).s ...
- 统计学习方法笔记(三)-朴素贝叶斯原理及python实现
朴素贝叶斯 条件概率 特征条件独立假设 朴素贝叶分类器 朴素贝叶斯分类算法原理 学习与分类算法 朴素贝叶斯算法原理 模型 多项式模型 高斯模型 伯努利模型 多项式模型的朴素贝叶斯分类器实现代码 高斯模 ...
最新文章
- 计算机控制直流电机闭环调速实验,最小拍控制系统及直流电机闭环调速控制系统设计和实现实验报告...
- TP5 实现基于标签简单的推荐算法
- java开放平台系统,java快速开发平台
- Swoole 源码分析——内存模块之内存池
- ComboBox自动补全小技巧
- Go泛型草案设计简明指南
- 如何判断两个矩形相交
- mysql restart fail_mysql突然挂掉,重启失败,求助
- linux 快捷matlab_ubuntu下Matlab_Linux添加工具包操作步骤
- 【语音处理】基于matlab GUI汉宁窗FIR陷波滤波器语音信号加噪去噪【含Matlab源码 1711期】
- 【虹科分享】什么是 RFC 2544?网络设备的性能基准测试方法
- 在北京税前工资2万元,扣掉社保五险和一金税后能拿多少钱?
- PHY卡 网卡区别联系
- 无线音箱解决方案开发过程
- tsconfig之include和exclude详解
- Yolov5学习笔记(1)——训练出自己的模型
- 电脑重装系统的几种方法
- 【汇编语言】【ARM扩展资料】硬件组成
- [更新ing]sklearn(十六):Nearest Neighbors *
- Windows 11打印测试页
热门文章
- 不仅仅是安全设置?打开支付宝的这些服务,网友直呼太强了
- dw怎样用css设置背景图片,dreamweaver
- 聊一聊系列之:面对秒杀
- (四)手把手带你搭建精美简洁的个人时间管理网站—相关产品调研
- c语言 case语句用大括号,c++ - 关于“ switch”中“ case”语句中的花括号 - 堆栈内存溢出...
- 社会网络——信管考研方向之管科图情论文分析
- 反虚拟机技术虚拟机硬件化处理过检测
- 网络规划中的IP地址分配
- SAS常用基础代码例子-聚类分析
- el-table 底部自带横线去除方法