資源簡介
高斯混合模型可以擬合任意數據,本程序就音頻數據建立高斯混合模型,內附詳細代碼,以及經典pdf資料講解。

代碼片段和文件信息
function?[Priors?Mu?Sigma]?=?EM_GMM(Data?nbStates?Stop_criterion)
%?Inputs?----------------------------------------------------------------------------------??
%???Data:?????D?x?N?array?representing?N?datapoints?of?D?dimensions.??
%???nbStates:?Number?K?of?GMM?components.??
%???Stop_criterion:?Stopping?criterion?1?or?2.
%?Outputs?---------------------------------------------------------------------------------??
%???Priors:???1?x?K?array?representing?the?prior?probabilities?of?the?K?GMM?components.???????????????
%???Mu:???????D?x?K?array?representing?the?centers?of?the?K?GMM?components.??
%???Sigma:????D?x?D?x?K?array?representing?the?covariance?matrices?of?the?K?GMM?components.??????????????
%------------------------------------------------------------------------------------------
%The?iteration?stop?condition?of?EM?
%EM?迭代停止條件
loglik_threshold?=?1e-10;
loglik_old?=?-realmax;
Epsilon?=?0.0001;
nbStep?=?0;
[nbVarnbData]?=?size(Data);?%nbVar:The?dimensions?of?the?feature;;?nbData:The?number?of?points(samples)
%Initialization?parameter?based?on?k-means
%初始參數由k-means(其實也是一種特殊的高斯混合模型)決定
[Priors0?Mu0?Sigma0]?=?EM_init_kmeans(Data?nbStates);??
Mu?=?Mu0;
Sigma?=?Sigma0;
Priors?=?Priors0;
while?(nbStep<1200)??
??nbStep?=?nbStep+1;?
??%?E-step------------------------------------------------???
??for?i=1:nbStates??
????%Compute?probability?p(x|i)??
????Pxi(:i)?=?gaussPDF(Data?Mu(:i)?Sigma(::i));??
??end??
??%Compute?posterior?probability?p(i|x)??
??Pix_tmp?=?repmat(Priors[nbData?1]).*Pxi;??
??Pix?=?Pix_tmp?./?(repmat(sum(Pix_tmp2)[1?nbStates])+realmin);
??%Compute?cumulated?posterior?probability??
??E?=?sum(Pix);??
??
??%?M-step------------------------------------------------??
??for?i=1:nbStates??
????%Update?the?priors??
????Priors(i)?=?E(i)?/?nbData;??
????%Update?the?centers??
????Mu(:i)?=?Data*Pix(:i)?/?E(i);??
????%Update?the?covariance?matrices??
????Data_tmp1?=?Data?-?repmat(Mu(:i)1nbData);??
????Sigma(::i)?=?(repmat(Pix(:i)‘nbVar?1)?.*?Data_tmp1*Data_tmp1‘)?/?E(i);??
????%?Add?a?tiny?variance?to?avoid?numerical?instability??
????Sigma(::i)?=?Sigma(::i)?+?1E-5.*diag(ones(nbVar1));??
??end?
??
??if?Stop_criterion?==?1???????
??????%?Stopping?criterion?1
??????for?i=1:nbStates??
????????%Compute?the?new?probability?p(x|i)??
????????Pxi(:i)?=?gaussPDF(Data?Mu(:i)?Sigma(::i));??
??????end??
??????%Compute?the?log?likelihood??
??????F?=?Pxi*Priors‘;??
??????F(find(F ??????loglik?=?mean(log(F));??
??????%Stop?the?process?depending?on?the?increase?of?the?log?likelihood???
??????if?abs((loglik/loglik_old)-1)?????????break;??
??????end??
??????loglik_old?=?loglik;??
??elseif?Stop_criterion?==?2???????
??????%?Stopping?criterion?2
??????v?=?[sum(abs(Mu-Mu0))abs(Priors-Priors0)];
??????s?=?abs(Sigma-Sigma0);
??????v2=0;
??????for?i?=?1:nbStates
??????????v2?=?v2?+?det(s(::i));
??????end
??????if?(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3255??2016-03-25?15:10??EM_GMM.m
?????文件????????1588??2016-03-25?14:01??EM_init_kmeans.m
?????文件?????????738??2016-03-25?13:56??gaussPDF.m
?????文件??????537600??2012-03-30?14:55??GMM建模與EM算法.ppt
?????文件?????3585734??2016-03-25?15:24??MFCC_features.mat
?????文件??????217660??2012-03-29?19:01??高斯混合模型講解.pdf
評論
共有 條評論