二次判别分析(QDA)和Python实现
我们将在本文中介绍的模型属于称为高斯判别分析(GDA)模型的类别。 请注意,高斯判别分析模型是生成模型! 尽管它的名字叫做判别模型,但是他是生成模型。 给定N个输入变量x和相应的目标变量t的训练数据集,GDA模型假设类条件密度是正态分布的
其中μ为类特有的均值向量,σ为类特有的协方差矩阵。利用贝叶斯定理,我们现在可以计算类后验
然后我们将把x分类
数学推导
对于每个输入变量,我们定义k个二元指标变量。此外,让t表示所有的目标变量,π表示先验,用下标表示类。假设数据点是独立绘制的,似然函数为
为了简化符号,让θ表示所有的类先验、类特定的平均向量和协方差矩阵。我们知道,最大化可能性等于最大化对数可能性。对数似是
扩展(1)将极大地帮助我们在接下来的推导:
我们必须找到类特定的先验、均值和协方差矩阵的最大似然解。从先验开始,我们需要对(2)求导,让它等于0,然后解出先验。然而,我们必须保持约束
这是通过使用拉格朗日乘数λ来实现的
利用(2)的结果,然后对(3)求关于类特定先验的导数,使其等于0,求解
其中Nc是c类中数据点的个数。利用约束知识,我们可以求出λ
将λ=−N代回(4)得到
(5)告诉我们类先验只是属于类的数据点的比例,直观上也有意义。
现在我们转向最大化关于类特定的平均值的对数可能性。再一次,利用(2)的结果让我们很容易求导,让它等于0,然后求解
为了计算这个导数,我们使用矩阵演算单位,然后,我们得到
让我们花点时间来理解(6)说的是什么。(6)左边的和只包括属于c类的输入变量x。然后,我们用这些向量的和除以类中的数据点的个数,这和取这些向量的平均值是一样的。这意味着特定于类的平均向量是属于类的输入变量的平均值。
最后,我们必须最大化关于类特定协方差矩阵的对数似然。再一次,我们用(2)的结果求导,让它等于0,然后解
然后,我们得到
就像特定于类别的均值向量只是该类别的向量的均值一样,特定于类别的协方差矩阵只是该类别的向量的协方差,因此我们得出了最大似然解(5),( 6)和(7)。 因此,我们可以使用以下方法进行分类
Python实现
让我们从一些数据开始-您可以在下面的图中看到它们。 您可以在此处下载数据。
下面的代码是我们刚刚讨论过的QDA的一个简单实现。
import numpyclass QDA:def fit(self, X, t):self.priors = dict()self.means = dict()self.covs = dict()self.classes = np.unique(t)for c in self.classes:X_c = X[t == c]self.priors[c] = X_c.shape[0] / X.shape[0]self.means[c] = np.mean(X_c, axis=0)self.covs[c] = np.cov(X_c, rowvar=False)def predict(self, X):preds = list()for x in X:posts = list()for c in self.classes:prior = np.log(self.priors[c])inv_cov = np.linalg.inv(self.covs[c])inv_cov_det = np.linalg.det(inv_cov)diff = x-self.means[c]likelihood = 0.5*np.log(inv_cov_det) - 0.5*diff.T @ inv_cov @ diffpost = prior + likelihoodposts.append(post)pred = self.classes[np.argmax(posts)]preds.append(pred)return np.array(preds)
现在我们可以用下面的代码进行预测。
data = np.loadtxt("../data.csv", delimiter=",", skiprows=1)X = data[:, 0:2]
t = data[:, 2]qda = QDA()
qda.fit(X, t)
preds = qda.predict(X)
这给了我们高斯分布以及如下所示的预测。
为了便于说明QDA的工作原理和工作效果,我们可以在决策边界上绘制数据点的原始类。这是下面显示的。
总结
二次判别分析(QDA)是一种生成模型。
QDA假设每个类服从高斯分布。
特定于类的先验只是属于该类的数据点的比例
特定于类的平均向量只是该类的输入变量的平均值
特定于类的协方差矩阵只是该类的向量的协方差。
作者:Stefan Hrouda-Rasmussen
deephub翻译组
二次判别分析(QDA)和Python实现相关推荐
- R语言惩罚逻辑回归、线性判别分析LDA、广义加性模型GAM、多元自适应回归样条MARS、KNN、二次判别分析QDA、决策树、随机森林、支持向量机SVM分类优质劣质葡萄酒十折交叉验证和ROC可视化
最近我们被客户要求撰写关于葡萄酒的研究报告,包括一些图形和统计输出. 介绍 数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息.该数据集有1599个观测值和12个变量,分别是 ...
- 线性判别分析LDA(linear discriminant analysis)与二次判别分析QDA(quadratic discriminant analysis)
文章目录 什么是LDA LDA与PCA 相同 不同 LDA python实现 使用sklearn实现LDA 再进一步QDA QDA数学原理 QDA与LDA比较 Source: Python Machi ...
- R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)
判别分析包括可用于分类和降维的方法.线性判别分析(LDA)特别受欢迎,因为它既是分类器又是降维技术.二次判别分析(QDA)是LDA的变体,允许数据的非线性分离.最后,正则化判别分析(RDA)是LDA和 ...
- 线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)
判别分析包括可用于分类和降维的方法.线性判别分析(LDA)特别受欢迎,因为它既是分类器又是降维技术.二次判别分析(QDA)是LDA的变体,允许数据的非线性分离.最后,正则化判别分析(RDA)是LDA和 ...
- python判别分析_二次判别分析Quadratic Discriminant Analysis(QDA)
与线性判别分析类似,二次判别分析是另外一种线性判别分析算法,二者拥有类似的算法特征,区别仅在于:当不同分类样本的协方差矩阵相同时,使用线性判别分析:当不同分类样本的协方差矩阵不同时,则应该使用二次判别 ...
- python使用QDA进行二次判别分析
什么是二次判别法 二次判别属于距离判别法中的内容,以两总体距离判别法为例,对总体G1,,G2,当他们各自的协方差矩阵Σ1,Σ2不相等时,判别函数因为表达式不可化简而不再是线性的而是二次的,这时使用的构 ...
- 判别器loss为0_scikitlearn—线性判别分析和二次判别分析
线性判别分析(discriminant_analysis.LinearDiscriminantAnalysis)和二次判别分析(discriminant_analysis.QuadraticDiscr ...
- 【数学建模】Matlab实现判别分析(线性判别和二次判别分析)
Matlab实现判别分析(线性判别和二次判别分析) 一.简介 二.判别分析的方法 2.1 费歇(FISHER)判别思想 2.1 贝叶斯(BAYES)判别思想 三.Matlab 实现判别分析 3.1 代 ...
- python实验二报告_20172304 2019-2020-2 《Python程序设计》实验二报告
20172304 2019-2020-2 <Python程序设计>实验二报告 课程:<Python程序设计> 班级: 1723 姓名: 段志轩 学号:20172304 实验教师 ...
最新文章
- 马化腾:人工智能的“大社交”时代
- spring boot中利用mybatis-generator插件生成代码
- 整个互联网真的是呈现出一种勃勃的生机
- docker安装Oracle 11g
- 圆周卷积(circular convolution)
- 跨平台的网络通信中间件:ICE和ACE
- linux dig命令
- java wsdl文件生成_Spring Web Services 生成 WSDL 文件
- 新兴研究将如何更好地应对社会挑战?我们等你来共同探讨!
- linux下jmeter性能测试
- C/C++ 如何构造出强悍的宏
- Go语言并发安全与锁
- 美通社企业新闻汇总 | 2019.1.18 | 联通与中兴打通全球首个5G智能终端;碧桂园化身产城运营服务商...
- C语言 - 运输公司对用户计算运输费用。路程(s km)越远,每吨·千米运费越低。(用switch实现)
- 我的网龙面试经历(2013年c++程序员技术面试)
- 《最优状态估计-卡尔曼,H∞及非线性滤波》:第10章 有关卡尔曼滤波的其他讨论
- mac vim常用简单命令
- 自顶向下语法分析方法
- TCP/IP详解 (12)广播和多播
- 视频教程-清华-尹成老师-java基础-Day17-Java
热门文章
- 从零开始搭建个人大数据集群——环境准备篇
- CSP201803-4棋局评估
- 如何利用PPT制作九宫格图片效果
- 【亡羊补牢】JS灵魂之问 第23期 修炼内功 关于闭包的回顾
- 阿里巴巴、腾讯、百度和京东金融落户雄安新区 | 亚马逊加入FB与微软阵营,共同支持开源AI平台ONNX
- 基于virtuoso IC 618的LDO仿真实验
- 认计算机电源,电脑硬件认识之什么是电脑的电源[图文]
- 闲谈“个人核心竞争力”与“危机感”
- 红米k20pro可升级到鸿蒙系统,小米9系列Redmi K20 Pro迎MIUI 12稳定版更新
- java随笔三,真正的class大总结