精华内容
下载资源
问答
  • EM(Expectation-Maximization)算法是一种迭代式方法,主要应用于包含隐藏变量(latent variable)...上述是EM算法的两个基本迭代部分,在实际应用中EM算法更多的看作是一种算法思想,而不是特定的算法步骤,所以接...

    7da9c295a80b276d1cf49fc8f420ee47.png

    EM(Expectation-Maximization)算法是一种迭代式方法,主要应用于包含隐藏变量(latent variable)的参数估计,在无监督学习中有着广泛的应用,EM算法迭代包含两步:

    • 利用估计的参数值来求对数似然期望(expectation)。
    • 通过最大化对数似然期望来更新参数。

    上述是EM算法的两个基本迭代部分,在实际应用中EM算法更多的看作是一种算法思想,而不是特定的算法步骤,所以接下来我将通过一些具体应用来进一步阐述EM算法的主要思想。

    1、K-Means

    K-Means算法是一种简单好用的聚类方法,之所以把它提到最前面来是因为我觉得同样作为无监督学习方法,K-Means在很多方面都深刻的体现着EM算法的思想。

    那么首先我们来假设一个问题的形式:

    input: 一组不带label的数据:

    ,现在要对其进行聚类。

    output: 聚类模型

    因为与监督学习不同,数据没有带label,所以对于之前介绍的逻辑回归等分类方法就无法应用,而是需要我们从数据自身进行发掘。下面给出K-Means算法的主要步骤:

    1、随机初始化聚类重心(cluster centroids):

    2、Repeat until convergence:{
    for every i, set:

    for every j , set:

    }

    可以看到,K-Means主要包含两个迭代部分,首先是最小化重心与数据距离来更新参数,接着再对属于同一类的数据求平均值来更新重心。当进行了一段时间后重心不发生变化,K-Means算法也达到了收敛。

    对应的,第一步更新参数类似于EM算法中的maximization,而更新中心则对应于expectation步。虽然和真正的EM算法有着很大的差别,但是这种迭代更新的思想却是不谋而合,所以我们可以将其看作一种简化版的EM来辅助理解。

    2、高斯混合模型(GMM)

    接下来要介绍的高斯混合模型(Gaussian Mixture Model)是EM算法的一个重要应用,它应用广泛,而很多时候EM算法是对GMM进行参数估计的有效手段。

    2.1单高斯分布

    高斯分布又名正态分布,可以说是我们最常见的一种分布之一了,而且实验表明许多受多个独立因素影响的数据(如体重身高等)都满足高斯分布。

    61af2d51c34189b40b0dd200597d0b36.png
    如上图所示就是一个典型的二维高斯分布

    高斯分布有两个重要参数:均值

    以及方差
    ,若随机变量
    服从高斯分布,则将其写作:

    一维高斯分布的概率密度函数为:

    多维高斯分布的概率密度函数为:

    其中

    是协方差矩阵的行列式。

    2.2高斯混合模型

    顾名思义,高斯混合模型就是多个高斯分布线性组合在一起形成的新的分布,理论上来说,任何分布都可以由多个混合分布组合表示,但由于高斯混合模型地应用广泛,这里我们主要讨论它。

    如下图所示就是两个二维高斯分布的混合:

    1f60be2ab03eba6c528423b7998aa1c9.png

    那么如何来描述上述的分布呢?很显然使用单个高斯模型是不够准确的(从图中可以直观地看到两个不同地聚类),所以由此引入了高斯混合模型地数学表达:

    其中

    是权重,且
    ,而
    代表第k个分量模型。

    如何理解GMM呢,首先我们先引入一个K维的二值变量

    ,其中某个特定的元素
    ,其余元素都为0,因此
    满足

    根据上述定义,

    有K个不同的状态,用来表示观测数据
    属于哪个分量模型,因此
    每一个观测数据
    都对应一个
    ,譬如
    表示
    来自第k个分量模型,同时变量
    的边缘概率
    则表示观测数据
    属于第k个分量模型的概率。而由于
    是“1 of K”的形式,因此变量
    的分布也可以写成如下形似:

    相应的,当对

    指定一个特定的值时,那么
    的条件概率分布就是一个特定的高斯分布:

    也可以写成:

    那么就可以得到联合概率分布

    ,而变量
    的边缘概率分布就可以通过联合概率对所有可能的
    值进行求和得到,即:

    关于公式(2)第二个等式,乍一看会有些跳跃,但仔细想一想就会知道,所有可能的

    值其实就是考虑
    属于所有K个分量模型的可能性,所以体现的形式就是对所有模型加权求和。同时我们也发现经过一番推导我们得到了最初我们给出的高斯混合模型的表达式,所以我们所定义的
    变量
    可以看作是一个隐含变量
    ,用于决定观测数据属于哪个模型。

    2.3使用EM方法估计GMM的参数

    为了方便使用EM方法估计GMM的参数,我们首先定义一个新的量

    ,用它来表示后验概率
    。根据贝叶斯理论,我们通过先验概率
    以及条件概率
    我们可以写出:

    上面的概率公式给出的就是在已知观测样本的前提下估计隐藏变量的概率,这是我们在使用EM算法中的一个重要的过渡参数。

    2.3.1极大似然函数

    为了估计GMM的参数,我们要估计

    这三个参数,所以我们首先将公式(1)的GMM模型改写成:
    。然后由于
    之间独立同分布,因此:

    为了估计参数,我们要对其进行最大化似然函数操作,为了计算方便,我们首先给出公式(4)对数似然函数:

    在最大化似然函数的前提下,我们首先来估计参数

    ,很自然的做法就是让公式(5)对变量
    求导,然后令其导数为0,即:

    接着对公式(6)两边同乘

    后化简可得:

    其中

    ,(化简借用公式(3))。

    同样我们对

    求导并令其导数为0,可得:

    最后我们要估计的参数是

    ,但这里需要注意的是,在一开始我们对权值
    有过限制,即:
    ,因此在极大化似然函数时要考虑这一条件。所以我们使用拉格朗日法乘数法来求下面式子的极大值:

    然后可得:

    对公式(10)前面分子分母约分后可得:

    ,同时又由于
    ,所以可得
    。接着我们对公式(10)两边同乘
    ,进行化简后我们可以得到:

    2.3.2 EM算法应用于GMM的算法步骤

    根据(7)、(8)、(11)三式我们已经得到了GMM重要参数的更新迭代公式,这就是EM算法应用于高斯混合模型的实例,其过程包含E步(计算

    )和M步(更新参数
    )。接下来我们把具体的算法过程写下来:
    Input:观测数据

    (1)初始化GMM参数:均值
    ,协方差
    ,权值

    (2)E步:根据当前模型的参数,计算 分模型k对观测数据
    的响应度(responsibility)

    (3)M步: 迭代更新模型的参数值:

    其中:

    (4):估算对数似然函数的值:

    重复(2)、(3)步直到算法收敛(似然函数值变化或参数变化小于设定值)

    2.3.3 Example

    下面我们使用一组真实数据来模拟使用EM算法求解GMM的过程。

    数据:老忠实泉数据 (一组泉水喷发与时间的数据)

    我们首先表示出数据的分布:

    6ec45c99e189ac6f58480ad393903e33.png

    可以很明显地看出数据分为两类,因此我们可以使用包含两个高斯分布的GMM对其建模。

    在实际操作时为了有利计算,往往会把数据进行归一化处理。

    首先是对参数的初始化:

    def init_params(shape, K): # K为模型中高斯分布数量
        N, D = shape # 样本数量和数据维度
        mu = np.random.rand(K, D)
        cov = np.array([np.eye(D)] * K)
        alpha = np.array([1.0 / K] * K)
    
        return mu, cov, alpha

    然后是E步:

    def getExpectation(Y, mu, cov, alpha):
        N = Y.shape[0]
        K = alpha.shape[0]
    
        # 计算响应度矩阵
        gamma = np.zeros((N, K))
    
        for k in range(K):
            gamma[:, k] = phi(Y, mu[k], cov[k])
        gamma = np.mat(gamma)
    
        # 计算每个模型对每个样本的响应度
        for k in range(K):
            gamma[:, k] = alpha[k] * gamma[:, k]
        for i in range(N):
            gamma[i, :] /= np.sum(gamma[i, :])
        return gamma

    接着是M步:

    def maximize(Y, gamma):
        N, D = Y.shape
        K = gamma.shape[1]
    
        #初始化参数值
        mu = np.zeros((K, D))
        cov = []
        alpha = np.zeros(K)
    
        # 更新每个模型的参数
        for k in range(K):
            # 第 k 个模型对所有样本的响应度之和
            Nk = np.sum(gamma[:, k])
            # 更新 mu
            # 对每个特征求均值
            for d in range(D):
                mu[k, d] = np.sum(np.multiply(gamma[:, k], Y[:, d])) / Nk
            print(mu)
            # 更新 cov
            cov_k = np.mat(np.zeros((D, D)))
            for i in range(N):
                cov_k += gamma[i, k] * (Y[i] - mu[k]).T * (Y[i] - mu[k]) / Nk
            cov.append(cov_k)
            # 更新 alpha
            alpha[k] = Nk / N
        cov = np.array(cov)
        return mu, cov, alpha

    然后只需要重复迭代E步和M步达到收敛即可(可以自行设定收敛条件):

    def GMM(Y, K, times):
        Y = scale_data(Y)
        mu, cov, alpha = init_params(Y.shape, K)
        # 收敛条件
        delta = 0.000001
        for i in range(times):
            print("times: {}".format(i))
            gamma = Expectation(Y, mu, cov, alpha)
            last_mu = mu
            last_cov = cov
            last_alpha = alpha
            mu, cov, alpha = maximize(Y, gamma)
            mu_delta = np.sum(np.abs(last_mu - mu))
            cov_delta = np.sum(np.abs(last_cov - cov))
            alpha_delta = np.sum(np.abs(last_alpha - alpha))
            # 判断是否收敛
            if mu_delta < delta and cov_delta < delta and alpha_delta <delta:
                break
    
        return mu, cov, alpha

    下面是迭代之后得到的结果:

    479bcec1b9896bb378f0d8403e3743f3.png

    从图中可以看到原始分布被有效的划分为了两个部分。

    3、Conclusion

    总结来说,EM算法的思路就是先求对数似然函数的期望值,然后再最大化似然函数以此来更新参数,通过不断地迭代来找的模型的参数。

    对于使用EM算法比较重要的一点就是要找好隐含变量,通过隐含变量把观测数据与

    展开全文
  • Gaussian Mixture Model高斯混合模型相关概念及配图 目录 GMM相关论文 GMM算法步骤相关配图 GMM相关论文 更新…… GMM算法步骤相关配图 ...

    Gaussian Mixture Model高斯混合模型相关概念及配图

     

    目录

    GMM相关论文

    GMM算法步骤相关配图


     

     

     

    GMM相关论文

    更新……

     

     

    GMM算法步骤相关配图

     

     

     

     

     

     

     

     

    展开全文
  • EM算法高斯混合模型 Jensen不等式 极大似然估计 EM算法 问题描述 EM算法基本步骤 EM算法推导 高斯混合模型 高斯分布 EM算法求解GMM的步骤 EM算法高斯混合模型 EM算法(The Expectation-Maximization ...

    EM算法与高斯混合模型

    EM算法(The Expectation-Maximization Algorithm)可以解决HMM的参数估计问题,在MT中的词对齐中也会用到。

    Jensen不等式

    Jensen不等式表述如下:
    如果f是凸函数,X是随机变量,那么E[f(X)]f(E[X])特别地,如果f是严格凸函数,那么E[f(X)]=f(E[X]);当且仅当p(x=E[x])=1,也就说X是常量。用图表示就是:
    jensen不等式
    Jensen不等式应用于凹函数时,不等号方向反向,也就是E[f(X)]f(E[X])

    Jensen’s Inequality
    f凸函数且 iλi=1, λi0 时,有f(iλixi)iλif(xi)

    极大似然估计

    极大似然估计(Maximum Likelihood Estimation)提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。但其前提是,假设所有的采样都是独立同分布的。
    假设x1,x2,,xn dii,参数为θ的模型f产生上述采样可表示为:

    f(x1,x2,,xn|θ)=f(x1|θ)f(x2|θ),,f(xn|θ)

    此时x1,x2,,xn为已知,θ为未知,则定义为
    L(θ|x1,x2,,xn)=f(x1,x2,,xn|θ)=i=1nf(xi|θ)

    在实际应用中常用的是两边取对数(Ln 或者 log不影响),得到公式如下:
    lnL(θ|x1,x2,,xn)=i=1nlnf(xi|θ)   ι^=1nlnL

    其中lnL(θ|x1,x2,,xn)称为对数似然,而ι^称为平均对数似然。而我们平时所称的最大似然为最大的对数平均似然,即:
    θ=argmaxθL(θ|X)

    显然对L(θ|X)求导,令导数得0 ,求得的解即为最优的θ了,而且对MLE来说数据量越多,所得到的模型会越能反映数据的真实分布。

    EM算法

    期望最大化算法(Expectation Maximization Algorithm,EM)用于含有隐变量概率模型的MLE,隐变量就是每个可见随机变量的值都对应着一个隐藏的随机变量。参见三硬币模型实例

    问题描述

    给定一个训练集X=x1,,xm,我们希望拟合包含隐含变量z的模型P(x,z;θ)中的参数 θ。根据模型的假设,每个我们观察到的xi还对应着一个我们观察不到的隐含变量zi,我们记Z=z1,,zm。做极大对数似然就是要求θ的“最优值”:

    θ=argmaxθL(θ|X)

    其中
    L(θ)=logP(X|θ)=logZP(X,Z|θ)

    直接使用log 套∑的形式直接求解θ往往非常困难。EM 通过迭代逐步极大化L(θ),假设第i次迭代后θ的估计值是θi,θi已知后,下一次迭代需要使得L(θ)更大.

    EM算法基本步骤

    输入:观测数据X,隐变量数据 Z,联合分布P(X,Z|θ)
    输出:极大似然参数θ
    1. 选择初始参数θ0
    2. E Step:计算隐变量Z在参数θi下的后验分布P(Z|X,θi)以得到:

    EZ|X;θiL(θ|X,Z):=EZ|X;θilogP(X,Z|θ)=ZP(Z|X,θi)logP(X,Z|θ)

    3. M Step:估计θ(i+1)的值:
    θ(i+1)=argmaxθEZ|X,θiL(X,Z|θ)

    4. 重复(2)至(3),直到收敛.

    EM 算法每次迭代都建立在上轮迭代对θ的最优值的估计θi上,利用它可以求出Z的后验概率P(Z|X,θi) ,进而求出L(θ|X,Z) 在分布ZP(Z|X,θ)上的期望 EZ|X;θiL(θ|X,Z)

    因为argmaxθL(θ|X,Z)在未知Z的情况下难以直接计算,EM算法就转而通过最大化它的期望EZ|X;θiL(θ|X,Z)来逼近θ的最优值,得到θ(t+1)。注意由于L(θ|X,Z)的这个期望是在Z的一个分布上求的,这样得到的表达式就只剩下θ一个未知量,因而绕过了z未知的问题。而θ(i+1)又可以作为下轮迭代的基础,继续向最优逼近。

    算法中E-step就是在利用θi 求期望EZ|X;θiL(θ|X,Z),这就是所谓“Expectation”;
    M-step就是通过寻找 θ(i+1) 最大化这个期望来逼近θ的最优值,这就“Maximization”。

    EM算法推导

    L(θ)=logP(X|θ)=logZP(X,Z|θ)

    引入一个概率分布Q(θ,θi)=EZ|X,θilogL(θ|X,Z)=P(Z|X,θi),利用分子分母同乘Q(θ,θi)的trick(期望可以写成概率和样本的乘积形式),得到:
    L(θ)=logZP(X,Z|θ)=logZQ(θ,θi)P(X,Z|θ)Q(Z)=logEZQ[P(X,Z|θ)Q(Z)]

    根据 Jensen 不等式,对于任意分布Q都有:
    L(θ)=logEZQ[P(X,Z|θ)Q(θ,θi)]EZQ[logP(X,Z|θ)Q(Z)]

    且上面的不等式在P(X|Z,θ)Q(θ,θi)为常数时取等号。之后Qθ,θi用贝叶斯公式展开:
    Q(θ,θi)=P(X|Z,θi)P(Z|θi)P(X|θi)

    带入回上式:
    L(θ)EZ|X,θi[logP(X,Z|θ)P(Z|X,θi)]=EZ|X,θilog[P(X|Z)P(Z|θ)P(X|θi)P(X|Z,θi)P(Z|θi)]=EZ|X,θilog[P(Z|θ)P(X|θi)P(Z|θi)]=EZ|X;θi[logP(Z|θ)]+EZ|X;θi[logP(X|θi)]EZ|X;θi[logP(Z|θi)]=Q(θ,θi)Q(θi,θi)+L(θi)

    第二行P(X|Z),P(X|Z,θi)这两个其实相同所以约去;最后一行在已知θi时,仅
    Q(θ,θi)不固定,所以需要不断调整下一时刻θ使之最大。即可得到:
    θt+1:=argmaxθQ(θ,θi)

    除以上方法推导,还可以用前项减后项方法推导L(θ)L(θ(i))
    具体见The Expectation Maximization Algorithm A short tutorial

    高斯混合模型

    高斯分布

    假设数据xRn服从参数为μ,Σ的高斯分布:

    N(x;μ,Σ)=1(2π)n/2|Σ|1/2exp{12(xμ)TΣ1(xμ)}

    这里μ为均值,Σ为协方差矩阵,对于单个高斯分布,当给定数据集之后,直接进行 MLE 即可估计高斯分布的参数;但是有些数据集是多个高斯分布叠加在一起形成的,也就数据集是由多个高斯分布产生的,如下图所示三个高斯分布叠加在一起:
    高斯混合模型图
    多个高斯分布叠加在一起便是混合高斯模型 GMM,其的定义如下:
    p(x)=k=1KπkN(x|μk,Σk)

    这里K表示高斯分布的个数,πk代表混合系数,且满足0πk1,kπk=1,可以把πk看做每个模型的权重。如果把 GMM 用在聚类中,则样本x的类别即为argmaxkπk

    在 GMM 中,需要估计的参数为πkμkΣk模型里每个观测数据x都对应着一个隐变量zRK,代表的即为类别变量, 且zk{0,1},一个样本可以属于多个类别,叠加起来概率为 1,这里显而易见有:

    p(zk=1)=πk

    对于GMM的参数采用EM算法来求解,其完全数据的联合分布为:
    p(X,Z|μ,Σ,π)=n=1N{k=1KπkN(xn|μk,Σk)}

    写成对数似然函数的形式:
    lnp(X,Z|μ,Σ,π)=n=1Nln{k=1KπkN(xn|μk,Σk)}

    EM算法求解GMM的步骤

    E步: 使用参数θold=(πold,μold,Σold),计算每个样本xn对应隐变量zn的后验分布:

    γ(znk)=p(zn=k|xn;μold,Σold)=p(znk=1)p(xnk|znk=1)j=1Kp(znj=1)p(xn|znj=1)=πkoldN(xn|μkold,Σkold)Σj=1KπjoldN(xn|μjold,Σjold)

    M步: 极大化Q函数的计算
    Q(θ,θold)=Zp(Z|X,θold)lnp(X,Z|θ)=Zp(Z|X,θold)lnp(X|Z,θ)P(Z|θ)=n=1Nk=1Kγ(znk){lnπk+lnN(xn|μk,Σk)}

    得到下一步迭代的参数:
    θnew=argmaxθQ(θ,θold)

    对Q函数求导,令倒数得0,即可求得下一次迭代的参数值

    μknew=1Nkn=1Nγ(znk)xnΣknew=1Nkn=1Nγ(znk)(xnμknew)(xnμknew)Tπknew=NkN

    其中:
    Nk=n=1Nγ(znk)

    展开全文
  • I . 高斯混合模型 ( 样本 -> 模型 ) II . 高斯混合模型 ( 模型 -> 样本 ) III . 高斯混合模型 与 K-Means 迭代过程对比 IV . 高斯混合模型 聚类分析 步骤 ( 1 ) ... 高斯混合模型 聚类分析 步骤 ( 3 ) 更新参数 平均值



    I . 高斯混合模型 ( 样本 -> 模型 )



    根据数据训练模型 : 目的是要 得到 高斯混合模型 的参数值 ;


    ① 已知条件 : 给定数据集样本 nn 个 , 将这些样本分成 kk 个聚类分组 ;

    ② 最终目的 : 使用 高斯混合模型 ( 参数未知 ) , 对这 nn 个样本进行聚类分析 , 分析的过程就是确定 高斯混合模型的 参数值 ;

    ③ 高斯分布参数 : 每个聚类分组的样本都是符合 高斯分布 的 , 根据样本可以得到其 高斯分布的参数 , 均值 μi\mu_i , 方差 Σi\Sigma_i ;

    ④ 每个聚类分组的未知的参数 : 均值 μi\mu_i , 方差 Σi\Sigma_i , 生成概率 ωi\omega_i ;

    ⑤ 未知参数总数 : 每个高斯分布 ( 聚类分组 ) 都有 三个 未知参数 , 整个 高斯混合模型有 3×k3 \times k 个未知参数 ;

    ωi\omega_i 参数含义 : ii 个样本属于某个聚类分组的概率 ;

    如 : ω3=0.7\omega_3 = 0.7 , 第 33 个样本能分配到某个聚类分组 ( 高斯模型 ) 中的概率是 70%70\% ;



    II . 高斯混合模型 ( 模型 -> 样本 )



    根据模型生成数据 : 目的是要得到 高斯混合模型 中每个 高斯模型 ( 聚类分组 ) 的 多个样本值 ;


    ① 已知条件 : 已知 高斯混合模型 , 所有参数值 , 参数分组 kk 个 ;

    ② 已知的参数 : 高斯混合模型 已知 , 高斯混合模型的所有的参数 均值 μi\mu_i , 方差 Σi\Sigma_i , 生成概率 ωi\omega_i , 都已知 , 3×k3 \times k 个参数已知 ;

    ③ 生成单个 高斯分布 ( 聚类分组 ) 的 多个 样本数据 : 根据 高斯分布 函数 , 即知道其 均值 μi\mu_i , 方差 Σi\Sigma_i 参数 , 可以生成该聚类分组的样本 ;

    ④ 生成 整个 数据集 ( 多个 高斯分布 / 聚类分组 ) : 根据 高斯混合分布 模型 , 生成 kk 个聚类分组的样本 , 即所有的 nn 个数据 ;

    ωi\omega_i 参数含义 : 根据 该聚类分组的 高斯分布模型 能正确生成该 样本 ii 的概率 ;

    如 : ω3=0.7\omega_3 = 0.7 , 说明 在某个聚类分组 , 使用高斯模型 , 该模型的 均值 μ3\mu_3 , 方差 Σ3\Sigma_3 参数已知 , 正确生成第 33 个样本的概率是 70%70\%



    III . 高斯混合模型 与 K-Means 迭代过程对比



    1 . 初始设定 : kk 个中心点 ( K-Means ) , kk 组参数 ( 高斯混合模型 ) ;


    ① K-Means 初始化中心点 : 第一次迭代时 , 需要指定初始的 kk 个聚类的中心点 ;

    ② 高斯混合模型 初始化参数 : 第一次迭代时 , 需要指定初始的 kk 组参数 , 均值 μi\mu_i , 方差 Σi\Sigma_i , 生成概率 ωi\omega_i , 共有 3×k3 \times k 个 ;



    2 . 聚类依据计算 : 距离 ( K-Means ) , 概率 ( 高斯混合模型 ) ;


    ① K-Means 计算距离 : 计算每个样本 与 每个 中心点 的距离 , 样本个数有 nn 个 , 中心点个数 ( 聚类个数 ) 有 kk 个 , 总共需要计算 n×kn \times k 个距离 ;

    ② 高斯混合模型 计算概率 : 计算每个样本 属于 每个聚类分组的概率 , 样本个数有 nn 个 , 聚类 有 kk 个 , 总共需要计算 n×kn \times k 个概率 ;



    3 . 聚类分组 :


    ① K-Means 根据距离分组 : 每个样本都有与 kk 个中心点的距离 , 取距离最小的那个中心点 , 将该样本分到该中心点对应的聚类分组中 ;

    ② 高斯混合模型 聚类概率 : 这里不需要分组 , 每个样本都有 一组 属于 kk 个分组的概率值 ; 每个样本都属于所有的聚类分组 , 但是概率大小不一样 , 如 , 99%99\% 概率属于聚类 11 , 1%1\% 概率属于聚类 22 , 0%0\% 概率属于其它聚类 ;



    4 . 硬指派 与 软指派 : K-Means 属于硬指派 , 必须为样本指派一个聚类分组 ; 高斯混合模型 属于软指派 , 每个样本都属于所有的聚类分组 , 只是概率大小不同 ;




    IV . 高斯混合模型 聚类分析 步骤 ( 1 ) 设置参数值



    参数初始值设置 :


    ① 初始状态 ( 第一次迭代 ) : 先给出 kk 组参数的初始值 , 每组参数由 概率 ωi\omega_i , 均值 μi\mu_i , 方差 Σi\Sigma_i 组成 , 参数个数是 3×k3 \times k 个 ;

    ① 更新参数值 ( 非第一次迭代 ) : 根据步骤 ( 2 ) 计算的 n×kn \times k 个概率 , 更新 kk 组参数 , 每组参数由 概率 ωi\omega_i , 均值 μi\mu_i , 方差 Σi\Sigma_i 组成 , 参数个数是 3×k3 \times k 个 ;

    ② 聚类分组个数 : kk 指的是聚类分组的个数 ;

    ③ 概率 ωi\omega_i 参数 : 指样本属于某组聚类的概率 ;

    ④ 均值 μi\mu_i 参数 : 指的是某组聚类分组的样本 高斯分布 ( 正态分布 ) 的 均值参数 ;

    ⑤ 方差 Σi\Sigma_i 参数 : 指的是某组聚类分组的样本 高斯分布 ( 正态分布 ) 的 方差参数 ;



    V . 高斯混合模型 聚类分析 步骤 ( 2 ) 计算概率



    计算概率 :


    数据集和分组情况 : 数据集有 nn 个对象 , 将这 nn 个对象分成 kk 个聚类分组 ;

    计算的概率 : 这里需要计算每个对象 xj(1jn)x_j \, (1 \leq j \leq n) 属于每个聚类 Ci(1ik)C_i \, (1 \leq i \leq k) 的概率 , 需要计算 n×kn \times k 次概率 ;

    概率说明 : xj(1jn)x_j \, (1 \leq j \leq n) 属于 聚类 Ci(1ik)C_i \, (1 \leq i \leq k) 的概率 , 反过来说 , 就是 xjx_j 样本对象 由 CiC_i 聚类分组对应的 高斯分布 生成的概率 ;

    计算公式 :


    p(xiCi)=ωig(xμi,Σi)i=1kωig(xμi,Σi)p(x_i \in C_i) = \dfrac{\omega_i g ( x | \mu_i , \Sigma_i )}{ \sum_{i=1}^{k} \, \omega_i g ( x | \mu_i , \Sigma_i ) }



    VI . 高斯混合模型 参数分析 : 11 个样本概率 与 kk 个聚类分组



    1 . 数据集 及 聚类 情况 :


    ① 样本个数 : nn 个样本 , 第 ii 个样本记做 XiX_i , 其中 1in1 \leq i \leq n ;

    ② 聚类个数 : 分成 kk 个聚类分组 , 第 jj 个聚类 ( Cluster ) 记做 CjC_j , 其中 1ik1 \leq i \leq k ;


    2 . 单个样本概率 与 kk 个聚类分组 分析 :


    某个样本 XiX_i 属于 kk 个聚类分组的概率之和加起来等于 11 ;

    nn 个样本属于 kk 个聚类分组的概率之和加起来等于 nn ;


    引入参数 nin_i , 表示所有的样本 属于 第 ii 个聚类分组 ( 高斯分布 ) 的概率之和 ;

    该值可以看做该 高斯分布 ( 聚类分组 ) 对生成 整个数据集 nn 个对象所做出的的贡献 ;


    所有的样本属于第 11 个聚类的概率是 n1n_1 , \cdots , 所有的样本属于第 kk 个聚类的概率是 nkn_k , 此时
    n1+n2++nk=nn_1 + n_2 + \cdots + n_k = n



    VII . 高斯混合模型 参数分析 : nn 个样本概率 与 11 个聚类分组



    1 . 数据集 及 聚类 情况 :


    ① 样本个数 : nn 个样本 , 第 ii 个样本记做 XiX_i , 其中 1in1 \leq i \leq n ;

    ② 聚类个数 : 分成 kk 个聚类分组 , 第 jj 个聚类 ( Cluster ) 记做 CjC_j , 其中 1ik1 \leq i \leq k ;



    2 . 分析 第 ii 个 高斯分布 ( 聚类分组 ) 的参数 :


    上一步使用如下公式 , 计算出了 每个样本 属于 每个 高斯分布 ( 聚类分组 ) 的概率 , p(xiCi)p(x_i \in C_i) ;


    p(xiCi)=ωig(xμi,Σi)i=1kωig(xμi,Σi)p(x_i \in C_i) = \dfrac{\omega_i g ( x | \mu_i , \Sigma_i )}{ \sum_{i=1}^{k} \, \omega_i g ( x | \mu_i , \Sigma_i ) }


    ii 个高斯分布 生成 xjx_j 值的概率是 p(xjCi)p(x_j \in C_i) , 即 该高斯分布生成的 与 xjx_j 相关的值是 p(xjCi)×xjp(x_j \in C_i) \times x_j ;



    3 . 同时考虑 nn 个数据样本 :


    ii 个高斯分布生成了 x1x_1 的概率是 p(x1Ci)p(x_1 \in C_i) , 该高斯分布生成了与 x1x_1 相关的值是 p(x1Ci)×x1p(x_1 \in C_i) \times x_1 ;

    ii 个高斯分布生成了 x2x_2 的概率是 p(x2Ci)p(x_2 \in C_i) , 该高斯分布生成了与 x2x_2 相关的值是 p(x2Ci)×x2p(x_2 \in C_i) \times x_2 ;

    \vdots

    ii 个高斯分布生成了 xnx_n 的概率是 p(xnCi)p(x_n \in C_i) , 该高斯分布生成了与 xnx_n 相关的值是 p(xnCi)×xnp(x_n \in C_i) \times x_n ;



    4 . 引入参数值 nin_i :


    总结上面的 第 ii 个高斯分布的生成样本的情况 : 第 ii 个高斯分布生成了 p(x1Ci)×x1p(x_1 \in C_i) \times x_1 , p(x2Ci)×x2p(x_2 \in C_i) \times x_2 , \cdots , p(xnCi)×xnp(x_n \in C_i) \times x_n , 这些样本点 ;

    将第 ii 个高斯分布生成样本的概率相加 , 即将 p(x1Ci)p(x_1 \in C_i) , p(x2Ci)p(x_2 \in C_i) , \cdots , p(xnCi)p(x_n \in C_i) 相加 ;


    引入参数值 nin_i : 该值可以看做该 高斯分布 ( 聚类分组 ) 对生成 整个数据集 nn 个对象所做出的的贡献 的概率 ;

    ni=j=inp(xjCi)n_i = \sum_{j=i}^{n} \, p \, ( x_j \in C_i )





    VIII . 高斯混合模型 聚类分析 步骤 ( 3 ) 更新参数 平均值 μi\mu_i 参数



    均值 μi\mu_i 参数计算公式 : 指的是某组聚类分组的样本 高斯分布 ( 正态分布 ) 的 均值参数 ;


    μi=1nij=1np(xjCi)xj\mu_i = \frac{1}{n_i} \sum_{j=1} ^n p(x_j \in C_i) x_j


    p(xjCi)xjp(x_j \in C_i) x_j 是第 ii 个高斯分布 , 也是第 ii 个聚类分组 CiC_i , 生成 xjx_j 样本所做的的贡献 ;

    j=1np(xjCi)xj\sum_{j=1} ^n p(x_j \in C_i) x_j 是第 ii 个高斯分布 , 也是第 ii 个聚类分组 CiC_i , 生成所有的 nn 个样本整体数据集 x1,x2,,xn{x_1 , x_2 , \cdots , x_n} 的总贡献 ;


    引入参数值 nin_i : nin_i 值可以看做该 高斯分布 ( 聚类分组 ) 对生成 整个数据集 nn 个对象所做出的的贡献 的概率 ;

    ii 个高斯分布 对生成 nn 个样本的总贡献除以 nin_i 概率 , 就是该 高斯分布 生成 nn 个样本的贡献的均值 ;





    IX . 高斯混合模型 平均值 μi\mu_i 参数 的本质分析



    均值计算的理解 :


    μi=1nij=1np(xjCi)xj\mu_i = \frac{1}{n_i} \sum_{j=1} ^n p(x_j \in C_i) x_j


    p(xjCi)xjp(x_j \in C_i) x_j 是概率值乘以 xjx_j ,

    ni=j=inp(xjCi)n_i = \sum_{j=i}^{n} \, p \, ( x_j \in C_i ) , 是本 高斯分布 ( 聚类中 ) 生成所有样本的概率之和 ;



    假如所有样本值生成的概率都是 100%100\% , 那么此时的公式就是 :

    μi=1n×100%j=1n100%×xj\mu_i = \frac{1}{n \times 100\%} \sum_{j=1} ^n \, 100\% \times x_j

    上面的就是一个普通的求平均值的公式 , 每个值前面都乘以 11 , 概率都是 100%100\% , nn 个值相加 , 然后再除以 nn , 可以看做 nn100100% 相加 , 即 nn11 相加 , 还是 nn , 这就是普通的平均值公式 ;



    实际 上所有样本值生成的概率不确定 , 区范围 0%0\%100%100\% , 那么此时的公式就是 :

    μi=1nij=1np(xjCi)×xj\mu_i = \frac{1}{n_i} \sum_{j=1} ^n \, p(x_j \in C_i) \times x_j

    该公式与上面 100%100\% 公式的区别是 , 使用 p(xjCi)p(x_j \in C_i) 替换了每个样本的生成概率 100%100\% 值 , 使用 ni=j=inp(xjCi)n_i = \sum_{j=i}^{n} \, p \, ( x_j \in C_i ) 替换了所有样本生成的概率之和 , 即 nn100100% 相加的和 nn ;


    该公式的本质还是求平均值 ;





    X . 高斯混合模型 聚类分析 步骤 ( 3 ) 更新参数 方差 Σi\Sigma_i 参数



    方差 Σi\Sigma_i 参数计算公式 : 指的是某组聚类分组的样本 高斯分布 ( 正态分布 ) 的 方差参数 ;


    μi=1nij=1np(xjCi)(xjμi)(xjμi)T\mu_i = \frac{1}{n_i} \sum_{j=1} ^n p(x_j \in C_i) \, ( x_j - \mu_i ) ( x_j - \mu_i ) ^T


    根据上面的本质分析逻辑 , 此处求方差 , 是在普通的方差基础上 , 增加了不同概率 ;


    普通方差公式 : 每个值都是 100%100\% 概率取值 ;


    μi=1nj=1n100%×(xjμi)(xjμi)T\mu_i = \frac{1}{n} \sum_{j=1} ^n 100\% \times ( x_j - \mu_i ) ( x_j - \mu_i ) ^T


    使用 p(xjCi)p(x_j \in C_i) 代替上面的 100%100\% 概率 , 就是方差参数的计算公式 ;





    XI . 高斯混合模型 聚类分析 步骤 ( 3 ) 更新参数 概率 ωi\omega_i 参数



    概率 ωi\omega_i 参数计算公式 : 指样本属于某组聚类的概率 ;


    ωi=nin\omega_i = \frac{n_i}{n}


    nin_i 是 每个 高斯分布 ( 聚类分组 ) 对 生成整个数据集所做的贡献 ;

    nn 是所有的 高斯分布 生成 所有的 数据集数据 的总体贡献 ;



    XII . 高斯混合模型 聚类分析 算法终止条件



    1 . 继续迭代 : 将参数值带入如下 评分函数 (似然函数 ) , 如果评分函数值发生了改变 , 那么继续迭代 , 更新 3k3k 个参数值 , 计算 每个样本 属于 每个分组的 k×nk \times n 个概率 ;


    2 . 似然函数 : 高斯混合模型 中 , 采用似然函数 , 作为评分函数 ;


    E=j=1np(xj)E = \prod_{j = 1} ^ n p(x_j)


    \prod 是多个乘积 , 与 \sum 多个加和性质类似 ;

    nn 表示数据集中样本个数 ;

    xjx_j 表示数据样本对象 , 被聚类的样本点 ;

    p(xj)p(x_j) 表示高斯混合模型中 , xjx_j 生成的概率 , 也就是 xjx_j 被分为某个聚类分组的概率 ;


    3 . 高斯混合模型 聚类分析 算法终止条件 : 当计算出的 kk 组 概率 ωi\omega_i , 均值 μi\mu_i , 方差 Σi\Sigma_i 参数值 , 与上一次基本一致时 , 就可以停止进行聚类分析了 ; 即 将参数值带入如下 评分函数 (似然函数 ) , 如果评分函数值不再改变 , 那么说明可以终止迭代了 ;

    展开全文
  • 上机器学习课学到EM算法,通过查阅西瓜书等资料理解了算法的推导过程于是形成了总结,在此进行分享。针对机器学习初学者,内容主要是:EM算法以及GMMs模型算法求解步骤的推导证明
  • 高斯混合模型GMM聚类的步骤和推导

    千次阅读 2020-03-20 15:18:57
      由于最近要做聚类算法方面的内容,看了很多资料,在高斯混合模型(GMM)这里一直没有一个让我完全推导清楚的、理解的文章。经过三天打鱼两天晒网 不懈努力,总算是有一点自己的理解,我希望尽量通俗地把GMM讲明白...
  • 一维高斯分布高斯混合模型二维高斯分布EM 期望最大化算法STEP #1 : 初始化K个高斯分布STEP #2 :将数据软聚类成我们初始化的两个高斯分布,这一步称为期望步骤或E步骤STEP #3 :基于软聚类重新估...
  • 高斯混合模型(Mixtures of Gaussians)和EM算法 EM算法 求最大似然函数估计值的一般步骤: (1)写出似然函数; (2)对似然函数取对数,并整理; (3)求导数,令导数为0,得到似然方程; (4)解似然方程...
  • EM是一种解决存在隐含变量优化问题的有效方法。EM的意思是“Expectation Maximization”,与...EM算法步骤Note: 通过男女混合高斯模型来记!初始化分布参数θ;循环重复直到收敛 { (E步)对于每一个i,计算 #...
  • EM算法(Expection-Maximizationalgorithm,EM)是一种迭代算法,通过E步和M步两大迭代步骤,每次迭代都使极大似然函数增加。...下面来谈谈EM算法以及其在求解高斯混合模型中的作用。 一、高斯混合模型(Gauss
  • EM算法(Expection-Maximizationalgorithm,EM)是一种迭代算法,通过E步和M步两大迭代步骤,每次迭代都使极大似然函数增加。...下面来谈谈EM算法以及其在求解高斯混合模型中的作用。 一、 高斯混合模型(Gauss
  • 本文详细介绍了EM算法步骤 分析,以及应用与高斯混合模型和隐马尔可夫过程参数估计的详细过程,英文版
  • GMM-EM观测的数据情况c为类别数量,即高斯模型的数量参数估计的目标以两类为例,即高斯分布的均值和方差,以及两类的分布概率EM算法主要步骤初始化估计量重复执行下列步骤,直至到达终止条件E步,计算M步,迭代更新...
  • K-means算法EM步骤如下:给定K的值,代表有K个不同的类别。对每一个类别,猜测其中心点。 在已知K个中心点的情况下,计算每个点到这K的中心点的距离,距离最小的那个中心点所代表的类就是该点所属的类别,这样对所有...
  • python3 || 高斯混合模型GMM

    千次阅读 2017-12-19 19:40:40
    GMM模型的python实现预备知识:EM算法原理GMM算法原理友情提示:本代码配合GMM算法原理中的步骤阅读更佳哦!... R || 高斯混合模型GMM多元高斯混合模型多元高斯混合模型采用的是《机器学习》中的西瓜数据集。
  • 高斯混合模型: sklearn高斯混合模型高斯混合模型总结: 高斯混合模型附录: 聚类分析过程: 聚类验证: 外部评价指标: 内部评价指标: 高斯混合模型: 1、温和的聚类算法,这种聚类算法假定每个类都...
  • 接前文。6. 高斯混合模型的EM算法前文讲到,不完全数据集 的对数似然函数 的极大似然估计得到参数: 其中,响应度 , 。虽然(1)式不是闭式解,但是我们可以根据(1...下面简述用EM算法来计算高斯混合模型参数的步骤:...
  • 高斯混合模型是典型的聚类算法之一,最近一段时间一直在研究GMM。相比于GMM,K-means显得要容易理解一些,虽然GMM中最难的部分,也就是EM算法对建立的GMM进行求解,实际上就用到了K-means的算法。有人说,K-means...
  • 高斯混合模型

    2019-10-02 12:26:04
    1.3.K-means算法 k-means算法是输入聚类个数k,以及包含 n个数据对象的数据库,输出满足方差最小标准的k个聚类。同一聚类中的对象相似度较高...k-means算法的基本步骤: (1)从 n个数据对象任意选择k个对象作为初...
  • 算法的具体步骤描述如下: 随机选取k个中心 for i in epoch: for 每个样本: 对每个样本,将其分配到距离最近的簇: c=argmin||x-u||2 for 每个簇中心: 重新计算每个簇的中心,取均...
  • 准确的图像分割是图像处理中必不可少的步骤,其中具有空间约束的高斯混合模型起着重要作用,并已被证明对图像分割有效。 但是,大多数方法都面临一个或多个挑战,例如对异常值的鲁棒性有限,分段的平滑度过高,对...
  • 机器学习--EM算法求解高斯混合模型

    千次阅读 2015-06-08 16:49:44
    EM算法(Expection-Maximizationalgorithm,EM)是一种迭代算法,通过E步和M步两大迭代步骤,每次迭代都使极大似然函数增加。但是,由于初始值的不同,可能会使似然函数陷入局部最优。辜丽川老师和其夫人发表的论文...
  • 在每一步迭代分为两个步骤:期望(Expectation)步骤和最大化(Maximization)步骤,因此称为EM算法。 如果所有数据Z是由可观測到的样本X={X1, X2,……, Xn}和不可观測到的样本Z={Z1, Z2,…...
  • R || 高斯混合模型GMM

    千次阅读 2017-12-18 20:01:08
    GMM模型的R实现预备知识:EM算法原理GMM算法原理友情提示:本代码配合GMM算法原理中的步骤阅读更佳哦!本文分为一元高斯分布的EM算法以及多元高斯分布的EM算法,分别采用两本书上的数据《统计学习方法》和《机器学习...
  • EM算法推断混合高斯模型参数写在前面随机生成混合高斯模型的数据EM算法估计混合高斯分布的参数初始化, E步骤EM算法,M步骤测试脚本画出随机产生的数据的实际分布画出推断得到的分布 写在前面 今天写了三段代码: ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 103
精华内容 41
关键字:

高斯混合模型算法步骤