欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【数据挖掘】高斯混合模型 ( 与 K-Means 每个步骤对比 | 初始参数设置 | 计算概率 | 计算平均值参数 | 计算方差参数 | 计算高斯分布概率参数 | 算法终止条件 )

发布时间:2025/6/17 编程问答 50 豆豆

文章目录

        • I . 高斯混合模型 ( 样本 -> 模型 )
        • II . 高斯混合模型 ( 模型 -> 样本 )
        • III . 高斯混合模型 与 K-Means 迭代过程对比
        • IV . 高斯混合模型 聚类分析 步骤 ( 1 ) 设置参数值
        • V . 高斯混合模型 聚类分析 步骤 ( 2 ) 计算概率
        • VI . 高斯混合模型 参数分析 : 111 个样本概率 与 kkk 个聚类分组
        • VII . 高斯混合模型 参数分析 : nnn 个样本概率 与 111 个聚类分组
        • VIII . 高斯混合模型 聚类分析 步骤 ( 3 ) 更新参数 平均值 μi\mu_iμi 参数
        • IX . 高斯混合模型 平均值 μi\mu_iμi 参数 的本质分析
        • X . 高斯混合模型 聚类分析 步骤 ( 3 ) 更新参数 方差 Σi\Sigma_iΣi 参数
        • XI . 高斯混合模型 聚类分析 步骤 ( 3 ) 更新参数 概率 ωi\omega_iωi 参数
        • XII . 高斯混合模型 聚类分析 算法终止条件



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



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


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

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

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

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

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

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

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



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



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


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

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

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

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

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

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



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



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


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

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



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


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

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



3 . 聚类分组 :


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

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



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




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



参数初始值设置 :


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

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

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

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

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

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



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



计算概率 :


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

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

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

计算公式 :


p(xi∈Ci)=ω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 ) }p(xiCi)=i=1kωig(xμi,Σi)ωig(xμi,Σi)



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



1 . 数据集 及 聚类 情况 :


① 样本个数 : nnn 个样本 , 第 iii 个样本记做 XiX_iXi , 其中 1≤i≤n1 \leq i \leq n1in ;

② 聚类个数 : 分成 kkk 个聚类分组 , 第 jjj 个聚类 ( Cluster ) 记做 CjC_jCj , 其中 1≤i≤k1 \leq i \leq k1ik ;


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


某个样本 XiX_iXi 属于 kkk 个聚类分组的概率之和加起来等于 111 ;

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


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

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


所有的样本属于第 111 个聚类的概率是 n1n_1n1 , ⋯\cdots , 所有的样本属于第 kkk 个聚类的概率是 nkn_knk , 此时
n1+n2+⋯+nk=nn_1 + n_2 + \cdots + n_k = nn1+n2++nk=n



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



1 . 数据集 及 聚类 情况 :


① 样本个数 : nnn 个样本 , 第 iii 个样本记做 XiX_iXi , 其中 1≤i≤n1 \leq i \leq n1in ;

② 聚类个数 : 分成 kkk 个聚类分组 , 第 jjj 个聚类 ( Cluster ) 记做 CjC_jCj , 其中 1≤i≤k1 \leq i \leq k1ik ;



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


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


p(xi∈Ci)=ω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 ) }p(xiCi)=i=1kωig(xμi,Σi)ωig(xμi,Σi)


iii 个高斯分布 生成 xjx_jxj 值的概率是 p(xj∈Ci)p(x_j \in C_i)p(xjCi) , 即 该高斯分布生成的 与 xjx_jxj 相关的值是 p(xj∈Ci)×xjp(x_j \in C_i) \times x_jp(xjCi)×xj ;



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


iii 个高斯分布生成了 x1x_1x1 的概率是 p(x1∈Ci)p(x_1 \in C_i)p(x1Ci) , 该高斯分布生成了与 x1x_1x1 相关的值是 p(x1∈Ci)×x1p(x_1 \in C_i) \times x_1p(x1Ci)×x1 ;

iii 个高斯分布生成了 x2x_2x2 的概率是 p(x2∈Ci)p(x_2 \in C_i)p(x2Ci) , 该高斯分布生成了与 x2x_2x2 相关的值是 p(x2∈Ci)×x2p(x_2 \in C_i) \times x_2p(x2Ci)×x2 ;

⋮\vdots

iii 个高斯分布生成了 xnx_nxn 的概率是 p(xn∈Ci)p(x_n \in C_i)p(xnCi) , 该高斯分布生成了与 xnx_nxn 相关的值是 p(xn∈Ci)×xnp(x_n \in C_i) \times x_np(xnCi)×xn ;



4 . 引入参数值 nin_ini :


总结上面的 第 iii 个高斯分布的生成样本的情况 : 第 iii 个高斯分布生成了 p(x1∈Ci)×x1p(x_1 \in C_i) \times x_1p(x1Ci)×x1 , p(x2∈Ci)×x2p(x_2 \in C_i) \times x_2p(x2Ci)×x2 , ⋯\cdots , p(xn∈Ci)×xnp(x_n \in C_i) \times x_np(xnCi)×xn , 这些样本点 ;

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


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

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





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



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


μi=1ni∑j=1np(xj∈Ci)xj\mu_i = \frac{1}{n_i} \sum_{j=1} ^n p(x_j \in C_i) x_jμi=ni1j=1np(xjCi)xj


p(xj∈Ci)xjp(x_j \in C_i) x_jp(xjCi)xj 是第 iii 个高斯分布 , 也是第 iii 个聚类分组 CiC_iCi , 生成 xjx_jxj 样本所做的的贡献 ;

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


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

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





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



均值计算的理解 :


μi=1ni∑j=1np(xj∈Ci)xj\mu_i = \frac{1}{n_i} \sum_{j=1} ^n p(x_j \in C_i) x_jμi=ni1j=1np(xjCi)xj


p(xj∈Ci)xjp(x_j \in C_i) x_jp(xjCi)xj 是概率值乘以 xjx_jxj ,

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



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

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

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



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

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

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


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





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



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


μi=1ni∑j=1np(xj∈Ci)(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μi=ni1j=1np(xjCi)(xjμi)(xjμi)T


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


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


μi=1n∑j=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μi=n1j=1n100%×(xjμi)(xjμi)T


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





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



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


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


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

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



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



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


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


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


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

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

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

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


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

总结

以上是生活随笔为你收集整理的【数据挖掘】高斯混合模型 ( 与 K-Means 每个步骤对比 | 初始参数设置 | 计算概率 | 计算平均值参数 | 计算方差参数 | 计算高斯分布概率参数 | 算法终止条件 )的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。