0001
0002
0003
0004 n = 400; k = 7; d = 1; c = 3; e = 10;
0005 fprintf('Sampling a %d-component %d-dimensional %d-separated mixture....\n',k,d,c);
0006 [X,T] = gmmbvl_mixgen(n,n,k,d,c,e);
0007 fprintf('------------------\n');
0008
0009 fprintf('Running 10 times normal EM with k-means initialization\n');
0010 normal_em=[];
0011 for i=1:10
0012 [W,M,R,Tlogl] = gmmbvl_em(X,T,k,0,0,0);
0013 normal_em = [normal_em Tlogl];
0014 end
0015 fprintf('Average log-likelihood %f with std. dev. %f best run: %f \n',mean(normal_em),std(normal_em), max(normal_em));
0016
0017 max_k = 10;
0018 fprintf('Running greedy EM\n');
0019 [W,M,R,Tlogl] = gmmbvl_em(X,T,max_k,10,1,0);
0020 title('Mixture model');
0021
0022
0023 figure(2); clf;plot(Tlogl,'-o');hold on;
0024 xlabel 'number of components'
0025 ylabel 'log-likelihood of test set'
0026 plot(repmat(mean(normal_em),max_k,1),'r')
0027 plot(repmat(mean(normal_em)+std(normal_em),max_k,1),'r--')
0028 plot(repmat(max(normal_em),max_k,1),'g')
0029 plot(repmat(mean(normal_em)-std(normal_em),max_k,1),'r--')
0030
0031 [Tlogl,best_k] = max(Tlogl);
0032 fprintf('Best number of components according to cross-validation: %d (yielding log-likelihood %f ) \n',best_k,Tlogl);
0033
0034
0035 legend('Greedy EM','mean of normal EM', 'one standard deviation margins of normal EM','best result of normal EM',4);
0036 title('Log-likelihood plots');