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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
高斯混合模型里面的参数可以用到混核主元分析里面吗?有混合概率主元分析的EM算法的程序吗5 Y! Z; L. v: y' |& n- h- L: \
function ppca_mixture  . l4 ^& l* W# n! P6 i+ Y
filename = 'virus3.dat';
* }2 d- }# ?/ _& Q8 h- }    T = importdata(filename);
0 a$ s. r2 {# P8 ^/ u    [N, d] = size(T);! B8 p" t% w: C* }( C
    M = 3;  % number of ppca analysers considered 考虑的ppca分析仪数量
, `% P3 p0 v7 `. p8 E2 A, o    q = 2;  % dimension of ppcas  ppca的维数0 _! e, S9 U* n, ^
    % init
; R6 S$ Q$ C$ ]! T; w9 z" C    % initializing the posteriors (p(i|t_n), indexed by (n, i). R in text)
$ P% _3 }% d( Z( t, ?" ~8 s    %初始化后验(p(i|t_n),在文本中由(n, i). R索引     
# Z4 M' m5 F3 g2 }+ s    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];0 u  u$ O1 M' ?: b) X: t/ n
    for n=1:N
' e' o# d! i, I7 P: l        for i=1:M9 W2 y# H$ z' [, H- V: ?/ y
            if(i==classes(n))
, k5 M/ f! \, X. P                posteriors(n, i) = 1;/ g3 g  u6 v4 h. J. s; n$ U# q
            else( w! O2 S  M4 M( }- ~+ w1 V
                posteriors(n, i) = 0;
0 o9 S3 P! ~" h; r            end
$ m0 i; i) l# X1 x0 p4 V; @' H        end4 z0 W0 Q' W( Z0 p- {- E& @
    end
+ Q3 H& B: X/ c" G  S6 L    % precision for convergence checking 收敛检验精度; X- A3 N$ Y# o
    epsilon = 0.01;7 x: U% V- q$ P( _
    entered = false;
7 U9 `% R) k# F3 w4 L5 r2 r7 w5 |. `, i$ {% |, V1 b1 J/ z' u
    % loop( G5 c% Y* W0 c. I( Y3 Y/ {. Z
    while(true)- ?+ ~" a! F0 t+ K* U* i( P
        % updating priors (p(i), pi in text) and mean vectors (mu in text)
0 c: G% m: J/ t* P5 K% w8 B2 P9 x        % 更新先验(p(i),文本中的pi)和平均向量(文本中的mu)
$ P7 Y  H0 _, o5 R6 ]        new_priors = 1/N * sum(posteriors);
  s7 ]. O$ p, `7 S2 J* L6 Q        new_mus = zeros(M, d);* }3 }. _, F' J% `" k$ b4 L
        for i=1:M
( q5 V) R$ c1 s6 q            for n=1:N
+ d" r# \! ]# D$ |9 \9 H                new_mus(i, = new_mus(i, + posteriors(n, i) * T(n, ;
5 u3 ?$ |, A3 B' j            end
6 t6 l% c6 j9 Z# E) R            new_mus(i, :) = new_mus(i, :) / sum(posteriors(:, i));4 r! ~: I" a5 l" Y) o
        end
: C4 B: P4 |3 B+ Q" ^. w' Z4 E/ [7 P; V" j
        % computing covariance matrices (S in text)计算协方差矩阵(文本中的S)2 |  ~& X4 @! t9 r/ `. ~
        covariances = cell(M);
3 z6 K$ C% I! C5 B  {, t8 e5 u        for i=1:M* d# P+ Y% O2 C4 o' h. B) Y4 ^
            covariances{i} = zeros(d, d);
4 M: N! t' [* ?8 F9 v            for n=1:N
1 ~) [. H- \% [5 G# a; [" A                covariances{i} = covariances{i} + posteriors(n, i)*(T(n, :)' - new_mus(i, :)')*(T(n, :)' - new_mus(i, :)')';) M) T- a8 M- m( G
            end+ w3 |3 s# Z% F) k3 F
            covariances{i} = covariances{i} / (new_priors(i) * N);
6 o. Z  G) S/ h; ^, A" ?        end6 k) x. a  M  \+ e5 A& a7 c4 d
& F2 H- ]* H5 e1 W/ ~8 E- }) e
  j; x; }& r, N7 A
        % applying ppca using covariance matrices 使用协方差矩阵应用ppca
. R; s1 J+ j  z6 m: T        % (Ws are weight matrices; sigmas are variances) (Ws为权重矩阵;(差异)5 h6 f/ U4 o8 @. Y! ~) X' v7 U7 B2 K
        new_Ws = cell(M);
2 U  |% }& i4 a' R        for i=1:M
; H3 I* V4 r1 N  e! P5 U% i            [new_Ws{i}, new_sigmas{i}] = ppca_from_covariance(covariances{i}, q);
) x9 w5 _- |3 t* V3 ^- }  [        end
9 A  w+ I8 D/ N% O8 k- f+ K  y! k. }( N6 w+ j  x1 W9 Q
        % convergence check 收敛性检查3 H5 \% {. l, Y! `5 y& F
        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)
4 e: j5 N4 Y& y% ~. P4 A            break;! g7 ?* g) g1 f" ^5 l4 W3 ?+ @
        end
3 G" {! P4 j! g7 H8 p" g
; A4 N" e; }' E+ z8 u/ T: B        % replacing old parameter values 替换旧的参数值
0 H6 ?7 D/ g7 |( Z& X. }        priors = new_priors;
3 n  o) Z7 B( Y) I, P) {        mus = new_mus;
$ m( J. n! _' e* E        Ws = new_Ws;
. J, V8 u5 w3 j. v  G8 I# B3 O( S        sigmas = new_sigmas;
* t) b& B/ r3 j# W( x; ]  `: R+ t4 j, i7 m. w* A& E5 ?
        % computing the likelihoods (p(t_n|i)) 计算概率(p(t_n|i))
6 O, g# }# R" ?% h+ t        for i=1:M
: T$ i$ H: B3 @6 `# c* v            C = sigmas{i}^2 * eye(d) + Ws{i}*Ws{i}';
/ S2 k! ^- x1 h1 f3 j3 c            detC = det(C);7 d* C" ^6 v* X9 V$ A
            invC = inv(C);
8 T) S8 d$ H3 T! l' ?0 A            for n=1:N
/ }  g# U) W- G* m, D8 e" @                likelihoods(n, i) = (2*pi)^(-d/2)*detC^(-1/2)*exp(-1/2*(T(n, :)' - mus(i, :)')'*invC*(T(n, :)' - mus(i, :)'));/ G# G3 ~) p$ I! |. ~" G+ b
            end% ~1 r; m0 k5 ]% r0 }0 D; H: y% G
        end
# w8 k3 o0 ~( x* Y/ ]        % computing the joint probabilities (p(t_n, i)) 计算联合概率(p(t_n, i))
! @% c1 o8 u: f' ~4 x7 C        for i=1:M* [  J2 J8 v; m) |* p
            joint(:, i) = likelihoods(:, i) * priors(i);6 @  H7 t3 T" O2 ~
        end
! @# G( M5 I: Q% S/ y$ ^* D: Z        % computing the data priors (p(t_n)) 计算数据先验(p(t_n))
5 _* {+ h: x+ S3 [' D7 {. x( e        data_priors = sum(joint');( N2 g- Y0 _6 H6 P7 x& H! b- [
        % computing and displaying the likelihood of the data set 计算和显示数据集的可能性
8 H. U2 [& Y0 r% ]( P3 i( O        disp(sum(log(data_priors)));
( r( j4 I1 B+ ?# ~        % computing the posteriors (p(i|t_n), indexed by (n, i). R in text)
5 w) c2 t2 L% d$ L. V        % 计算后验(p(i|t_n),用(n, i)索引。R在文本中)
; m. ~5 C5 E+ C: ?& C0 U        for n=1:N+ g- R8 L7 g  ^! U; ^) b  A
            posteriors(n, :) = joint(n, :) / data_priors(n);
) s; g$ t% Q# m/ z& |0 r* W. f        end* g' \+ ?( p, k8 r

! h. E, f- M) n. {& ]) o& `( L        % we went through the loop at least once 我们至少做了一次循环
- n8 @& k4 N* M) X# @5 Z5 t        entered = true;
/ {3 m7 P) {- I& Z9 }, V5 E    end5 D" R: r; G. u9 i6 u

& e1 D, ^$ v; x7 O* K; D  i4 o' T9 Q2 @  E
    % computing the latent variables 计算潜变量
% U7 u: K# |2 t    latent = cell(M);
/ u/ Z7 [- q# C    for i=1:M# }2 D* ?5 T/ K" L! r& i
        latent{i} = ppca_latent(T, Ws{i}, sigmas(i));
4 W+ Q6 ]# t( H  ?- A    end* E9 ~- `- z) l& f; F$ @/ @& s8 e
    % selecting likely points for each ppca analyser 为每个ppca分析器选择可能的点8 J' B- z5 U, z
    for n=1:N5 }. L8 k. i8 B" V5 I( t5 I
        [~, i] = sort(posteriors(n, :), 'descend');
( j7 G$ j2 `$ v: x0 y) K        points_to_classes(n) = i(1);: H9 m/ T2 |; u8 ]; r. s
    end
# p9 f/ \3 C& g    classes_to_points = cell(M);0 H, N# c5 }: H( x( |0 [0 L
    classes_to_point_numbers = cell(M);# I2 [2 m6 ^! Z* D- L, M
    for n=1:N
. ]* _3 N' b: N  G/ z" z        classes_to_points{points_to_classes(n)}(:, end+1) = latent{points_to_classes(n)}(:, n);
" }: S9 v* a9 {) @1 M% E9 l        classes_to_point_numbers{points_to_classes(n)}(end+1) = n;$ t4 ^& E" \2 V, T1 Y
    end
) h7 \( K1 m7 Z8 U! y0 i- `9 M& v0 B/ ?7 o+ K5 f5 J! z$ D
    % display the results of the automatic classification 显示自动分类结果
8 G( g6 y$ ~" ^- k, v5 e    for i=1:M) s+ C2 ]3 h& f$ t- [
        disp(classes_to_point_numbers{i});
- r" O: Z6 g. I2 I! }    end8 w0 t* ~" H) S4 p2 M! Y) J  t
6 Q  V9 a+ ]5 m. k& H2 {
    ppca_plot2d(classes_to_points{1});
! x# X9 u' }" n3 cend7 m4 y# h3 W$ E* j

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 06:53 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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