找回密码
 注册
关于网站域名变更的通知
查看: 512|回复: 3
打印 上一主题 下一主题

高斯混合模型里面的参数可以用到混核主元分析里面吗?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-12-24 11:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
高斯混合模型里面的参数可以用到混核主元分析里面吗?有混合概率主元分析的EM算法的程序吗. o$ s5 t6 v$ T0 ]$ c
function ppca_mixture  6 [  R8 @) V6 y( V: v8 Y# i+ T0 v* i
filename = 'virus3.dat';' e; _2 l- g, i# S$ a$ z
    T = importdata(filename);3 y6 X& l5 P. `" ~% n6 B0 l6 y
    [N, d] = size(T);
; P1 {. I2 m  U. i2 n) n    M = 3;  % number of ppca analysers considered 考虑的ppca分析仪数量* c1 M& w3 l0 n4 ?$ g8 t0 [
    q = 2;  % dimension of ppcas  ppca的维数8 x; l% f: v7 ?9 K8 Q
    % init9 ]2 \. H" v* N. G
    % initializing the posteriors (p(i|t_n), indexed by (n, i). R in text)
% {' C& D0 C5 y0 P6 M3 [. N    %初始化后验(p(i|t_n),在文本中由(n, i). R索引     & q0 S/ K% }+ i: _! i' @
    classes = [3, 3, 3, 3, 2, 2, 3, 1, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2];
5 }+ ~* M3 J/ g. p    for n=1:N3 I7 s8 e7 D7 M# E) G
        for i=1:M! U# j: d4 s1 l
            if(i==classes(n))& \  I2 o7 v4 W# N" e3 V
                posteriors(n, i) = 1;8 L: R+ l. g+ E. t+ y/ E! G
            else/ T: t2 H. U: S( o/ u
                posteriors(n, i) = 0;
& f4 r$ s# z, t+ O" G* S            end6 `1 ~: u1 V' J6 t4 N# h
        end
) D5 ~3 d7 v0 i$ ^% Y* H* _; {    end+ ^" o" {$ L: x) |3 L$ o* v6 y: x
    % precision for convergence checking 收敛检验精度
6 D* a. f1 i* i8 s0 }, {    epsilon = 0.01;
5 v- q0 ]2 E1 e    entered = false;
+ Y3 E8 W- c$ c7 x4 p6 H8 y
" ?/ [7 j& O( x    % loop
+ m3 q/ B+ k" N4 B    while(true)
( |) f. p3 X: k8 \; Q        % updating priors (p(i), pi in text) and mean vectors (mu in text)0 _/ P$ z3 @7 l5 n) r' m
        % 更新先验(p(i),文本中的pi)和平均向量(文本中的mu)
- g& h2 I/ G4 }' l        new_priors = 1/N * sum(posteriors);
9 V1 {$ S/ K6 \9 c' B. B7 P- P        new_mus = zeros(M, d);7 X$ w; X1 k" L+ W8 E! o
        for i=1:M
; W5 q! M# f7 J6 `            for n=1:N
$ u6 d6 |3 l* S2 d5 w! R                new_mus(i, = new_mus(i, + posteriors(n, i) * T(n, ;
4 D. s, r! X. a, c            end
& F+ _+ @! I0 U# s            new_mus(i, :) = new_mus(i, :) / sum(posteriors(:, i));
+ K: Y/ n8 {& E- J        end. V$ t/ c4 j# r  `) ]

0 w- ?2 z$ z2 q( Q& N) ~5 ^' H        % computing covariance matrices (S in text)计算协方差矩阵(文本中的S)
& s5 M* O8 x) ?0 j0 y        covariances = cell(M);
1 s* l# B# m) {$ k( d& o        for i=1:M, i/ q3 y6 G; D! R2 N
            covariances{i} = zeros(d, d);
' b* s% O6 w# X" X: `            for n=1:N
) Z' D" |" ~- i# S4 K/ M                covariances{i} = covariances{i} + posteriors(n, i)*(T(n, :)' - new_mus(i, :)')*(T(n, :)' - new_mus(i, :)')';9 z+ O- i) u) A1 D5 s
            end
( `1 R" f5 e8 _; {" S            covariances{i} = covariances{i} / (new_priors(i) * N);7 D$ k2 S6 X7 ~
        end
/ l( I8 X% Q% c' e
8 ?$ C( O! J; N( O9 l! o
) Z( i1 h7 x7 A. V9 Y( ~" w3 q7 z        % applying ppca using covariance matrices 使用协方差矩阵应用ppca
4 h2 W+ c. w3 Q: b        % (Ws are weight matrices; sigmas are variances) (Ws为权重矩阵;(差异)
1 d7 o, k7 `# `9 @4 I        new_Ws = cell(M);( e/ S" q$ b, L  L; w  T
        for i=1:M
7 |7 V! r" {' J2 l" Z            [new_Ws{i}, new_sigmas{i}] = ppca_from_covariance(covariances{i}, q);& W. T7 ^' ]3 s8 y
        end
9 u, l! y0 P8 Z" ?3 z: A+ b  C$ A( Q7 A- O" ~* _
        % convergence check 收敛性检查5 }; T- b/ C( x. X4 Q# Y3 a
        if(entered && max(abs(new_priors - priors)) < epsilon && max(max(abs(new_mus - mus))) < epsilon && max(max(max(abs(cell2mat(new_Ws) - cell2mat(Ws))))) < epsilon && max(abs(new_sigmas - sigmas)) < epsilon)
/ R$ X" h5 g/ V/ D; K* I& g            break;
- U- E- s- b3 P% c$ c, _        end
* {1 e' g0 T8 p* G7 v8 h
$ d! k  p% h" o; f# H; k        % replacing old parameter values 替换旧的参数值
, _% L9 A; i3 _6 P7 `4 _4 L  V        priors = new_priors;
% @/ r- l# u; e; q% t- m        mus = new_mus;: Y2 z, y/ s( [/ W- r" K% h7 _
        Ws = new_Ws;8 N$ b0 [- m. S5 \, Q' V- R9 B
        sigmas = new_sigmas;/ R. }3 \! O! n+ P
1 {! b: @# Q2 N% u! r) ~
        % computing the likelihoods (p(t_n|i)) 计算概率(p(t_n|i))
. X3 i# M0 {$ O) L7 B. j        for i=1:M9 ]4 T9 F1 Q$ E; r. m8 }. y
            C = sigmas{i}^2 * eye(d) + Ws{i}*Ws{i}';
4 t) e! |" B& d3 K            detC = det(C);
! o8 l- a+ B1 y5 ^$ A            invC = inv(C);
$ r( a/ N/ y3 ~' a            for n=1:N6 B# f, L8 C1 [* k2 U
                likelihoods(n, i) = (2*pi)^(-d/2)*detC^(-1/2)*exp(-1/2*(T(n, :)' - mus(i, :)')'*invC*(T(n, :)' - mus(i, :)'));9 S4 `) u! ]& ^) k
            end. ^( x/ q& ^& e  A8 W
        end4 I0 x) B* @. i
        % computing the joint probabilities (p(t_n, i)) 计算联合概率(p(t_n, i))% |9 R* y# \; F; [. S1 \  a
        for i=1:M
- }9 m4 F) t7 _            joint(:, i) = likelihoods(:, i) * priors(i);
, T) L5 m' u! K- @        end& J% |* N2 G& M, d" C& x* m
        % computing the data priors (p(t_n)) 计算数据先验(p(t_n))  `/ x7 Z, r* [6 P
        data_priors = sum(joint');
8 z9 B9 X! W& K# H        % computing and displaying the likelihood of the data set 计算和显示数据集的可能性
  X# a/ T0 G3 t* O2 N8 S- R7 Q        disp(sum(log(data_priors)));' i$ B' ?: L; o$ n5 Q
        % computing the posteriors (p(i|t_n), indexed by (n, i). R in text)$ j* ]2 ~- m! B  E
        % 计算后验(p(i|t_n),用(n, i)索引。R在文本中)
6 C. D! B7 @/ R        for n=1:N
8 c3 S5 p. i) u5 ~  _, k3 m            posteriors(n, :) = joint(n, :) / data_priors(n);/ n% |5 Y3 Z( Y! ^( v- |
        end
+ `) K0 r8 `/ p# M3 }
7 }$ T+ ]0 w( i: _        % we went through the loop at least once 我们至少做了一次循环
$ i: i4 a4 S; y% @5 U7 }        entered = true;
& z# D$ ?3 j# }8 u6 h# B3 S/ V    end! k% g  M. V; G" \7 Z2 K7 U$ n

" q4 G+ y& e& F& j& G8 f3 v- Y0 C- s: }5 k  C2 I, l) |
    % computing the latent variables 计算潜变量. J2 {1 h! Y& ~9 c: Q( \
    latent = cell(M);
+ M' g. ^/ E. W0 }% l" A; z- W    for i=1:M3 a4 g. l* H! {7 @+ M
        latent{i} = ppca_latent(T, Ws{i}, sigmas(i));5 u) f7 g) r; [7 J& o) Z" a$ A
    end) s- }0 ]3 K6 c0 i: \4 w2 Z
    % selecting likely points for each ppca analyser 为每个ppca分析器选择可能的点* w9 M! E/ f- ]; @; W9 M, J0 f
    for n=1:N
5 R. H" i& }0 k        [~, i] = sort(posteriors(n, :), 'descend');
% M; |  M' ~: X2 r+ A3 C        points_to_classes(n) = i(1);
2 [5 l& \* B: F" b    end
0 x! W; J7 i/ M7 A6 p( d    classes_to_points = cell(M);$ Y2 m9 a6 c1 O- U1 n( E! ]. u! p5 O
    classes_to_point_numbers = cell(M);: V% t! `6 ^& O* @) Y+ Y
    for n=1:N
+ f$ q: h+ S) @; r/ F& B        classes_to_points{points_to_classes(n)}(:, end+1) = latent{points_to_classes(n)}(:, n);: l: O; d/ |# L$ a" F3 {7 ?
        classes_to_point_numbers{points_to_classes(n)}(end+1) = n;: A. Q+ h. m1 ^5 Y
    end3 p. M9 r) @7 L9 R- B

- L+ D3 j9 \/ U7 Z( _* p3 z9 c6 K, Q5 s    % display the results of the automatic classification 显示自动分类结果
, O) _1 V! b( _    for i=1:M" p  q, y3 g+ k& |5 G7 n
        disp(classes_to_point_numbers{i});
& [% ]1 N$ p% ^5 }& M; o. n7 c6 V    end6 O, o: Q0 ?4 [# Y- y

( b2 R: b( V( B- V    ppca_plot2d(classes_to_points{1});: v- T* e( O% Y$ m1 M& ?
end5 L' C9 d1 a7 k& T) V. B7 r

该用户从未签到

2#
发表于 2020-12-24 13:13 | 只看该作者
帮你顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-31 19:45 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表