高斯

判别模型、生成模型与朴素贝叶斯方法

可紊 提交于 2020-01-14 02:14:22
转载时请注明来源: http://www.cnblogs.com/jerrylead 1判别模型与生成模型 上篇报告中提到的回归模型是判别模型,也就是根据特征值来求结果的概率。形式化表示为 ,在参数 确定的情况下,求解条件概率 。通俗的解释为在给定特征后预测结果出现的概率。 比如说要确定一只羊是山羊还是绵羊,用判别模型的方法是先从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。换一种思路,我们可以根据山羊的特征首先学习出一个山羊模型,然后根据绵羊的特征学习出一个绵羊模型。然后从这只羊中提取特征,放到山羊模型中看概率是多少,再放到绵羊模型中看概率是多少,哪个大就是哪个。形式化表示为求 (也包括 ,y是模型结果,x是特征。 利用贝叶斯公式发现两个模型的统一性: 由于我们关注的是y的离散值结果中哪个概率大(比如山羊概率和绵羊概率哪个大),而并不是关心具体的概率,因此上式改写为: 其中 称为后验概率, 称为先验概率。 由 ,因此有时称判别模型求的是条件概率,生成模型求的是联合概率。 常见的判别模型有线性回归、对数回归、线性判别分析、支持向量机、boosting、条件随机场、神经网络等。 常见的生产模型有隐马尔科夫模型、朴素贝叶斯模型、高斯混合模型、LDA、Restricted Boltzmann Machine等。 这篇博客较为详细地介绍了两个模型:

机器学习-生成学习算法

感情迁移 提交于 2020-01-14 02:14:04
本讲大纲: 1.生成学习算法(Generative learning algorithm) 2.高斯判别分析(GDA,Gaussian Discriminant Analysis) 3.朴素贝叶斯(Naive Bayes) 4.拉普拉斯平滑(Laplace smoothing) 1.生成学习算法 判别学习算法(discriminative learning algorithm): 直接学习 p(y|x) (比如说logistic回归)或者说是从输入直接映射到{0,1}. 生成学习算法(generative learning algorithm): 对 p(x|y)(和p(y)) 进行建模. 简单的来说,判别学习算法的模型是通过一条分隔线把两种类别区分开,而生成学习算法是对两种可能的结果分别进行建模,然后分别和输入进行比对,计算出相应的概率。 比如说良性肿瘤和恶性肿瘤的问题,对良性肿瘤建立model1(y=0),对恶性肿瘤建立model2(y=1),p(x|y=0)表示是良性肿瘤的概率,p(x|y=1)表示是恶性肿瘤的概率. 根据 贝叶斯公式(Bayes rule) 推导出y在给定x的概率为: 2.高斯判别分析 GDA是我们要学习的第一个生成学习算法. GDA的两个假设: 假设输入特征x∈Rn,并且是连续值; p(x|y)是 多维正态分布(multivariate normal

高斯差分

此生再无相见时 提交于 2020-01-13 21:52:52
DOG(Difference of Guassian):简称 高斯函数的差分,是灰度图像增强和角点检测的一种方法。 (一)理论基础: 下面详细介绍DOG的角点检测(也称特征点提取)的理论过程: 通过将目标图像与高斯函数进行卷积运算得到一幅目标图像的低通滤波结果,此过程称为去燥。(注:这里的Gaussian和高斯低通滤波器的高斯是一个含义,即:正态分布函数)。 公式(1) 正态分布函数 在某一尺度上的特征检测可以通过两个相邻高斯尺度空间的图像相减,得到DOG的响应值图像。 详细过程如下: 首先 :对一幅图像f(x,y)进行不同参数的高斯滤波计算,表示如下 其次:将滤波得到的结果g1(x,y)和g2(x,y)相减得到: 即:可以将DOG表示为: 公式(2) 函数的高斯差分函数 注:在具体的图像处理中,就是将两幅不同参数下的高斯滤波结果相减。得到DOG图 最后:以此依据上述操作得到三个不同尺度下的DOG图,进而在三维空间中求角点。 (二)实践步骤: 在具体的图像处理中操作如下: 图(1):原始图 第一步:将同一图像在不同的参数下进行高斯滤波计算,并相减,得到三个DOG图,效果图如下 图(2) 一个高斯平滑参数为0.3,另一个高斯平滑参数为0.4 图(3) 一个高斯平滑参数为0.6,另一个高斯平滑参数为0.7 图(4) 一个高斯平滑参数为0.7,另一个高斯平滑参数为0.8 第二步

室内定位系列(五)——目标跟踪(卡尔曼滤波)

混江龙づ霸主 提交于 2020-01-13 11:59:27
进行目标跟踪时,先验知识告诉我们定位轨迹是平滑的,目标当前时刻的状态与上一时刻的状态有关,滤波方法可以将这些先验知识考虑进来得到更准确的定位轨迹。本文简单介绍卡尔曼滤波及其使用。 原理 卡尔曼滤波的细节可以参考下面这些,有直观解释也有数学推导。 运动目标跟踪(一)--搜索算法预测模型之KF,EKF,UKF 初学者的卡尔曼滤波——扩展卡尔曼滤波(一) 理解Kalman滤波的使用 这里仅从目标定位跟踪的角度做一个简化版的介绍。 定位跟踪时,可以通过某种定位技术(比如位置指纹法)得到一个位置估计(观测位置),也可以根据我们的经验(运动目标常常是匀速运动的)由上一时刻的位置和速度来预测出当前位置(预测位置)。把这个观测结果和预测结果做一个加权平均作为定位结果,权值的大小取决于观测位置和预测位置的不确定性程度,在数学上可以证明在预测过程和观测过程都是线性高斯时,按照卡尔曼的方法做加权是最优的。 扩展: 在有些应用中,如果不是线性高斯的情况该怎么办?可以采用 EKF (扩展卡尔曼滤波),在工作点附近对系统进行线性化,即使不是高斯也近似成高斯去做。这样做有点太粗糙了,于是又有了 IEKF (迭代卡尔曼滤波,对工作点进行迭代优化), UKF或SPKF (无迹卡尔曼滤波,不做线性化,而是投影做出一个高斯分布去近似)。或者抛弃各种假设,直接采用蒙特卡洛的方式,假设出很多的粒子去近似分布,就是 PF

高斯的一段话

天大地大妈咪最大 提交于 2020-01-11 05:14:24
摘录高斯的一段话(出自 普林斯顿数学指南(第三卷) (豆瓣) ): 带来最大欢乐的并不是知识,而是学习的行动;并不是占有,而是达到那里的行动。当我弄清楚了以及搞完了一个主题以后,我就离它而去,以便再回到黑暗之中;永远不满足的人就是这么奇怪——如果他完成了一个建筑,这并不是为了能和平地住在里面,他会去建造另外一个。我想象,征服世界的人想必也是这样感觉的,他才征服了一个王国,就把武器伸向另一个王国。 作者:知乎用户 链接:https://www.zhihu.com/question/26081314/answer/32055792 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 来源: https://www.cnblogs.com/albert-think/p/6627195.html

混合高斯模型——学习笔记

可紊 提交于 2020-01-11 02:37:11
极大似然估计与EM算法: 详解EM算法与混合高斯模型(Gaussian mixture model, GMM)_林立民爱洗澡-CSDN博客 https://blog.csdn.net/lin_limin/article/details/81048411 GMM(高斯混合模型)以及简单实现_zjm750617105的专栏-CSDN博客 https://blog.csdn.net/zjm750617105/article/details/5243029 成分数的选择 在一个GMM里,BIC(Bayesian Information Criteria)准则是一种有效的成分数确定方法。注意,如果使用一个 Variational Bayesian Gaussian mixture , 可以避免指定GMM的成分数。 AIC准则 AIC准则是由日本统计学家Akaike与1973年提出的,全称是最小化信息量准则(Akaike Information Criterion)。它是拟合精度和参数个数的加权函数: AIC=2(模型参数的个数)-2ln(模型的极大似然函数) BIC准则 AIC为模型选择提供了有效的规则,但也有不足之处。当样本容量很大时,在AIC准则中拟合误差提供的信息就要受到样本容量的放大,而参数个数的惩罚因子却和样本容量没关系(一直是2),因此当样本容量很大时

HFUT - 大学物理B(2)_简答

拟墨画扇 提交于 2020-01-06 14:20:50
short answer question 如何用偏振片鉴别自然光、部分偏振光、线偏振光 以光传播方向为轴, 偏振片旋转360°, 如果光强随偏振片的转动没有变化, 这束光是自然光. 如果用偏振片进行观察时, 光强随偏振片的转动有变化但没有消光, 则这束光是部分偏振光. 如果随偏振片的转动出现两次消光, 则这束光是线偏振光. 在日常生活中看到肥皂膜呈现出彩色条纹, 解释该现象. 这是一种光的干涉现象. 太阳光中含有各种波长的光波, 当太阳光照射肥皂膜时, 经油膜上下两表面反射的光形成相干光束, 有些地方红光得到加强, 有些地方绿光得到加强, 这样就可以看到肥皂膜呈现出彩色条纹. 简述静电平衡条件, 并用静电平衡条件和电势差的定义解释处于静电平衡状态的导体是等势体, 导体的表面是等势面. 条件: 1.导体内任一点的电场处处为零; 2.导体表面上任一点的电场强度处处垂直于表面. 导体是等势体, 是因为导体内部电场强度处处为零, 所以导体上任意点处的电势差为零, 所以导体内部各点电势相等;导体是等势面, 是因为导体表面任一点处的场强都垂直于表面, 无切向分量, 沿表面的电势差为零, 电势没有变化, 所以导体表面各点电势相等, 并与导体内电势相等, 故导体是等势体. 电势的物理意义是什么?通常情况下如何选择电势零点?为什么感生电场中不能引入电势的概念? 电势是从能量角度上描述电场的物理量

浅谈变分自编码器(Variational Auto Encoder)

风流意气都作罢 提交于 2020-01-01 07:29:24
作者:SnowYuan 1.VAE简介 变分自编码器(Variational Autoencoder,VAE)是生成模型(Generative Model)的一种,另一种常见的生成模型是生成式对抗网络(Generative Adversarial Network,GAN),这里我们介绍下VAE的原理,并用Keras实现。 变分自动编码器很酷,他们让我们对大的数据集建模,设计出复杂的生成模型的数据,它们可以生成虚构的名人面孔和高分辨率数字艺术品的图像。这些模型在图像生成和增强学习方面也产生了当前最先进的机器学习结果。下图展示的是一个用VAE模型生成的虚构的名人面孔。 图1 一个变分的自动编码器生成的虚构的名人面孔 2. VAE原理 从概率的角度,我们假设任何数据集都采样自某个分布P(X|z),z 是隐藏的变量,代表了某种内部特征,比如手写数字的图片 x,z 可以表示字体的大小,书写风格,加粗、斜体 等设定,它符合某个先验分布,在给定具体隐藏变量 z 的情况下,我们可以从学到了 分布中采样一系列的生成样本,这些样本都具有 z 所表示的共性。 在P(z)已知(可以假定它符合已知的分布,比如N(0,1)的条件下,我们的目的就是希望能学会生成概率模型P(X|Z)。这里我们可以采用最大似然估计(Maximum likelihood estimation):一个好的模型

最小二乘法推导

◇◆丶佛笑我妖孽 提交于 2020-01-01 04:49:25
原文出处 : https://blog.csdn.net/u011026329/article/details/79183114 最小二乘法 1、什么是最小二乘思想? ​ 简单地说,最小二乘的思想就是要使得 观测点和估计点的距离的平方和达到最小 .这里的“二乘”指的是用平方来度量观测点与估计点的远近(在古汉语中“平方”称为“二乘”),“最小”指的是参数的估计值要保证各个观测点与估计点的距离的平方和达到最小。从这个上也可以看出,最小二乘也可用于拟合数据模型。 2. 最小二乘法推导 ​ 我们以最简单的一元线性模型来解释最小二乘法。什么是一元线性模型呢? 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线性是一个超平面… ​ 对于一元线性回归模型, 假设从总体中获取了 n n 个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,这条直线处于样本数据的中心位置最合理。 ​ 选择最佳拟合曲线的标准可以确定为

高斯消元法求解向量方程Ax=b

蓝咒 提交于 2019-12-30 08:19:43
#include <iostream> #include <malloc.h> #include <math.h> //非齐次线性方程组Ax=b double **mat_A; //存放系数矩阵A double *mat_b; //存放右值数组b double *result; //结果数组 const int M=3; //方阵的阶 const int N=3; /////////////////////////////////////// void init_ary() { //初始化系数矩阵 A 和右值数组 b; std::cout << "系数矩阵的行为 " << M << "列为 " << N << '\n'; std::cout << "input the mat_A and mat_b" << '\n'; mat_A = (double **)malloc(M*sizeof(double)); for(int i=0; i<M; i++) *(mat_A+i) = (double *)malloc(N*sizeof(double)); std::cout << "input the mat_A " << '\n'; for(i=0; i<M; i++) for(int j=0; j<N; j++) std::cin >> *(*(mat_A+i)+j); std: