💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
通过EM算法实现GMM学习的3D可视化是一种将三维数据的高斯混合模型可视化的方法。该方法利用EM算法的迭代过程,通过在迭代之间进行插值,来展示GMM模型的演变。
在这个方法中,首先我们可以从一般协方差高斯簇中读取或生成三维数据。然后,选择所需的高斯数k,即欲拟合的高斯分量个数。接下来,我们将数据和初始高斯分布模型输入EM算法中进行迭代。
在每次迭代期间,真实的GMM模型仅在迭代的锚帧上可用。为了展示GMM的演变,我们通过在这些锚帧之间插值足够多的“帧”来给出3D高斯的运动错觉。这里,将每个高斯分量的均值表示为3D空间中的一个点,并使用标准偏差作为椭球体的尺寸来表示高斯分布的扩散。通过插值得到的帧数足够多,可以形成一个流畅的动画演示,展示GMM模型在EM算法迭代过程中的变化。
这种基于EM算法的3D可视化方法可以帮助我们更好地理解GMM模型在拟合数据时的行为和演变过程。通过观察高斯分布的运动轨迹和变化趋势,我们可以看到模型是如何从初始状态逐步收敛并拟合数据的。这对于解释聚类结果和模型参数的选择具有重要意义,同时也可以用于发现数据中的潜在结构和模式。
通过EM算法实现GMM学习的3D可视化方法提供了一种直观的方式来展示GMM模型在拟合三维数据时的变化和形态,帮助我们更好地理解和分析数据。
📚2 运行结果
部分代码:
%% 3D visualization of EM for GMMs
% function X = EM_GMM_3d(c,wk,N,movie,Y,D,Cv)
%
% Inputs: c - # clusters (default: 5)
% wk - array of # gaussians to fit (default: 1:10)
% N - # GMM samples (default: 200)
% movie - string: writes .avi for each k (default: [])
% Y - NxD data matrix (default: generate new data)
% D - data dimensionality (default: 3)
% Cv - covariance type (0: diag, 1: full) (default: full)
% Output: X - NxD data matrix
%
% How it works:
% For each value of k in 'wk':
% - Fit GMM with EM
% - Interpolate model params between EM iterations
% - Coloring: Gaussians - transparency = GMM mixing weights
% data - color blend = posterior probs
% - Play movie of EM learning
% - (optional) Save movie to .avi file
%
% Author: Johannes Traa, UIUC, Nov-Dec '11
%
% Revised Mar '13 (cleaned up code, added full covariance capability)
%% check input args
if nargin < 1 || isempty(c); c = 5; end
if nargin < 2 || isempty(wk); wk = 1:10; end
if nargin < 3 || isempty(N); N = 200; end
if nargin < 4 || isempty(movie)
m_val = 0;
set(0,'DefaultFigureWindowStyle','docked')
else
m_val = 1;
set(0,'DefaultFigureWindowStyle','normal')
if ~ischar(movie)
movie = 'EM_k';
end
end
if nargin < 6 || isempty(D); D = 3; end
if nargin < 7 || isempty(Cv); Cv = 1; end
%% get data
if ~(nargin<5 || isempty(Y))
X = Y;
[N,D] = size(X);
else
% GMM params
m = 10*randn(c,D); % means
C = zeros(D,D,c); % covariance matrices
for j=1:c
Cj = randn(D,10);
C(:,:,j) = Cj*Cj';
end
w = dirrand(3*ones(1,c),1); % mixing weights
% sample from GMM
%% 3D visualization of EM for GMMs
% function X = EM_GMM_3d(c,wk,N,movie,Y,D,Cv)
%
% Inputs: c - # clusters (default: 5)
% wk - array of # gaussians to fit (default: 1:10)
% N - # GMM samples (default: 200)
% movie - string: writes .avi for each k (default: [])
% Y - NxD data matrix (default: generate new data)
% D - data dimensionality (default: 3)
% Cv - covariance type (0: diag, 1: full) (default: full)
% Output: X - NxD data matrix
%
% How it works:
% For each value of k in 'wk':
% - Fit GMM with EM
% - Interpolate model params between EM iterations
% - Coloring: Gaussians - transparency = GMM mixing weights
% data - color blend = posterior probs
% - Play movie of EM learning
% - (optional) Save movie to .avi file
%
% Author: Johannes Traa, UIUC, Nov-Dec '11
%
% Revised Mar '13 (cleaned up code, added full covariance capability)
%% check input args
if nargin < 1 || isempty(c); c = 5; end
if nargin < 2 || isempty(wk); wk = 1:10; end
if nargin < 3 || isempty(N); N = 200; end
if nargin < 4 || isempty(movie)
m_val = 0;
set(0,'DefaultFigureWindowStyle','docked')
else
m_val = 1;
set(0,'DefaultFigureWindowStyle','normal')
if ~ischar(movie)
movie = 'EM_k';
end
end
if nargin < 6 || isempty(D); D = 3; end
if nargin < 7 || isempty(Cv); Cv = 1; end
%% get data
if ~(nargin<5 || isempty(Y))
X = Y;
[N,D] = size(X);
else
% GMM params
m = 10*randn(c,D); % means
C = zeros(D,D,c); % covariance matrices
for j=1:c
Cj = randn(D,10);
C(:,:,j) = Cj*Cj';
end
w = dirrand(3*ones(1,c),1); % mixing weights
% sample from GMM
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]岳佳.基于EM算法的模型聚类的研究及应用[D].江南大学[2023-10-06].DOI:10.7666/d.y1195438.
[2]张华幸,李华雄,黄兵,等.基于高斯混合模型和EM算法的序贯三支决策方法[J].山西大学学报(自然科学版), 2020(004):043.
[3]王维彬,钟润添.一种基于贪心EM算法学习GMM的聚类算法[J].计算机仿真, 2007, 24(2):4.DOI:10.3969/j.issn.1006-9348.2007.02.018.