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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
高斯混合模型里面的参数可以用到混核主元分析里面吗?有混合概率主元分析的EM算法的程序吗+ U. m! @$ u5 ~' x) d) e6 E/ n
function ppca_mixture  9 I$ W* V! N5 I
filename = 'virus3.dat';
3 H! t, d: L$ I' W0 s, P    T = importdata(filename);, F5 B5 U( C3 D( M+ U8 e
    [N, d] = size(T);
6 ?" b3 J# {) k- K9 R* N" a* n& m( A* ]    M = 3;  % number of ppca analysers considered 考虑的ppca分析仪数量. ?) S/ w1 K1 e6 t
    q = 2;  % dimension of ppcas  ppca的维数1 k7 U) e" K6 N) b" M
    % init
5 S( E" O$ Q6 Q; r# n- S- H    % initializing the posteriors (p(i|t_n), indexed by (n, i). R in text)
- q4 ?  ?4 N0 Z4 p    %初始化后验(p(i|t_n),在文本中由(n, i). R索引     
! F7 B/ ?5 A# ~3 A    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];
2 o' S- J9 _% y! R    for n=1:N
' J4 l! D! C: E4 Z+ x; ]4 V2 N* R        for i=1:M4 D7 L- q9 v+ b  f
            if(i==classes(n))
  G2 |6 n. i# T/ U: w& B: ]                posteriors(n, i) = 1;
  d8 @% Z9 [7 R0 H" T            else  L  ?/ {! }3 {+ x& D% c9 [
                posteriors(n, i) = 0;
9 C* t- p2 T& M            end1 g& |/ v, c, K2 z7 E7 I
        end- f1 u* y% J1 m6 |; F& _
    end( g+ `) O6 v/ I1 f) ?! i
    % precision for convergence checking 收敛检验精度+ s" e' E$ J: e$ y$ w) k9 i) H
    epsilon = 0.01;
( o+ K7 n: q. |7 a7 r* O+ h    entered = false;
) r0 z3 J7 f7 }# F+ ]2 H2 s
; C" h( }  o2 f/ h, n, s- _    % loop
7 t0 e( m, _5 T    while(true)) c# `, _: x, J' Y  x
        % updating priors (p(i), pi in text) and mean vectors (mu in text)
& K1 u) D- q" ]' \9 d7 h        % 更新先验(p(i),文本中的pi)和平均向量(文本中的mu)
( I3 [0 I! |( B2 j  X$ ]3 k% l        new_priors = 1/N * sum(posteriors);
- d2 ?9 l7 h' V' L% f4 Q        new_mus = zeros(M, d);& H# J: m/ K: i" `0 s" g* ^. y
        for i=1:M# N+ o- H9 @7 r
            for n=1:N! c/ l# a& z- P( x
                new_mus(i, = new_mus(i, + posteriors(n, i) * T(n, ;& X- i) n8 |: ~" N# h( C' n
            end
* w% E4 p' x% r            new_mus(i, :) = new_mus(i, :) / sum(posteriors(:, i));6 V9 p, W0 q' f! s9 E0 l
        end8 ~1 |$ _+ l* b+ E/ W1 _, m

2 x) H. C6 Q% ?4 Y; c% @        % computing covariance matrices (S in text)计算协方差矩阵(文本中的S)
, L  E6 O! B$ [# V  |6 c; m1 A1 A5 T        covariances = cell(M);
% e5 X( ^& F4 p2 g, ?        for i=1:M
- v( {% J8 i, G2 j            covariances{i} = zeros(d, d);
$ x, {- v7 I, q) G8 P. l$ a            for n=1:N
" L" j5 {0 I: W& ~                covariances{i} = covariances{i} + posteriors(n, i)*(T(n, :)' - new_mus(i, :)')*(T(n, :)' - new_mus(i, :)')';: T$ ^* o9 U2 U8 m; \0 j/ b% z
            end
- N+ T8 _) ^0 y# d' H) P  b6 |            covariances{i} = covariances{i} / (new_priors(i) * N);
! J% d9 p* [2 |% r/ l        end
  ]4 u% p5 X1 A4 h9 F
! ~+ _5 `. h5 Y. \. I: o. U' {5 c$ s" Z( {: U7 _  @5 }5 F
        % applying ppca using covariance matrices 使用协方差矩阵应用ppca
# d0 m) f6 v6 _" T. U0 c' a        % (Ws are weight matrices; sigmas are variances) (Ws为权重矩阵;(差异)
% _' j8 Z. c2 J! l5 b' {        new_Ws = cell(M);
* y! [; c% X1 B: I9 m        for i=1:M
8 \& g% k7 Z: s' B) `* Z$ q            [new_Ws{i}, new_sigmas{i}] = ppca_from_covariance(covariances{i}, q);
" [1 w! C- ~  |! v$ Y' b        end
5 y! A! ]* J, M. U4 c
& e# A- Z* \3 [% O& d% [        % convergence check 收敛性检查5 z( L6 U7 E1 h0 W/ E0 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)9 ^! U, _$ ]8 W1 f0 a
            break;
+ \. e1 v6 y) c9 r- T* @        end
/ U/ T7 A" G9 ], r* l- O) J6 C
0 {. }- n. o5 c) W        % replacing old parameter values 替换旧的参数值
: i" l8 ]! n0 s' R        priors = new_priors;. j: L/ ]* [( W% T1 w+ |# r% i
        mus = new_mus;
3 y8 q# u4 ?0 S: v- F        Ws = new_Ws;
6 J4 y7 T# {. |. y, Q, }0 n        sigmas = new_sigmas;
; N- c6 U" N; p7 W3 k- q- ?7 A  M# p
        % computing the likelihoods (p(t_n|i)) 计算概率(p(t_n|i))
9 a  |. g& \- g" q2 n        for i=1:M& G" u# Z* b8 X& n7 V8 O. C$ `
            C = sigmas{i}^2 * eye(d) + Ws{i}*Ws{i}';% ~9 E  M! P$ ?) m8 X, l
            detC = det(C);( y$ m; q* V' c+ r8 I, i7 P
            invC = inv(C);
0 W4 N/ _% d% H. b+ F9 V& J            for n=1:N
7 h& |' L! P: d9 s  v( x8 I                likelihoods(n, i) = (2*pi)^(-d/2)*detC^(-1/2)*exp(-1/2*(T(n, :)' - mus(i, :)')'*invC*(T(n, :)' - mus(i, :)'));
- Z8 S% v7 m3 b1 B! I6 d" Q6 T            end
; W. W$ w6 L: Q& T: _        end
9 i  |- w, c3 T' y6 Z; \& f        % computing the joint probabilities (p(t_n, i)) 计算联合概率(p(t_n, i)): Y5 p' }( R! R2 {
        for i=1:M# s- N0 e: ^, t5 R+ q# T8 @8 N  Q! ?
            joint(:, i) = likelihoods(:, i) * priors(i);9 U5 O6 b' n4 S' H6 |  _2 R3 [
        end7 k+ {0 i  ~' A9 i% q* l2 k! W
        % computing the data priors (p(t_n)) 计算数据先验(p(t_n))
( T6 u: R+ ^, U7 u! \, ~+ B        data_priors = sum(joint');
+ K' O* ?' f2 z9 @1 o/ b( c2 \        % computing and displaying the likelihood of the data set 计算和显示数据集的可能性
2 y6 m( u1 [) r$ }& K        disp(sum(log(data_priors)));
! C9 W% P% o% E        % computing the posteriors (p(i|t_n), indexed by (n, i). R in text)* ^3 N' `0 H: h
        % 计算后验(p(i|t_n),用(n, i)索引。R在文本中)0 S* t# Y& |. h, s
        for n=1:N
4 g7 ^) c+ ?2 A3 ~            posteriors(n, :) = joint(n, :) / data_priors(n);1 _  w% L5 ~5 u# m
        end
4 s7 l/ M$ n9 X; _, G
4 t5 t4 H; i# A4 k; m# t        % we went through the loop at least once 我们至少做了一次循环
; _* j1 i8 `: e- b. e' u! i        entered = true;6 W/ @7 v! @) g, D: J- {# d
    end  R8 U$ s+ n) ?6 A: k
  d; D2 A! a6 w& \" Z$ q5 q
3 u, G- x" K/ S
    % computing the latent variables 计算潜变量# D$ \$ }/ Q: q% H+ ^$ E- \# n
    latent = cell(M);" d9 M5 r. d* Y1 p- T+ {
    for i=1:M
" b/ r4 R; y; H        latent{i} = ppca_latent(T, Ws{i}, sigmas(i));/ g5 E1 c& [$ e0 q) `
    end7 }8 F# `( e) v* d5 o, O. a  p
    % selecting likely points for each ppca analyser 为每个ppca分析器选择可能的点, y# v# B7 z1 {" K! w. D% t6 D
    for n=1:N
' L4 u' P. {/ u        [~, i] = sort(posteriors(n, :), 'descend');6 `* b6 h9 w" R% ]: x
        points_to_classes(n) = i(1);
/ s& B3 G, p7 @9 U0 @0 N' ?    end( C1 X' X6 a9 V2 M' Q
    classes_to_points = cell(M);0 l% ]" g+ O* j2 K9 B
    classes_to_point_numbers = cell(M);1 {" r- y3 m/ S$ ~5 i& N. r
    for n=1:N) \) i0 D+ {" \5 g/ q2 S% k
        classes_to_points{points_to_classes(n)}(:, end+1) = latent{points_to_classes(n)}(:, n);
6 d- V' M3 e  b  f" k        classes_to_point_numbers{points_to_classes(n)}(end+1) = n;( P- ^) f4 _1 L/ s1 Z
    end; U; k: D) W6 V4 b* F  x

/ W9 V# o8 v, ]; l9 O1 q" @    % display the results of the automatic classification 显示自动分类结果: T5 X9 h" a- O: W6 s' ?* ?
    for i=1:M. E* z) p4 d8 r7 f' H$ d+ _8 @) g0 t
        disp(classes_to_point_numbers{i});
  a9 t" \" V) |% ~7 F. W    end1 ]' Q$ e* ^3 g- J) O4 Q9 U
* S3 |: z0 M2 B! o' m! \
    ppca_plot2d(classes_to_points{1});. |! F1 n! E' i
end
0 t" {5 j& ~4 m' q

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-12 11:54 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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