数据挖掘 | 判别分析 +朴素贝叶斯分类算法
本节记录一下由贝叶斯定理延伸出来的几种预测性建模的方法,主要为线性判别分析(一次,二次),朴素贝叶斯(稍稍提一下贝叶斯网络)
1. 判别分析
判别分析适用于自变量连续,因变量为分类型的情形;
- 设因变量YYY一共有KKK个类别;ϵl=P(Y=l)\epsilon_l=P(Y=l)ϵl=P(Y=l)表示类别lll的先验概率,满足∑l=1Kϵl=1\sum^K_{l=1}\epsilon_l=1∑l=1Kϵl=1;fl(x)=f(x∣Y=l)f_l(\bold{x})=f(\bold{x}|Y=l)fl(x)=f(x∣Y=l)表示类别Y=lY=lY=l的观测下自变量X=(X1,⋯,Xp)\bold{X}=(X_1,\cdots,X_p)X=(X1,⋯,Xp)的概率密度函数;
由贝叶斯公式
P(Y=l∣X=x)=P(Y=l)f(x∣Y=l)∑i=1KP(Y=i)f(x∣Y=i)=ϵlfl(x)∑i=1Kϵifi(x)P(Y=l|\bold{X}=\bold{x})=\frac{P(Y=l)f(\bold{x}|Y=l)}{\sum^K_{i=1}P(Y=i)f(\bold{x}|Y=i)}=\frac{\epsilon_lf_l(\bold{x})}{\sum^K_{i=1}\epsilon_if_i(\bold{x})} P(Y=l∣X=x)=∑i=1KP(Y=i)f(x∣Y=i)P(Y=l)f(x∣Y=l)=∑i=1Kϵifi(x)ϵlfl(x)
则预测x\bold{x}x的类别l∗l^*l∗为
l∗=argmaxlP(Y=l∣X=x)=argmaxlϵlfl(x)l^* = \underset{l}{argmax}\ P(Y=l|\bold{X}=\bold{x}) = \underset{l}{argmax}\ \epsilon_lf_l(\bold{x}) l∗=largmax P(Y=l∣X=x)=largmax ϵlfl(x)
- 线性判别分析的假设为,观测自变量满足多元正态分布,即fl(x)∼MVN(μl,Σl)f_l(\bold{x})\sim MVN(\bold{\mu}_l,\bold{\Sigma}_l)fl(x)∼MVN(μl,Σl)
1.1 线性判别分析
- 在上述假设中进一步假设所有类别的协方差矩阵都相等:Σl=Σ,l=1,⋯,K\Sigma_l=\Sigma,l=1,\cdots,KΣl=Σ,l=1,⋯,K
前述已经将预测类别的类转化为求argmaxlϵlfl(x)\underset{l}{argmax}\ \epsilon_lf_l(\bold{x})largmax ϵlfl(x),我们稍微计算一下
log(ϵlfl(x))=log[ϵl1(2π)p2∣Σ∣12exp{−12(x−μl)TΣ−1(x−μl)}]=δl(x)+A\begin{aligned} log(\epsilon_lf_l(\bold{x}))&=log[\epsilon_l\frac{1}{(2\pi)^{\frac{p}{2}}|\Sigma|^{\frac{1}{2}}}exp\{-\frac{1}{2}(\bold{x}-\bold{\mu}_l)^T\Sigma^{-1}(\bold{x}-\bold{\mu}_l)\}]\\ &= \delta_l(\bold{x})+A\\ \end{aligned} log(ϵlfl(x))=log[ϵl(2π)2p∣Σ∣211exp{−21(x−μl)TΣ−1(x−μl)}]=δl(x)+A
其中δl(x)=log(ϵl)−12μlTΣ−1μl+μlTΣ−1x\delta_l(\bold{x})=log(\epsilon_l)-\frac{1}{2}\bold{\mu}_l^T\Sigma^{-1}\bold{\mu}_l+\bold{\mu}_l^T\Sigma^{-1}\bold{x}δl(x)=log(ϵl)−21μlTΣ−1μl+μlTΣ−1x,A=−p2log(2π)−12log(∣Σ∣)−12xTΣ−1xA=-\frac{p}{2}log(2\pi)-\frac{1}{2}log(|\Sigma|)-\frac{1}{2}\bold{x}^T\Sigma^{-1}\bold{x}A=−2plog(2π)−21log(∣Σ∣)−21xTΣ−1x
可以看到AAA的值与类别lll无关(对于所有的类别都是一样的),所以现在就将问题转化成了
l∗=argmaxlϵlfl(x)=argmaxllog(ϵlfl(x))=argmaxlδl(x)\begin{aligned} l^* &= \underset{l}{argmax}\ \epsilon_lf_l(\bold{x})\\ &= \underset{l}{argmax}\ log(\epsilon_lf_l(\bold{x}))\\ &= \underset{l}{argmax}\ \delta_l(\bold{x}) \end{aligned} l∗=largmax ϵlfl(x)=largmax log(ϵlfl(x))=largmax δl(x)
而δl(x)\delta_l(\bold{x})δl(x)为x\bold{x}x的线性函数,大概就是线性判别分析名称的来源吧。
1.2 二次判别分析
承上面的观点是不是最后转化成了关于x\bold{x}x的线性函数的二次函数的问题?
Bingo
- 二次判别分析的假设不再像线性判别分析那样,二次判别分析不假设各类别的协方差矩阵Σl\Sigma_lΣl都相等
- 那么我们再计算一下log(ϵlfl(x))log(\epsilon_lf_l(\bold{x}))log(ϵlfl(x))
log(ϵlfl(x))=log[ϵl1(2π)p2∣Σ∣12exp{−12(x−μl)TΣ−1(x−μl)}]=ψl(x)+B\begin{aligned} log(\epsilon_lf_l(\bold{x}))&=log[\epsilon_l\frac{1}{(2\pi)^{\frac{p}{2}}|\Sigma|^{\frac{1}{2}}}exp\{-\frac{1}{2}(\bold{x}-\bold{\mu}_l)^T\Sigma^{-1}(\bold{x}-\bold{\mu}_l)\}]\\ &= \psi_l(\bold{x})+B\\ \end{aligned} log(ϵlfl(x))=log[ϵl(2π)2p∣Σ∣211exp{−21(x−μl)TΣ−1(x−μl)}]=ψl(x)+B
其中ψl(x)=log(ϵl−12log(∣Σl∣)−12(x−μl)TΣ−1(x−μl)\psi_l(\bold{x})=log(\epsilon_l-\frac{1}{2}log(|\Sigma_l|)-\frac{1}{2}(\bold{x}-\bold{\mu}_l)^T\Sigma^{-1}(\bold{x}-\bold{\mu}_l)ψl(x)=log(ϵl−21log(∣Σl∣)−21(x−μl)TΣ−1(x−μl),B=−p2log(2π)B=-\frac{p}{2}log(2\pi)B=−2plog(2π)
同理线性判别分析的分析,现在就将问题转化成了
l∗=argmaxlϵlfl(x)=argmaxllog(ϵlfl(x))=argmaxlψl(x)\begin{aligned} l^* &= \underset{l}{argmax}\ \epsilon_lf_l(\bold{x})\\ &= \underset{l}{argmax}\ log(\epsilon_lf_l(\bold{x}))\\ &= \underset{l}{argmax}\ \psi_l(\bold{x}) \end{aligned} l∗=largmax ϵlfl(x)=largmax log(ϵlfl(x))=largmax ψl(x)
而ψl(x)\psi_l(\bold{x})ψl(x)为x\bold{x}x的二次函数;
1.3 参数估计
有三个参数需要估计:ϵl,xl,Σl\epsilon_l,\bold{x}_l,\Sigma_lϵl,xl,Σl
- ϵl\epsilon_lϵl由训练数据集中属于类别lll的观测的比例来估计;
- xl\bold{x}_lxl由训练数据集中属于类别lll的观测的样本均值向量来估计;
- Σl\Sigma_lΣl的估计:假设训练数据集有NNN次观测x1,⋯,xN\bold{x}_1,\cdots,\bold{x}_Nx1,⋯,xN,NlN_lNl为属于类别lll的观测个数,ClC_lCl为类别lll的序号的集合,xˉl\bar{\bold{x}}_lxˉl为类别lll的均值向量;
- 二次判别分析:Σl\Sigma_lΣl由样本协方差矩阵Sl\bold{S}_lSl来估计;
- 线性判别分析:Σ\SigmaΣ由样本协方差矩阵Sl\bold{S}_lSl的加权S\bold{S}S来估计;
Sl=1Nl−1∑i∈Cl(xi−xˉl)(xi−xˉl)TS=∑l=1KNl−1N−KSl=1N−K∑l=1K∑i∈Cl(xi−xˉl)(xi−xˉl)T\bold{S}_l = \frac{1}{N_l-1}\sum_{i\in C_l}(\bold{x}_i-\bar{\bold{x}}_l)(\bold{x}_i-\bar{\bold{x}}_l)^T\\ \bold{S} = \sum^K_{l=1}\frac{N_l-1}{N-K}\bold{S}_l=\frac{1}{N-K}\sum^K_{l=1}\sum_{i\in C_l}(\bold{x}_i-\bar{\bold{x}}_l)(\bold{x}_i-\bar{\bold{x}}_l)^T Sl=Nl−11i∈Cl∑(xi−xˉl)(xi−xˉl)TS=l=1∑KN−KNl−1Sl=N−K1l=1∑Ki∈Cl∑(xi−xˉl)(xi−xˉl)T
2. 朴素贝叶斯分类算法
朴素贝叶斯分类算法适用于因变量为分类型的情形(自变量不做要求);
还是回到第一节中的贝叶斯公式
P(Y=l∣X=x)=P(Y=l)f(x∣Y=l)∑i=1KP(Y=i)f(x∣Y=i)=ϵlfl(x)∑i=1Kϵifi(x)P(Y=l|\bold{X}=\bold{x})=\frac{P(Y=l)f(\bold{x}|Y=l)}{\sum^K_{i=1}P(Y=i)f(\bold{x}|Y=i)}=\frac{\epsilon_lf_l(\bold{x})}{\sum^K_{i=1}\epsilon_if_i(\bold{x})} P(Y=l∣X=x)=∑i=1KP(Y=i)f(x∣Y=i)P(Y=l)f(x∣Y=l)=∑i=1Kϵifi(x)ϵlfl(x)
此时在朴素贝叶斯分类算法的假设仍然是在fl(x)f_l(\bold{x})fl(x)上,给定YYY的值,X1,⋯,XpX_1,\cdots,X_pX1,⋯,Xp是条件独立的。计fl(xr)f_l(x_r)fl(xr)为类别lll中自变量XrX_rXr的边缘分布;
fl(x)=∏r=1pfl(xr)f_l(\bold{x})=\prod^p_{r=1}f_l(x_r) fl(x)=r=1∏pfl(xr)
l∗=argmaxlϵlfl(x)=argmaxllog(ϵlfl(x))=argmaxllog(ϵl∏r=1pfl(xr))\begin{aligned} l^* &= \underset{l}{argmax}\ \epsilon_lf_l(\bold{x})\\ &= \underset{l}{argmax}\ log(\epsilon_lf_l(\bold{x}))\\ &= \underset{l}{argmax}\ log(\epsilon_l\prod^p_{r=1}f_l(x_r)) \end{aligned} l∗=largmax ϵlfl(x)=largmax log(ϵlfl(x))=largmax log(ϵlr=1∏pfl(xr))
2.1 参数估计
1.3节已经把ϵl\epsilon_lϵl的估计说了,下面就是fl(x)f_l(\bold{x})fl(x)的估计了;本节的开始也说过,朴素贝叶斯分类算法对于因变量没有特别的要求,所以需要分两类来估计:
- 因变量为分类变量
- 简单来说fl(xr)f_l(x_r)fl(xr)的估计量可以用极大似然估计来做;用符号来表示的话,假设XrX_rXr可能的取值为γ1,⋯,γV\gamma_1,\cdots,\gamma_Vγ1,⋯,γV,fl(xr=γv)(v=1,⋯,V)f_l(x_r=\gamma_v)(v=1,\cdots,V)fl(xr=γv)(v=1,⋯,V)的极大似然估计为训练数据集中属于类别lll的观测中XrX_rXr取值为γv\gamma_vγv的比例
f^l(xr=γv)=∣{i∣i∈Cl,xir=γv}∣Nl\hat{f}_l(x_r=\gamma_v)=\frac{|\{i|i\in C_l,\ x_{ir}=\gamma_v\}|}{N_l} f^l(xr=γv)=Nl∣{i∣i∈Cl, xir=γv}∣
其中,xirx_{ir}xir表示第iii个观测的XrX_rXr的取值。做一下平滑处理(若训练数据集中没有满足条件的观测,对应的MLR为0)
f~l(xr=γv)=∣{i∣i∈Cl,xir=γv}∣+n0Nl+n0\tilde{f}_l(x_r=\gamma_v)=\frac{|\{i|i\in C_l,\ x_{ir}=\gamma_v\}|+n_0}{N_l+n_0} f~l(xr=γv)=Nl+n0∣{i∣i∈Cl, xir=γv}∣+n0
- 因变量为分类变量
- 对于每个类别lll,我们假设XrX_rXr服从N(μlr,σlr2)\mathcal{N}(\mu_{lr},\sigma^2_{lr})N(μlr,σlr2),其中
μ^lr=1Nl∑i∈Clxirσ^lr2=1Nl−1∑i∈Cl(xir−μ^lr)2\hat{\mu}_{lr}=\frac{1}{N_l}\sum_{i\in C_l}x_{ir}\\ \hat{\sigma}^2_{lr}=\frac{1}{N_l-1}\sum_{i\in C_l}(x_{ir}-\hat{\mu}_{lr})^2 μ^lr=Nl1i∈Cl∑xirσ^lr2=Nl−11i∈Cl∑(xir−μ^lr)2
- 对于每个类别lll,我们假设XrX_rXr服从N(μlr,σlr2)\mathcal{N}(\mu_{lr},\sigma^2_{lr})N(μlr,σlr2),其中
3. 贝叶斯网络
接第2节的假设,并不是各自条件独立,存在一定的相关性(全概率公式展开简化),后面再补
小结
最后都是通过贝叶斯公式转化为对argmaxlϵlfl(x)\underset{l}{argmax}\ \epsilon_lf_l(\bold{x})largmax ϵlfl(x)的求解上,在fl(x)f_l(\bold{x})fl(x)上做了不同的假设。
f_l(\bold{x}) | |
---|---|
线性判别分析 | fl(x)∼MVN(μl,Σl),Σl=Σ,l=1,⋯,Kf_l(\bold{x})\sim MVN(\bold{\mu}_l,\bold{\Sigma}_l),\Sigma_l=\Sigma,l=1,\cdots,Kfl(x)∼MVN(μl,Σl),Σl=Σ,l=1,⋯,K |
二次判别分析 | fl(x)∼MVN(μl,Σl)f_l(\bold{x})\sim MVN(\bold{\mu}_l,\bold{\Sigma}_l)fl(x)∼MVN(μl,Σl) |
朴素贝叶斯分类算法 | fl(x)=∏r=1pfl(xr)f_l(\bold{x})=\prod^p_{r=1}f_l(x_r)fl(x)=∏r=1pfl(xr) |
一条线过来的感觉真的舒爽哇!
Reference:
- 张俊妮(2018),《数据挖掘与应用》,北京大学出版社
数据挖掘 | 判别分析 +朴素贝叶斯分类算法相关推荐
- 数据挖掘学习——朴素贝叶斯分类算法beast cancer实战
目录 1.朴素贝叶斯分类算法相关的统计学知识 2.朴素贝叶斯分类器 3.朴素贝叶斯分类器python实现 (1)调用sklearn库,需要安装 (2)实例1(查看数据的分布情况和数据格式) (3)实例 ...
- 数据挖掘:基于朴素贝叶斯分类算法的文本分类实践
前言: 如果你想对一个陌生的文本进行分类处理,例如新闻.游戏或是编程相关类别.那么贝叶斯分类算法应该正是你所要找的了.贝叶斯分类算法是统计学中的一种分类方法,它利用概率论中的贝叶斯公式进行扩展.所以, ...
- 【机器学习原理】朴素贝叶斯分类算法
文章目录 一.朴素贝叶斯公式 1. 从统计角度看分类问题 2. 贝叶斯公式的基本思想 贝叶斯的基本逻辑 3. 用贝叶斯公式进行选择 贝叶斯版的预测未来 二.朴素贝叶斯分类的算法原理 1. 朴素贝叶斯分 ...
- 基于python的贝叶斯分类算法预测_python机器学习:朴素贝叶斯分类算法
大数据挖掘DT机器学习 公众号: datayx 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法.这 ...
- 机器学习算法系列(十三)-朴素贝叶斯分类算法(Naive Bayes Classifier Algorithm)
阅读本文需要的背景知识点:一丢丢编程知识 一.引言 前面几节介绍了一类分类算法--线性判别分析.二次判别分析,接下来介绍另一类分类算法--朴素贝叶斯分类算法1 (Naive Bayes Class ...
- 第六篇:基于朴素贝叶斯分类算法的邮件过滤系统
前言 朴素贝叶斯算法最为广泛而经典的应用毫无疑问是文档分类,更具体的情形是邮件过滤系统. 本文详细地讲解一个基于朴素贝叶斯分类算法的邮件过滤系统的具体实现. 本文侧重于工程实现,至于其中很多算法的细节 ...
- 五、朴素贝叶斯分类算法
1.朴素贝叶斯分类算法的基本内容: 概率基础 朴素贝叶斯分类器 朴素贝叶斯的核心思想是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别. 2 ...
- 分类与监督学习,朴素贝叶斯分类算法
分类与监督学习,朴素贝叶斯分类算法 1.理解分类与监督学习.聚类与无监督学习. (1) 简述分类与聚类的联系与区别. 分类是按照某种标准给对象贴标签,再根据标签来区分归类. 聚类是指事先没有" ...
- 二维特征分类的基础_带你搞懂朴素贝叶斯分类算法
贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法.这篇文章我尽可能用直白的话语总结一下我们学习会上讲到 ...
最新文章
- 【转载】VSCode+OpenCV+C++配置
- Coolite(二)服务器端Alert,Confirm,Prompt
- CSS 单行溢出文本显示省略号...的方法(兼容IE FF)(转)
- 动态规划(冬令营课堂笔记)
- Elasticsearch 的使用,看这一篇就够了!
- 数字天堂陷入困境_陷入困境:焦虑的四个迹象可能会影响您的工作
- MSHFlexGrid控件
- 创建对象的多种方式以及优缺点
- 杭电1437 天气情况
- java语言开发的中间件名称,值得收藏!
- 如何在批处理文件/ cmd中休眠五秒钟[重复]
- Metasploit应用举例
- java 对象与引用_Java --对象引用与对象的区别
- java和C#的区别汇总
- QCache 缓存(类似于map的模板类,逻辑意义上的缓存Cache,方便管理,默认类似于LRU的淘汰算法)...
- MySQL下载安装新手教程
- 我从不劝退,我就是退。
- resin那些事之resin.conf
- 小程序input聚焦事件_详解小程序input框失焦事件在提交事件前的处理
- hdoj 3533 Escape