精华内容
下载资源
问答
  • 2018-10-19 11:50:58

    https://blog.csdn.net/u012436149/article/details/53557008

    # -*- coding: utf-8 -*-
    # for multi-Gaussian
    __author__ = "KeithYin"
    
    import numpy as np
    def gaussian(x,mu,sigma):
        temp = -np.square(x-mu)/(2*sigma)
        return np.exp(temp)/(np.sqrt(2.0*np.pi*sigma)) # sigma = sigma^2
    def e_step(data, phais, mus, sigmas):
        Qs = []
        for i in xrange(len(data)):
            q = [phai*gaussian(data[i],mu,sigma) for phai,mu,sigma in zip(phais,mus,sigmas)]
            Qs.append(q)
        Qs = np.array(Qs)
        Qs = Qs / np.sum(Qs,axis=1).reshape(-1,1)
        return Qs
    def m_step(data, phais, mus, sigmas, Qs):
        data = np.array(data)
        gama_j = np.sum(Qs,axis=0)
        new_phais = gama_j/len(data)
        print "new_phai:",
        print new_phais
        mu_temp = np.sum(Qs*(data.reshape(-1,1)),axis=0)
        new_mus =mu_temp/gama_j
        X_i_mu_j = np.square(np.array([data]).reshape(-1,1)-np.array([mus]))
        new_sigmas = np.sum(Qs*X_i_mu_j,axis=0)/gama_j
        return new_phais,new_mus,new_sigmas
    def EM(data,k=1):
        # 设置均值
        phais = [1.0/k for i in xrange(k)] # 各高斯模型的系数
        mus = [i for i in xrange(k)]       # 混合高斯的初始均值
        sigmas = [1 for i in xrange(k)]    # 混合高斯的初始标准差
        # 开始学习
        for i in xrange(100):
            Qs = e_step(data,phais,mus,sigmas)
            phais, mus, sigmas= m_step(data,phais,mus,sigmas,Qs)
            print phais,mus,sigmas
    
    if __name__ == "__main__":
        s1 = np.random.normal(19,1,10000)
        s2 = np.random.normal(1,1,10000)
        s3 = np.concatenate((s1,s2),axis=0)
    
        EM(s3,2)
    更多相关内容
  • 它开箱即用,生成一维高斯混合的随机数据集,并将推理过程可视化。 参考: * Carl Edward Rasmussen:无限高斯混合模型 -> http://www.kyb.mpg.de/fileadmin/user_upload/files/publications/pdfs/pdf2299.pdf
  • 高斯混合模型意味着每个数据点(随机)从 C 类数据之中抽取,概率 p_i 从第 i 类中抽取,并且每个类都分布为具有平均标准差 mu_i 和 sigma_i 的高斯分布。 给定从这种分布中提取的组数据,我们试图估计这些未知...
  • MATLAB陡度代码gmm1-用于MATLAB的一维高斯混合模型工具箱 一维高斯混合模型(gmm1)的计算工具箱。 该代码通常很快,但是还有进一步改进的空间(例如,改进的矢量化)。 内容: gmm1cdf.m :gmm1累积分布函数(cdf)...
  • 它开箱即用,生成二维高斯混合的随机数据集,并使用无限高斯混合模型可视化推理过程。 参考: * Carl Edward Rasmussen:无限高斯混合模型 -> ...
  • EM最大期望算法是个数值求解似然函数极大值的迭代算法,就好像梯度下降算法是种数值求解损失函数极小值的迭代算法一样。EM算法通常适合于随机变量依赖于另外一些不可观测的随机变量(称之为隐...

    EM最大期望算法是一个数值求解似然函数极大值的迭代算法,就好像梯度下降算法是一种数值求解损失函数极小值的迭代算法一样。

    EM算法通常适合于随机变量依赖于另外一些不可观测的随机变量(称之为隐含变量或者中间变量)的场景

    此时由于似然函数的表示形式较为复杂(含有对隐含变量的累加求和或者积分),难以求导获取似然函数的极大值,也无法方便地应用梯度下降算法进行优化。

    EM算法是一个类似梯度下降算法的迭代算法,它首先给随机变量分布参数赋初始值,然后寻找到了一个便于优化的似然函数的下界 (恰好为似然函数在某个分布下的期望Expectation,期望中消去了隐变量),并通过不断地优化(Maximization) 这个下界求解似然函数的极值

    EM算法在机器学习的许多算法中都有使用到,如

    • KMeans:实际上K-Means是一种Hard EM算法, 隐变量直接取最大概率的位置。

    • 支持向量机的SMO算法

    • LDA主题模型参数估计

    • 混合高斯模型的参数估计

    • HMM隐马尔科夫模型的参数估计

    本篇文章我们将详述EM算法的推导过程,并以一维GMM高斯混合模型为例,示范EM算法的应用方法。

    公众号后台回复关键字:源码,获取本文含全部公式的markdown文件。

    一,EM最大期望算法

    当我们关心的随机变量依赖于另外一些不可观测的随机变量时,通过对我们关心的随机变量采样,我们将难以直接通过最大似然估计的方法推断我们关心的随机变量分布律中的未知参数。

    例如我们有100个学生的身高数据,其中有一些是男生,另外一些是女生。男生和女生的身高服从不同的正态分布,但是我们不知道哪些数据是男生的,哪些是女生的,这是这个模型的隐含变量,是不可以被观测到的。

    那么如何根据这批身高数据估计男女生各自正态分布的均值和方差,以及这批数据中男生的比例呢?

    期望最大化算法 EM (Expectation Maximization)这时候就派上用场了,它能够解决这种含有隐含随机变量的模型的参数估计的问题。

    设观测随机变量为 , 隐含随机变量为 ,待确定参数为

    确定时, 的分布函数由 给出。

    按照极大似然原理,并使用全概率公式,似然函数可以写成

    对数似然函数可以写成

    对数似然函数中,由于有对 的求和,如果尝试对 求偏导等于0来计算最优的 ,将难以得到对应的解析解。这和目标函数非常复杂时,无法直接解析求解只能使用梯度下降这类迭代算法是一样的。

    从原则上说,在一些较为简单的情况下我们也能够使用梯度下降法求解对数似然的最优值,例如当隐藏变量Z是离散随机变量时,且可取值较少,我们很容易将对z的求和表示出来,从而可以计算梯度进而使用梯度下降法。

    但对于一般情况,对z的求和将难以进行,如果Z是连续的随机变量,对z的求和将变成积分,此时使用梯度下降法将更加困难。

    我们可以尝试和梯度下降算法效果相当的迭代算法。最大期望算法EM正是可以实现这个目的。

    大概原理如下,我们首先给 赋初始值 ,然后在此基础上,找到一个可以使得对数似然函数变大的 ,然后再在此基础上找到一个能够使对数似然函数变得更大的 ,如此便可不断地提高对数似然函数的值。迭代执行n干次后,如果 的差值足够小,那么我们认为就找到了比较合适的  作为 的估计值。

    下面阐述最大期望算法的原理推导。

    假设在第n次迭代,我们的对数似然函数取值为

    我们希望找到一个 使得

    下面我们开始寻找符合条件的

    构造函数

    由于 是严格凹函数,Jensen不等式成立

    存在以下缩放:

    注意到

    因此

    取 

    则有

    即符合我们寻找的条件。

    消去无关量,我们可以得到

    注意到 实际上是一个分布,因此右边可以理解成求随机变量

    分布下期望的最大值。

    总结下 EM算法算法的流程:

    (1) 初始化

    注意这里的模型参数 要是完备的,即给定这些参数,能够计算联合概率分布函数

    ,对于男女生混合身高的例子,我们的参数应当包括 ,即男生平均身高和身高标准差,女生平均身高和身高标准差,以及男生的比例。

    (2) 计算E步,又分成两小步,先计算概率分布 ,再算出期望

    (3) 对E求极大,解出 的新的估计,将新的估计值代入第(1)步,直到收敛。

    可以证明EM算法是收敛的,但不能保证它能收敛到全局最优,因此可以尝试多个不同的初始值,计算结果,并挑选能够使似然函数取值最大的结果。

    二,一维GMM高斯混合模型

    高斯分布模型也叫正态分布模型,其概率密度函数如下:

    GMM高斯混合模型的概率密度函数为多个高斯分布的线性组合:

    其中 为正数,并且:

    高斯混合模型的 参数可以理解为样本属于第 类的概率。

    则高斯混合模型的概率密度函数可以表示成如下形式:

    根据EM算法,

    (1)我们首先取初始化参数

    然后执行迭代过程。

    (2)我们先求期望值

    代入贝叶斯公式

    (3)我们求期望极大值对应的 作为  

    考虑到约束

    根据拉格朗日乘子法,作拉格朗日函数

    取极大值时我们有:

    于是我们有:

    解得:

    如此迭代,直到收敛。

    展开全文
  • MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据)在MATLAB中...1. 一维高斯混合数据的产生function data=generate_GMM()%前两列是数据,最后一列是类标签%数据规模N=300;%数据维度% dim=1;%%%混合比例para...

    MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据)

    在MATLAB中“fitgmdist”的用法及其GMM聚类算法中介绍过"fitgmdist"函数的用法,这次用"fitgmdist"拟合一维数据。

    1. 一维高斯混合数据的产生

    function data=generate_GMM()

    %前两列是数据,最后一列是类标签

    %数据规模

    N=300;

    %数据维度

    % dim=1;

    %%

    %混合比例

    para_pi=[0.3 0.2 0.5];

    %第一类数据

    mul=0; % 均值

    S1=1; % 协方差

    data1=mvnrnd(mul, S1, para_pi(1)*N); % 产生高斯分布数据

    %第二类数据

    mu2=4;

    S2=2;

    data2=mvnrnd(mu2,S2,para_pi(2)*N);

    %第三类数据

    mu3=-4;

    S3=1;

    data3=mvnrnd(mu3,S3,para_pi(3)*N);

    data = [data1, ones(para_pi(1)*N,1); data2, 2*ones(para_pi(2)*N,1); data3, 3*ones(para_pi(3)*N,1)];

    save data_gauss data

    2. 拟合高斯混合模型

    load data_gauss

    data=data(:,1);

    K=3;

    gmm=fitgmdist(data, K);

    % 自定义参数

    % RegularizationValue=0.001; %正则化系数,协方差矩阵求逆

    % MaxIter=1000; %最大迭代次数

    % TolFun=1e-8; %终止条件

    % gmm=fitgmdist(data, K, 'RegularizationValue', RegularizationValue, 'CovarianceType', 'diagonal', 'Start', 'plus', 'Options', statset('Display', 'final', 'MaxIter', MaxIter, 'TolFun', TolFun));

    [N, D]=size(data);

    mu=gmm.mu; %均值

    Sigma=gmm.Sigma; %协方差矩阵

    ComponentProportion=gmm.ComponentProportion; %混合比例

    Y=zeros(N, K);

    for k=1:K

    Y(:,k)=ComponentProportion(k).*normpdf(data, mu(k), Sigma(:,:,k));

    end

    YY=sum(Y, 2);

    plot(data,YY,'r.')

    3. 结果

    fcdda7af5780386ab17fabcb75111c51.png

    4. 参考

    展开全文
  • 一维高斯模型(One-dimensional Gaussian Model) 若随机变量X服从一个数学期望为,标准方差为的高斯分布,记为: x~N(,)。 则概率密度函数为: 高斯分布的期望值决定了其位置,标准方差决定了其幅度。 ...

    一维高斯模型(One-dimensional Gaussian Model)

    若随机变量X服从一个数学期望为\mu,标准方差为\delta的高斯分布\sigma ^{2},记为:

    x~N(\mu\sigma ^{2})。

    则概率密度函数为:


    高斯分布的期望值\mu决定了其位置,标准方差\sigma ^{2}决定了其幅度。 

             

    高斯分布的概率分布函数

    高斯分布标准差在概率分布的数据意义

    高斯分布重要量的性质

    • 密度函数关于平均值对称
    • 平均值是它的众数(statistical mode)以及中位数(median)
    • 函数曲线下68.268949%的面积在平均值左右的一个标准差范围内
    • 95.449974%的面积在平均值左右两个标准差2σ的范围内
    • 99.730020%的面积在平均值左右三个标准差3σ的范围

    标准正态分布是μ=0,\sigma ^{2}=1。如下图所示:

    \mu =\frac{1}{m}\sum_{i=1}^{m}x^{(i)}\sigma ^{2}=\frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu )^{2}x

    注:机器学习中对于方差我们通常只除以m而非统计学中的m−1(因为均值进去一个点)。这里顺便提一下,在实际使用中,到底是选择使用1/m还是1/(m−1)其实区别很小,只要你有一个还算大的训练集,在机器学习领域大部分人更习惯使用这个版本的公式。这两个版本的公式在理论特性和数学特性上稍有不同,但是在实际使用中,他们的区别甚小,几乎可以忽略不计。

    中心极限定理

    正态分布有一个非常重要的性质:在特定条件下,大量统计独立的随机变量的平均值的分布趋于正态分布,这就是中心极限定理。中心极限定理的重要意义在于,根据这一定理的结论,其他概率分布可以用正态分布作为近似。中心极限定理阐明了随着有限方差的随机变量数量增长,它们的和的分布趋向正态分布。

    1、参数为n和p的二项分布,在n相当大而且p接近0.5时近似于正态分布。 
    (有的参考书建议仅在np与n(1−p)至少为5时才能使用这一近似)。近似正态分布平均数为μ=np且方差为σ^2=np(1−p)(见下图)正态分布的概率密度函数,参数为μ = 12,σ = 3,趋近于n = 48、p = 1/4的二项分布的概率质量函数。 

    2、一泊松分布带有参数λ当取样样本数很大时将近似正态分布λ. 
    近似正态分布平均数为μ=λ且方差为σ^2=λ.,这些近似值是否完全充分正确取决于使用者的使用需求。

    其他一些相关分布介绍

    多维高斯模型(Multil-dimensional Gaussian Model)

    多维单高斯是如何由一维单高斯发展而来的呢? 

    同理,高维情形相同!


    举个栗子:

    再比如:

    以下是几种高斯模型:

    上面几个图很好理解,只是在改变协方差矩阵对角线上的数改的越大,图形就越尖!

    这上面几个图其实就是高斯模型在平面上的投影,等高线上的(x,y)概率是相等的。

    1. 针对二维高斯分布,若随机变量中的两个维度不相关,协方差矩阵对对角阵,则如下图所示 

    构成一个圆形。

    2.若两个维度数据相关,协方差矩阵为对称矩阵,则如下图所示 

    构成一个椭圆形

    3.针对二维高斯分布,协方差矩阵的对角线元素为X_{1}X_{2}轴的方差,反斜对角线上的两个值为协方差,表明X_{1}与X2X2的线性相关程度,(正值时:X_{1}增大,X_{2}也随之增大;负值时:X_{1}增大,X_{2}随之减小)。 

    能够看出,图形的形状跟方向跟协方差矩阵XX^{T}相关,所在轴的方差越大则该方向越长,协方差矩阵最大特征值对应的特征向量的方向为椭圆的朝向。

    高斯混合模型GMM(Gaussian Mixture Model)

    统计学习的模型有两种,一种是概率模型,一种是非概率模型。 
    所谓概率模型,是指训练模型的形式是P(Y|X)。输入是X,输出是Y,训练后模型得到的输出不是一个具体的值,而是一系列的概率值(对应于分类问题来说,就是输入X对应于各个不同Y(类)的概率),然后我们选取概率最大的那个类作为判决对象(软分类–soft assignment)。所谓非概率模型,是指训练模型是一个决策函数Y=f(X),输入数据X是多少就可以投影得到唯一的Y,即判决结果(硬分类–hard assignment)。 
    所谓混合高斯模型(GMM)就是指对样本的概率密度分布进行估计,而估计采用的模型(训练模型)是几个高斯模型的加权和(具体是几个要在模型训练前建立好)。每个高斯模型就代表了一个类(一个Cluster)。对样本中的数据分别在几个高斯模型上投影,就会分别得到在各个类上的概率。然后我们可以选取概率最大的类所为判决结果。 
    从中心极限定理的角度上看,把混合模型假设为高斯的是比较合理的,当然,也可以根据实际数据定义成任何分布的Mixture Model,不过定义为高斯的在计算上有一些方便之处,另外,理论上可以通过增加Model的个数,用GMM近似任何概率分布。 
    混合高斯模型的定义为:
    p(x)=\sum_{k=1}^{K}\pi _{k}p(x|k)

    其中K为模型的个数;\pi _{k}为第k个高斯的权重;p(x|k)则为第k个高斯概率密度,其均值为\mu _{k},方差为\sigma _{k}^{2}。对此概率密度的估计就是要求出\pi _{k}\mu _{k}\sigma _{k}^{2}各个变量。当求出p(x)的表达式后,求和式的各项的结果就分别代表样本x属于各个类的概率。 

    如下是李航老师《统计学习方法》中给出的GMM定义:

    附上一个大佬写的GSM,深入浅出值得一看漫谈 Clustering (3): Gaussian Mixture Model

    展开全文
  • 高斯混合模型

    千次阅读 2021-05-09 17:13:53
    先给出高斯混合模型的定义,高斯混合模型是指具有如下形式的概率分布模型: (1) 其中,是系数,且,,而是高斯分布密度,,对于随机变量y是一维数据时, (2) 称为第k个分模型。 理解 高斯混合模型属于生成...
  • python 高斯混合模型

    千次阅读 2020-12-20 06:02:22
    在介绍高斯混合模型之前,我们需要了解以下几个概念:一元高斯分布函数协方差矩阵多元高斯分布函数一元高斯分布高斯分布也叫正态分布,是种非常常见对连续概率分布。若随机变量 X 服从参数 $\mu$ 和 $\delta$ 的...
  • 2.2高斯混合模型 3模型参数学习 3.1单高斯模型 3.2高斯混合模型 4高斯混合模型与K均值算法对比 1 混合模型(Mixture Model) 混合模型是个可以用来表示在总体分布(distribution)中含有 K 个子分布的...
  • 小白枚,接触到GMM和EM,现将学习到的整理出来,如有错误,欢迎指正,文中涉及到公式的推导比较...(以上两条是基础,为了下面做铺垫,接下来我将通过例子引出高斯混合模型。) 3.高斯混合模型(GMM) 为什么会有高斯
  • 可以看出二维高斯混合模型,其中的d为数据的维度,在这里等于2;∑ 代表协方差矩阵,两行两列;这里的x以及μ都是二维的数据,用矩阵表示就是行两列。 协方差矩阵 理解协方差矩阵的关键在于牢记它计算的是不同...
  • 详解高斯混合模型与EM算法

    千次阅读 2019-11-05 15:38:19
    详解高斯混合模型与EM算法 详解高斯混合模型与EM算法高斯混合模型单高斯模型(Gaussian single model, GSM)一维高斯分布多维高斯分布混合高斯模型(Gaussian mixture model, GMM)混合高斯模型产生的原因直观理解...
  • 高斯混合模型 文章目录高斯混合模型EM算法高斯混合模型参数估计1、样本分类已知情况下的GMM2、样本分类未知的情况下的GMM 混合模型是个用来表示在总体分布中含有K个子分布的概率模型,也就是说,混合模型表示了...
  • 使用基于高斯混合模型的机器学习对 2 类和 3 类问题进行一维矩阵分类。 它还包含一个基于矩阵的 AND 门示例和大小为 12 和 3 的输入样本
  • 高斯混合模型及python代码

    千次阅读 2020-08-19 16:13:35
    高斯模型是一种常用的变量分布模型一维高斯分布的概率密度函数如下: f(x)=12πσexp(−(x−μ)22σ2)f(x)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^2}{2\sigma^2})f(x)=2π​σ1​exp(−2σ2(x−μ)2​) ...
  • 高斯混合模型 参数简介II . 高斯混合模型 评分函数III. 似然函数与参数IV . 生成模型法V . 对数似然函数VI . 高斯混合模型方法 步骤 I . 高斯混合模型 参数简介 1 . 模型 与 参数 : 高斯混合模型 概率密度函数 ...
  • 该算法基于RGB空间建立码本模型,然后基于码字中的R、G、B分量建立三维高斯模型,从而使整个码本具有三维高斯混合模型的特征.实验结果表明:该算法具有较高的实时性(该算法的平均帧率约23.0帧/s,而iGMM( improved ...
  • 高斯混合模型学习笔记 根据师兄(王延凯的博客)以及其他博主大佬的总结学习高斯混合模型,自己也作一下学习记录。 目录高斯混合模型学习笔记1、模型介绍2、模型求解步骤举个栗子参考: 1、模型介绍 高斯混合模型...
  • EM算法--二维高斯混合模型(GMMs)

    千次阅读 2019-03-30 20:58:21
    参考文章 ...EM算法是种迭代算法,1977年由Dempster等人总结出,用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计。EM算法的每次迭代由两步组成:E步,求期望(expectation);M步...
  • 高斯混合模型 二 使用EM算法对高斯混合模型进行参数估计 假设观测数据y1,y2,…yn 由高斯混合模型生成 因为高斯混合模型是由许多高斯模型组合而成的,我们无法确定某个观测数据yj 具体是由哪个高斯模型生成...
  • 对数据进行高斯混合拟合。 输入:数据、高斯数。 输出:均值、西格玛、权重、mAIC、rmse。 x 轴代表数据范围,而 y 轴代表密度。
  • 高斯混合模型的和详细的EM算法推导见《统计学习方法》 这里说明一点: EM算法叫期望极大算法,是先在当前参数下求得完全分布对于隐变量的期望,然后求解对数似然的最大化问题,以获得新轮迭代的参数。 其中核心...
  • python3 || 高斯混合模型GMM

    千次阅读 2017-12-19 19:40:40
    GMM模型的python实现预备知识:EM算法原理GMM算法原理友情提示:本代码配合GMM算法原理中的步骤阅读更佳哦!... R || 高斯混合模型GMM多元高斯混合模型多元高斯混合模型采用的是《机器学习》中的西瓜数据集。
  • 高斯混合模型 高斯混合模型是指具有如下形式的概率分布模型: 其中,是系数,,;是高斯分布密度,, ...称为第k个分模型。...对于二维高斯混合模型,d=2,y和都是二维的数据,用矩阵表示就是行...
  • EM算法--二维高斯混合模型(GMM)

    万次阅读 2017-04-10 19:19:16
    EM算法是种迭代算法,1977年由Dempster等人总结出,用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计。EM算法的每次迭代由两步组成:E步,求期望(expectation);M步,求极大(maximization).所以这...
  • 简单可视化如何将EM算法用于高斯混合模型聚类。 您将需要使用matlab来运行代码。 修改datapath变量以使用另个数据集,并修改变量K更改群集数。 特色作品: 交互式绘图,您可以在其中选择分布以生成数据
  • sklearn之高斯混合模型

    千次阅读 2021-04-26 20:10:49
    什么是高斯分布? 高斯分布也叫正态分布,也就是常态分布,什么意思呢?比如说男性的身高,假如说有...一维正态分布公式:正态分布有两个参数,即期望(均数)μ和标准差σ,σ2为方差。 标准正态分布: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,871
精华内容 4,748
关键字:

一维高斯混合模型