机器学习基础专题:高斯判别分析
高斯判别分析
全称是Gaussian Discriminant Analysis (GDA)。大家不要被名字所误导,这是一种概率生成模型。
原理
对联合概率进行建模,我们假设y∼Bernoulli(Φ)y \sim Bernoulli(\Phi)y∼Bernoulli(Φ),且x∣y=1∼N(μ1,Σ)x|y=1 \sim N(\mu_1, \Sigma)x∣y=1∼N(μ1,Σ),x∣y=0∼N(μ0,Σ)x|y=0 \sim N(\mu_0, \Sigma)x∣y=0∼N(μ0,Σ)
输入
训练集数据D=(x1,y1)...(xM,yM)D = {(x_1,y_1) ... (x_M,y_M)}D=(x1,y1)...(xM,yM),xi∈X⊆Rnx_i \in \mathcal{X} \subseteq R^nxi∈X⊆Rn,yi∈Y⊆RKy_i \in \mathcal{Y} \subseteq R^Kyi∈Y⊆RK,二分类yi∈{−1,+1}y_i \in \{-1, +1\}yi∈{−1,+1}
Xi,μi,ΣiX_i, \mu_i, \Sigma_iXi,μi,Σi 分别表示第i类样例的集合、均值向量、协方差矩阵。
输出
各分类的概率。如果是二分类就是{+1, -1}的概率。
损失函数
令θ=(μ0,μ1,σ,Φ)\theta = (\mu_0, \mu_1, \sigma, \Phi)θ=(μ0,μ1,σ,Φ)。计算似然
L(θ)=∑i=1Mlog[P(xi∣yi)P(yi)]=∑i=1MlogP(xi∣yi)+logP(yi)=∑i=1Mlog[N(μ1∣Σ)yiN(μ0∣Σ)1−yi]+log[Φyi(1−Φ)1−yi]=∑i=1Mlog[N(μ1∣Σ)yi]+log[N(μ0∣Σ)1−yi]+log[Φyi(1−Φ)1−yi]L(\theta) = \sum_{i=1}^M log[P(x_i|y_i)P(y_i)] \\\\ = \sum_{i=1}^M log P(x_i|y_i) + log P(y_i) \\\\ = \sum_{i=1}^M log[N(\mu_1|\Sigma)^{y_i} N(\mu_0|\Sigma)^{1-y_i}] + log [\Phi^{y_i}(1-\Phi)^{1-y_i}] \\\\ = \sum_{i=1}^M log[N(\mu_1|\Sigma)^{y_i}] + log[N(\mu_0|\Sigma)^{1-y_i}] + log [\Phi^{y_i}(1-\Phi)^{1-y_i}] \\\\ L(θ)=i=1∑Mlog[P(xi∣yi)P(yi)]=i=1∑MlogP(xi∣yi)+logP(yi)=i=1∑Mlog[N(μ1∣Σ)yiN(μ0∣Σ)1−yi]+log[Φyi(1−Φ)1−yi]=i=1∑Mlog[N(μ1∣Σ)yi]+log[N(μ0∣Σ)1−yi]+log[Φyi(1−Φ)1−yi]
对Φ\PhiΦ进行求偏导,
∂L(θ)∂Φ=∑i=1MyiΦ+1−yi1−Φ=0∑i=1MΦ(1−yi)−(1−Φ)yi=0∑i=1M[yi−Φ]=0Φ=1M∑i=1Myi\frac{\partial L(\theta)}{\partial \Phi} = \sum_{i=1}^M \frac{y_i} {\Phi} + \frac {1-y_i} {1-\Phi} = 0\\\\ \sum_{i=1}^M {\Phi}(1-y_i) - (1-\Phi)y_i = 0 \\\\ \sum_{i=1}^M [y_i-\Phi] = 0 \\\\ \Phi = \frac {1} {M} \sum_{i=1}^M y_i \\\\ ∂Φ∂L(θ)=i=1∑MΦyi+1−Φ1−yi=0i=1∑MΦ(1−yi)−(1−Φ)yi=0i=1∑M[yi−Φ]=0Φ=M1i=1∑Myi
对μ1\mu_1μ1进行求偏导,
∑i=1Mlog[N(μ1∣Σ)yi]=∑i=1Myilog[exp(−12(xi−μ1)TΣ−1(xi−μ1))(2π)p/2(Σ)1/2]=0μ1∗=argmaxμ1∑i=1Myi(−12(xi−μ1)TΣ−1(xi−μ1))=−12∑i=1M(xiTΣ−1−μ1TΣ−1)(xi−μ1)∂L(θ)∂μ1=∑i=1Myi(−Σ−1xi+Σ−1μ1T)=0μ1∗=∑i=1Myixi∑i=1Myi\sum_{i=1}^M log[N(\mu_1|\Sigma)^{y_i}] = \sum_{i=1}^M y_i log[\frac {exp(- \frac 1 2 (x_i-\mu_1)^T \Sigma^{-1} (x_i-\mu_1))} {(2\pi)^{p/2}(\Sigma)^{1/2}} ] = 0 \\\\ \mu_1^* = argmax_{\mu_1} \sum_{i=1}^M y_i (- \frac 1 2 (x_i-\mu_1)^T \Sigma^{-1} (x_i-\mu_1)) \\\\ = - \frac 1 2 \sum_{i=1}^M (x_i^T \Sigma^{-1} - \mu_1^T \Sigma^{-1})(x_i-\mu_1) \\\\ \frac{\partial L(\theta)}{\partial \mu_1} = \sum_{i=1}^M y_i(-\Sigma^{-1}x_i + \Sigma^{-1}\mu_1^T) = 0 \\\\ \mu_1^* = \frac{\sum_{i=1}^M y_i x_i} {\sum_{i=1}^M y_i} i=1∑Mlog[N(μ1∣Σ)yi]=i=1∑Myilog[(2π)p/2(Σ)1/2exp(−21(xi−μ1)TΣ−1(xi−μ1))]=0μ1∗=argmaxμ1i=1∑Myi(−21(xi−μ1)TΣ−1(xi−μ1))=−21i=1∑M(xiTΣ−1−μ1TΣ−1)(xi−μ1)∂μ1∂L(θ)=i=1∑Myi(−Σ−1xi+Σ−1μ1T)=0μ1∗=∑i=1Myi∑i=1Myixi
类似的,我们可以推导出
μ0∗=∑i=1M(1−yi)xi∑i=1M(1−yi)\mu_0^* = \frac{\sum_{i=1}^M (1-y_i) x_i} {\sum_{i=1}^M (1-y_i)} μ0∗=∑i=1M(1−yi)∑i=1M(1−yi)xi
用SSS记录矩阵的方差,我们先对L(θ)L(\theta)L(θ)与之相关的部分进行化简,
L(θ)=∑i=1Mlog[N(μ1∣Σ)yi]+log[N(μ0∣Σ)1−yi]+log[Φyi(1−Φ)1−yi]=∑k=1log[N(μ1∣Σ)]+∑k=0log[N(μ0∣Σ)]+∑i=1Mlog[Φyi(1−Φ)1−yi]−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−∑i=1MlogN(μ,Σ)=∑i=1Mlog[exp(−12(xi−μ1)TΣ−1(xi−μ1))(2π)p/2∣Σ∣1/2]=log[1(2π)p/2]+log[∣Σ∣−12]−12(xi−μ1)TΣ−1(xi−μ1)=∑i=1MC−12log∣Σ∣−12(xi−μ1)TΣ−1(xi−μ1)=C−12∑i=1Mlog∣Σ∣−12∑i=1M(xi−μ1)TΣ−1(xi−μ1)=C−M2log∣Σ∣−12∑i=1Mtr[(xi−μ1)TΣ−1(xi−μ1)]=C−M2log∣Σ∣−12∑i=1Mtr[(xi−μ1)T(xi−μ1)Σ−1]=C−M2log∣Σ∣−12tr[∑i=1M(xi−μ1)T(xi−μ1)Σ−1]=C−M2log∣Σ∣−M2tr[S∗Σ−1]L(\theta) = \sum_{i=1}^M log[N(\mu_1|\Sigma)^{y_i}] + log[N(\mu_0|\Sigma)^{1-y_i}] + log [\Phi^{y_i}(1-\Phi)^{1-y_i}] \\\\ = \sum_{k=1} log[N(\mu_1|\Sigma)] + \sum_{k=0} log[N(\mu_0|\Sigma)] + \sum_{i=1}^M log [\Phi^{y_i}(1-\Phi)^{1-y_i}] \\\\ -------------------------------------- \\\\ \sum_{i=1}^M log N(\mu, \Sigma) = \sum_{i=1}^Mlog[\frac {exp(- \frac 1 2 (x_i-\mu_1)^T \Sigma^{-1} (x_i-\mu_1))} {(2\pi)^{p/2}|\Sigma|^{1/2}} ] \\\\ = log[\frac 1 {(2\pi)^{p/2}}] + log[|\Sigma|^{- \frac 1 2}] - \frac 1 2 (x_i-\mu_1)^T \Sigma^{-1} (x_i-\mu_1) \\\\ = \sum_{i=1}^M C -\frac 1 2 log|\Sigma| -\frac 1 2 (x_i-\mu_1)^T \Sigma^{-1} (x_i-\mu_1) \\\\ = C - \frac 1 2 \sum_{i=1}^M log|\Sigma| -\frac 1 2 \sum_{i=1}^M (x_i-\mu_1)^T \Sigma^{-1} (x_i-\mu_1) \\\\ = C - \frac M 2 log|\Sigma| -\frac 1 2 \sum_{i=1}^M tr[(x_i-\mu_1)^T \Sigma^{-1} (x_i-\mu_1)] \\\\ = C - \frac M 2 log|\Sigma| -\frac 1 2 \sum_{i=1}^M tr[(x_i-\mu_1)^T (x_i-\mu_1) \Sigma^{-1}] \\\\ = C - \frac M 2 log|\Sigma| -\frac 1 2 tr[\sum_{i=1}^M (x_i-\mu_1)^T (x_i-\mu_1) \Sigma^{-1}] \\\\ = C - \frac M 2 log|\Sigma| -\frac M 2 tr[S*\Sigma^{-1}] \\\\ L(θ)=i=1∑Mlog[N(μ1∣Σ)yi]+log[N(μ0∣Σ)1−yi]+log[Φyi(1−Φ)1−yi]=k=1∑log[N(μ1∣Σ)]+k=0∑log[N(μ0∣Σ)]+i=1∑Mlog[Φyi(1−Φ)1−yi]−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−i=1∑MlogN(μ,Σ)=i=1∑Mlog[(2π)p/2∣Σ∣1/2exp(−21(xi−μ1)TΣ−1(xi−μ1))]=log[(2π)p/21]+log[∣Σ∣−21]−21(xi−μ1)TΣ−1(xi−μ1)=i=1∑MC−21log∣Σ∣−21(xi−μ1)TΣ−1(xi−μ1)=C−21i=1∑Mlog∣Σ∣−21i=1∑M(xi−μ1)TΣ−1(xi−μ1)=C−2Mlog∣Σ∣−21i=1∑Mtr[(xi−μ1)TΣ−1(xi−μ1)]=C−2Mlog∣Σ∣−21i=1∑Mtr[(xi−μ1)T(xi−μ1)Σ−1]=C−2Mlog∣Σ∣−21tr[i=1∑M(xi−μ1)T(xi−μ1)Σ−1]=C−2Mlog∣Σ∣−2Mtr[S∗Σ−1]
用MkM_kMk表示各类数据的个数,对Σ\SigmaΣ进行求偏导,
L(θ)=−M12[log∣Σ∣−tr(S1∗Σ−1)]−M02[log∣Σ∣−tr(S0∗Σ−1)]=−M2log∣Σ∣−M12tr(S1∗Σ−1)−M02tr(S0∗Σ−1)−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−∂L(θ)∂Σ=−12[(MΣ−1)−M0S0TΣ−2−M1S1TΣ−2]=0MΣ=M1S0+M1S1Σ∗=M1S0+M1S1ML(\theta) = - \frac {M_1} 2 [log|\Sigma| - tr(S_1 * \Sigma^{-1})] - \frac {M_0} 2 [log|\Sigma| - tr(S_0 * \Sigma^{-1})] \\\\ = - \frac {M} 2 log|\Sigma| - \frac {M_1} 2 tr(S_1 * \Sigma^{-1}) - \frac {M_0} 2 tr(S_0 * \Sigma^{-1}) \\\\ -------------------------------\\\\ \frac {\partial L(\theta)}{\partial \Sigma} = - \frac {1} 2 [(M \Sigma^{-1}) - M_0 S_0^T\Sigma^{-2} - M_1 S_1^T\Sigma^{-2}] = 0 \\\\ M \Sigma = M_1 S_0 + M_1 S_1 \\\\ \Sigma^* = \frac {M_1 S_0 + M_1 S_1} {M} L(θ)=−2M1[log∣Σ∣−tr(S1∗Σ−1)]−2M0[log∣Σ∣−tr(S0∗Σ−1)]=−2Mlog∣Σ∣−2M1tr(S1∗Σ−1)−2M0tr(S0∗Σ−1)−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−∂Σ∂L(θ)=−21[(MΣ−1)−M0S0TΣ−2−M1S1TΣ−2]=0MΣ=M1S0+M1S1Σ∗=MM1S0+M1S1
适用场景
无。
优点
- 鲁棒性较好
缺点
- 需要数据服从分布(具有严格假设)
- 参数较多,计算相对比较复杂
Reference
- 白板推导系列,shuhuai007
机器学习基础专题:高斯判别分析相关推荐
- 经典机器学习算法:高斯判别分析GDA
高斯判别分析介绍 高斯判别分析 GDA GDA模型 模型求解 具体计算 高斯判别分析 GDA GDA:Guassian Discrimant Analysis 高斯判别分析属于两分类.软分类.概率生成 ...
- 机器学习基础专题:高斯混合模型和最大期望EM算法以及代码实现
高斯混合模型 混合模型是潜变量模型的一种,是最常见的形式之一.而高斯混合模型(Gaussian Mixture Models, GMM)是混合模型中最常见的一种.zzz代表该数据点是由某一个高斯分布产 ...
- 机器学习基础专题:特征工程
特征工程 特征提取 将原始数据转化为实向量之后,为了让模型更好地学习规律,对特征做进一步的变换.首先,要理解业务数据和业务逻辑. 其次,要理解模型和算法,清楚模型需要什么样的输入才能有精确的结果. 探 ...
- 机器学习基础专题:分类
线性分类 分类方式 硬分类 使用的是非概率模型,分类结果是决策函数的决策结果. 代表:线性判别分析.感知机 软分类 分类结果是属于不同类别的概率. 生成式 通过贝叶斯定理,使用MAP比较P(Y=0∣X ...
- 机器学习基础专题:线性判别器
线性判别分析 全称是Linear Discriminant Analysis (LDA). 原理 给定训练样例集,通过降维的思路进行分类.将样例投影到一条直线上,使得同类样例的投影点接近,异类样例的投 ...
- 机器学习笔记:高斯判别分析
1 模型概述 假设有如下数据: 其中样本数据的类别y在给定的情况下服从伯努利分布 不同类别的样本数据又分别服从不同的多元高斯分布(这里假设两个高斯分布具有同样的方差) 2 损失函数 高斯判别模型的损失 ...
- 机器学习基础专题:随机变量
术语 样本空间(sample space):Ω\OmegaΩ,包含了所有可能出现的结果的集合.比如在掷一次骰子的样本空间可以用{1,2,3,4,5,6}表示. 事件集(event space): FF ...
- 机器学习基础专题:逻辑回归
逻辑回归 广义线性模型. 原理 输入 训练集数据T=(x1,y1)...(xM,yM)T = {(x_1,y_1) ... (x_M,y_M)}T=(x1,y1)...(xM,yM),xi∈X ...
- 机器学习基础专题:感知机
感知机 原理 思想是错误驱动.一开始赋予w一个初始值,通过计算被错误分类的样本不断移动分类边界. 输入 训练集数据D=(x1,y1)...(xM,yM)D = {(x_1,y_1) ... (x_M, ...
最新文章
- 来说一下Ansible的简明教程
- 输入参数的数目不足 matlab_哈工大被禁用MATLAB,工科学生慌了,论文至上间接导致软件依赖?...
- 2020年快手母婴生态报告
- ps图片如何实现渐变
- Eclipse导出APK文件报错 android lint problem
- Nginx关于日志记录实例应用
- python3.7.2安装步骤-python安装升级详细步骤 Python2 升级 Python3
- ROS安装教程(ubuntu20.04安装ROS Noetic Ninjemys)
- 小时候很喜欢看的一些卡通片的主题曲(绝对经典)
- AI芯片发展的前世今生
- matlab中muw,matlab – 获取属于凸包的点
- WeX5制作的app,界面模仿b站(哔哩哔哩弹幕视频网)客户端
- 谈谈DDD(领域驱动设计)
- 透透彻彻IoC(你没有理由不懂!)
- 两年工作经验的后端开发的工作方法小结
- 网络对抗 Exp8 Web基础 20154311 王卓然
- 第一章:pycharm、anaconda、opencv、pytorch、tensorflow、paddlex等环境配置大全总结【图像处理py版本】
- 步进电机-STM32单片机定时器正弦波输出
- Xvid 视频压缩编码器设置指南
- 关于oracle 11g自动分区+分区改名+定时任务综合使用实现自动分区后可以进行分区查询
热门文章
- 在linux安装mysql重启提示You must SET PASSWORD before executing this statement的解决方法
- 机房监控系统解说--发电机篇
- hexdump——Linux系统的二进制文件查看工具
- combobox的使用
- ACE_Task::putq(转)
- 软件架构设计-五视图方法论
- LDAPserver的安装
- EDM营销中HTML邮件设计的技巧
- [常见错误]-bash: pg_config: command not found
- Jquery 选择器大全 【转载】