EMアルゴリズム
EM アルゴリズムは、潜在変数を含む確率モデルのパラメーター推定に使用される反復アルゴリズムです。アルゴリズムは、E ステップ (期待ステップ、期待ステップ) と M ステップ (最大化ステップ、最大化ステップ) の 2 つのステップを交互に行います。ステップ E では、現在のパラメータ推定値を使用して隠れ変数の事後確率が計算されます。ステップ M では、ステップ E で計算された隠れ変数の事後確率を使用して、完全なデータの対数尤度関数を最大化して取得します。新しいパラメータが推定されます。これら 2 つのステップは収束するまで繰り返されます。
EMアルゴリズムの一般的なプロセス
EM アルゴリズムは、反復を通じてL ( θ ) = log P ( Y ∣ θ ) L(\theta)=\log P(Y \mid \theta) を求めます。L ( i )=ログ_P ( Y∣θ )の最尤推定値各反復には 2 つのステップが含まれます。EEステップE、期待値を見つける、MMMステップ、最大化を追求します。
入力: 観測変数データYYY、隠し変数データZZZ、結合分布P ( Y , Z ∣ θ ) P(Y, Z \mid \theta)P ( Y ,Z∣θ )、定数P ( Z ∣ Y , θ ) P(Z \mid Y, \theta)P ( Z∣やあ、θ ) ;
ターゲット出力: モデル パラメーターθ \theta私。
反復手順は次のとおりです。
(1) パラメータθ ( i ) \theta^{(i)}の初期値を選択します。私( i )、反復を開始します;
(2)E \mathrm{E}E 步: 记 θ ( i ) \theta^{(i)} 私(i) 为第 i i i反復パラメータθ \thetai + 1 i+1におけるθの推定値私+E \mathrm{E} ( 1回の反復)E ᭥、関数
Q ( θ , θ ( i ) ) = EZ [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = ∑ Z log P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) \begin{aligned} Q\left(\theta,\theta^{(i)}\right) & =E_Z\left[\log P(Y,Z\mid\theta) \mid Y, \theta^{(i)}\right] \\ & =\sum_Z \log P(Y, Z \mid \theta) P\left(Z \mid Y, \theta^{(i)} \ 右) \end{整列}Q(私、私(私))=EZ[ログ_P ( Y ,Z∣私)∣やあ、私(私) ]=Z∑ログ_P ( Y ,Z∣i ) P( Z∣やあ、私( i ) )
具体的には、P ( Z ∣ Y , θ ( i ) ) P\left(Z \mid Y, \theta^{(i)}\right)P( Z∣やあ、私( i ) )は与えられた観測データYYYと現在のパラメーター推定値θ ( i ) \theta^{(i)}私( i )下位隠し変数データZZZの条件付き確率分布;
(3)M \mathrm{M}M步: 求使Q ( θ , θ ( i ) ) Q\left(\theta, \theta^{(i)}\right)Q(私、私( i )最大θ \シータθ、i + 1 i+1私+1回の反復θ ( i + 1 ) \theta^{(i+1)}私( i + 1 )
θ ( i + 1 ) = arg max θ Q ( θ , θ ( i ) ) \theta^{(i+1)}=\arg \max _\theta Q\left(\theta , \theta^{(i)}\right)私( i + 1 )=arg _私マックスQ(私、私(i))
(4) 用得出的 θ ( i + 1 ) \theta^{(i+1)} 私( i + 1 )を導入し、収束するまでステップ (2) と (3) を繰り返します。
スリーコインモデル
まず、EM アルゴリズムを使用した例を紹介します (Li Hang 教授の『統計学習法 (第 2 版、175 ページ)』より引用)。この例のパラメータがどのように取得されるかについては本では説明されていませんでしたので、更新しました。基本的かつ詳細な追加です。
例 9.1 ( 3 枚のコイン モデル) それぞれ A、B、C で示される 3 枚のコインがあると仮定します。これらのコインの表が現れる確率は、それぞれπ、p \pi、pです。円周率、pとqqq . 次のコイン投げテストを実行します。最初にコインA \mathrm{A}A 、その結果に従ってコイン B を選択しますBまたはコインCCC、表の場合はコインBBB、裏側のコインCCC ; 次に、選択したコインを投げます。コインを投げた結果は、表の場合は 1、裏の場合は 0 として記録されます。nn を独立n回の試行 (ここでは、n = 10 n=10n=10 ) の場合、観測結果は次のようになります。
1, 1, 0, 1, 0, 0, 1, 0, 1, 1 1,1,0,1,0,0,1,0,1,11 、1 、0 、1 、0 、0 、1 、0 、1 、1
コイン投げの結果しか観察できず、コイン投げのプロセスは観察できない、つまり、実験においてコイン A の表と裏がわからないとします。一連の実験データ、つまり 3 コイン モデルのパラメータに基づいて 3 コインの表の確率を推定する方法を尋ねます。
このモデルを数式を使って表現します
P ( y ∣ θ ) = ∑ z P ( y , z ∣ θ ) = ∑ z P ( z ∣ θ ) P ( y ∣ z , θ ) \begin{aligned} P(y\mid\theta) =\sum_z P(y,z\mid\theta)\=\sum_z P(z\mid\theta) P(y\midz,\theta)\\end{aligned}P (と∣私)=z∑P (および、z∣私)=z∑P ( z∣i ) P ( y∣z 、私)。
{ p ( y = 1 ∣ θ ) = π p + ( 1 − π ) q 、ソルバー p ( y = 0 ∣ θ ) = π ( 1 − p ) + ( 1 − π ) ( 1 − q ) 、p とします( y ∣ θ ) = π py ( 1 − p ) 1 − y + ( 1 − π ) yqy ( 1 − q ) 1 − y , y ∈ { 0 , 1 } \begin{aligned} & \left\{\ begin{array}{l} p(y=1 \mid \theta)=\pi p+(1-\pi) q, \text { 埋め込み範囲 } \\ p(y=0 \mid \theta )=\pi (1-p) + (1-\pi)(1-q), \text{囲みフィールド}\end{配列}\right 。\\ & 与えられた p(y \mid \theta)=\pi p^y(1-p)^{1-y}+(1-\pi)^yq^y(1-q)^{1-y }、および \in\{0.1\}\end{aligned}{ p (と=1∣私)=π p+( 1−π ) q 、 正面を観察した p (と=0∣私)=p ( 1−p )+( 1−p ) ( 1−q ) 、 反対を観察しただからp ( y∣私)=π py (1−p )1 − y+( 1−円周率)y qy (1−q )1 − y、y∈{ 0 ,1 }
上記のモデルyyではy は実験の最終観察結果が 1 または 0 であることを示し、確率変数zzzは、観測されていないコインAAを表す潜在変数です。Aの結果はθ = ( π , p , q ) \theta=(\pi,p,q)私=(パイ、p 、q )はこのモデルのパラメータです。
観測データYYを書き込みますP ( Y ∣ θ ) = ∑ ZP ( Z ∣ θ ) P ( Y ∣ Z , θ ) P(Y \mid \theta )
=\sum_Z P( Z \mid \theta) P(Y \mid Z, \theta )P ( Y∣私)=Z∑P ( Z∣i ) P ( Y∣Z 、私)
P ( Y ∣ θ ) = ∏ j = 1 n [ π pyj ( 1 − p ) 1 − yj + ( 1 − π ) qyj ( 1 − q ) 1 − yj ] P(Y \mid \theta)=\prod_ {j=1}^n\left[\pi p^{y_j}(1-p)^{1-y_j}+(1-\pi) q^{y_j}(1-q)^{1-y_j }\右]P ( Y∣私)=j = 1∏ん[ π pyj( 1−p )1 − yj+( 1−π ) qyj( 1−q )1 − yj]
私たちの目標は、モデル パラメーターθ = (π, p, q) \theta=(\pi,p,q) を見つけることです。私=(パイ、p 、q )標準値
θ ^ = arg max θ [ log P ( Y ∣ θ ) ] \hat{\theta}=\argmax_\theta [\log P(Y \mid \theta)]私^=私引数マックス[ログ_P ( Y∣私)]
この問題を解決するために、EM EMを使用します。EMアルゴリズムは上記の 3 コイン モデルを解決します
条件付き期待値の知識ポイントを確認する
条件付き期待値とは、特定の条件が与えられた場合の確率変数の期待値の計算を指します。具体的には○○としましょうX和YYYは 2 つの確率変数、YYY の値の範囲はy 1 、 y 2 、…、 yn y_1,y_2,\ldots,y_ny1、y2、…、yん、次にYYを与えるY 、 XXの条件の場合Xの条件付き期待値E ( X ∣ Y ) E(X \mid Y)元_ _∣Y )は次のように定義されます。
E ( X ∣ Y ) = ∑ i = 1 n X i P ( X i ∣ Y ) E(X \mid Y) = \sum_{i=1}^n X_i P(X_i \mid Y)元_ _∣や)=i = 1∑んバツ私はP ( X私は∣や)
其中, X i X_i バツ私はXXを意味しますX在Y = yi Y=y_iY=y私は, P ( X i ∣ Y ) P(X_i \mid Y)のときの値P ( X私は∣Y ) Y = yi Y=y_iで表されますY=y私はこの条件では、XXX取 X i X_i バツ私は確率。この式の意味は、各yi y_iについて次のとおりです。y私は,计算在Y = yi Y=y_iY=y私はこの条件では、XXXの期待値 (すべてのiiに対する)i を合計しXX指定されたYYのXYの条件での期待値。
EMアルゴリズム
ここでは、E ステップと M ステップの式を分解することに焦点を当てます。Mステップの後に得られるパラメータθ \thetaは次のとおりです。θ は次の反復ラウンドに進むことができます
Eステップ
上記のプロセスでQQを導入しますQ関数(ここでは証明はしませんが、まずは使ってみましょう。Q関数の詳しい導出過程は記事末尾の参考記事をご覧ください)
Q ( θ , θ ( i ) ) = EZ [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = ∑ Z log P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) \begin{aligned} Q\left(\theta, \theta^{(i)}\right) & =E_Z \left[\log P(Y, Z \mid \theta) \mid Y, \ theta^{(i)}\right] \\ & =\sum_Z \log P(Y, Z \mid \theta) P\left(Z\mid Y, \theta^{(i)}\right) \end {整列}Q(私、私(私))=EZ[ログ_P ( Y ,Z∣私)∣やあ、私(私) ]=Z∑ログ_P ( Y ,Z∣i ) P( Z∣やあ、私( i ) )
プロトタイプP ( Z ∣ Y , θ ( i ) ) P\left(Z \mid Y, \theta^{(i)}\right)P( Z∣やあ、私( i ) )異なるzzz = 1 z=1
の場合のz逆アセンブリz=1の場合、ベイズ公式を使用して推定します (AAAが前です。隠し変数z = 1 z=1z=1はyyを意味しますy観察はBB形式B )
P ( z = 1 ∣ y , θ ( i ) ) = P ( z = 1 , y , θ ( i ) ) P ( y , θ ( i ) ) = P ( z = 1 ) P ( y , θ ( i ) ∣ z = 1 ) ∑ z P ( z ) P ( y , θ ( i ) ∣ z ) = P ( z = 1 ) p ( y , θ ( i ) ∣ z = 1 ) P ( z = 1 ) p ( y , θ ( i ) ∣ z = 1 ) + P ( z = 0 ) p ( y , θ ( i ) ∣ z = 0 ) = π py ( 1 − p ) 1 − y π py ( − p ) 1 − y + ( 1 − π ) qy ( 1 − q ) 1 − y \begin{aligned} P(z=1 \mid y, \theta^{(i)})=\frac{P( z =1, y, \theta^{(i)})}{P(y,\theta^{(i)})} & =\frac{P(z=1) P(y, \theta^{ ( i)} \mid z=1)}{\sum_z P(z) P(y, \theta^{(i)} \mid z)} \\ & =\frac{P(z=1) p( y , \theta^{(i)}\mid z=1)}{P(z=1) p(y, \theta^{(i)}\mid z=1)+P(z=0) p ( y, \theta^{(i)} \mid z=0)} \\ & =\frac{\pi p^y(1-p)^{1-y}}{\pi p^y(1 - p)^{1-y}+(1-\pi) q^y(1-q)^{1-y}} \end{aligned}P ( z=1∣よ、私(私))=P (および、私(私))P ( z=1 、よ、私( i ) )=∑zP ( z ) P ( y 、私(私)∣z )P ( z=1 ) P ( y ,私(私)∣z=1 )=P ( z=1 ) p ( y ,私(私)∣z=1 )+P ( z=0 ) p ( y ,私(私)∣z=0 )P ( z=1 ) p ( y ,私(私)∣z=1 )=π py (1−p )1 − y+( 1−π ) qy (1−q )1 − yπ py (1−p )1 − y
同様に、z = 0 z=0z=0時
P ( z = 0 ∣ y , θ ( i ) ) = P ( z = 0 , y , θ ( i ) ) P ( y , θ ( i ) ) = P ( z = 0 ) P ( y , θ (i) ∣ z = 0 ) ∑ z P ( z ) P ( y , θ ( i ) ∣ z ) = P ( z = 0 ) p ( y , θ ( i ) ∣ z = 0 ) P ( z = ) p ( y , θ ( i ) ∣ z = 1 ) + P ( z = 0 ) p ( y , θ ( i ) ∣ z = 0 ) = ( 1 − π ) qy ( 1 − q ) 1 − y π py ( 1 − p ) 1 − y + ( 1 − π ) qy ( 1 − q ) 1 − y \begin{aligned} P(z=0 \mid y, \theta^{(i)})=\frac { P(z=0, y, \theta^{(i)})}{P(y,\theta^{(i)})} & =\frac{P(z=0) P(y, \theta ^{(i)}\mid z=0)}{\sum_z P(z) P(y, \theta^{(i)}\mid z)} \\ & =\frac{P(z=0 ) p(y, \theta^{(i)}\mid z=0)}{P(z=1) p(y, \theta^{(i)}\mid z=1)+P(z= 0 ) p(y, \theta^{(i)} \mid z=0)} \\ & =\frac{(1-\pi) q^y(1-q)^{1-y}}{ \ pi p^y(1-p)^{1-y}+(1-\pi) q^y(1-q)^{1-y}} \end{aligned}P ( z=0∣よ、私(私))=P (および、私(私))P ( z=0 、よ、私( i ) )=∑zP ( z ) P ( y 、私(私)∣z )P ( z=0 ) P ( y ,私(私)∣z=0 )=P ( z=1 ) p ( y ,私(私)∣z=1 )+P ( z=0 ) p ( y ,私(私)∣z=0 )P ( z=0 ) p ( y ,私(私)∣z=0 )=π py (1−p )1 − y+( 1−π ) qy (1−q )1 − y( 1−π ) qy (1−q )1 − y
定義μ ( i ) = p ( z = 1 ∣ y , θ ( i ) ) \mu ^{(i)}=p(z=1 \mid y, \theta^{(i)})メートル(私)=p ( z=1∣よ、私( i ) )は、 y の観測結果がコイン B から得られる確率 (A が正) を表し、コインが C から得られる確率 (A の結果が負) は1 − μ ( i ) 1-\mu ^{ (私)}1−メートル( i )
このとき、Q ( θ , θ ( i ) ) Q\left(\theta, \theta^{(i)}\right)Q(私、私( i ) )関数関数
Q ( θ , θ ( i ) ) = EZ [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = ∑ Z log P ( Y , Z ∣ θ ) 。 P ( Z ∣ Y , θ ( i ) ) = log P ( Y , Z = 1 ∣ θ ) P ( Z = 1 ∣ Y , θ ( i ) ) + log P ( Y , Z = 0 ∣ θ ) P ( Z = 0 ∣ Y , θ ( i ) ) = log P ( Z = 1 ∣ θ ) P ( Y ∣ Z = 1 , θ ) ⋅ μ ( i ) + log P ( Z = 0 ∣ θ ) P ( Y ∣ Z = 0 , θ ) ⋅ ( 1 − μ ( i ) ) = μ ( i ) ⋅ log [ π py ( 1 − p ) 1 − y ] + ( 1 − μ ( i ) ) ⋅ log [ ( 1 − π ) qy ( 1 − q ) 1 − y ] = μ ( i ) [ log π + log py ( 1 − p ) 1 − y ] + ( 1 − μ ( i ) ) ⋅ log ( 1 − π ) + log qy ( 1 − q ) 1 − y ] \begin{aligned} Q\left(\theta, \theta^{(i)}\right) & =E_Z \left[\; log P(Y,Z\mid\theta)\mid Y,\theta^{(i)}\right]\\&=\sum_Z\log P(Y,Z\mid\theta) P\left(Z\ Mid Y, \theta^{(i)}\right) \\ & =\log P(Y, Z=1 \mid \theta) P\left(Z=1 \mid Y, \theta^{(i) ; }\right)+\log P(Y, Z=0 \mid \theta) P\left(Z=0 \mid Y, \theta^{(i)}\right) \\ & =\log P( Z =1 \mid \theta) P(Y \mid Z=1, \theta) \cdot \mu^{(i)}+\log P(Z=0 \mid \theta) P(Y \mid Z= 0 , \theta) \cdot\left(1-\mu^{(i)}\right) \\ & =\mu^{(i)} \cdot \log \left[\pi p^y(1- p )^{1-y}\right]+\left(1-\mu^{(i)}\right) \cdot \log \left[(1-\pi) q^y(1-q)^ { 1-y}\right] \\ & =\mu^{(i)}\left[\log \pi+\log p^y(1-p)^{1-y}\right]+\left( 1). -\mu^{(i)}\right) \cdot\left[\log(1-\pi)+\log q^y(1-q)^{1-y}\right] \end {整列}Q(私、私(私))=EZ[ログ_P ( Y ,Z∣私)∣やあ、私(私) ]=Z∑ログ_P ( Y ,Z∣i ) P( Z∣やあ、私(私))=ログ_P ( Y ,Z=1∣i ) P( Z=1∣やあ、私(私))+ログ_P ( Y ,Z=0∣i ) P( Z=0∣やあ、私(私))=ログ_P ( Z=1∣i ) P ( Y∣Z=1 、私)⋅メートル(私)+ログ_P ( Z=0∣i ) P ( Y∣Z=0 、私)⋅( 1−メートル(私))=メートル(私)⋅ログ_[ π py (1−p )1 − y ]+( 1−メートル(私))⋅ログ_[ ( 1−π ) qy (1−q )1 − y ]=メートル(私)[ログ_円周率+ログ_py (1−p )1 − y ]+( 1−メートル(私))⋅[ログ( 1 _−円周率)+ログ_qy (1−q )1 − y ]
Mステップ
求使Q ( θ , θ ( i ) ) Q\left(\theta, \theta^{(i)}\right)Q(私、私( i )最大θ \シータθ、ii 番目i回の反復θ ( i + 1 ) \theta^{(i+1)}私( i + 1 )。合計をnnn 個の観測値のグループyj, 1 ≤ j ≤ n y_j, 1 \leq j \leq nyj、1≤j≤n、次にQQQ関数は、 Q ' = ∑ jn Q ( θ , θ ( i ) ) Q^\prime=\sum_j^n Q\left(\theta, \theta^{(i)}\right) として表すことができます。Q』=∑jんQ(私、私(私))。Q'Q^\プライムを見つけるQ'パラメータの最大化θ = ( π , p , q ) \theta=(\pi, p, q)私=(パイ、p 、q ) 、 Q ' Q^\primeとしますQ'の偏導関数は0 00、それぞれパラメータθ = (π, p, q) \theta=(\pi, p, q) を私=(パイ、p 、q )。
以下はπ \piを解く方法を示しています。定義:
∂ Q ′ ∂ π = ∑ jn ∂ Q ∂ π = ∑ jn ∂ ∂ π [ μ j ( i ) [ log π + log pyj ( 1 − p ) 1 − yj ] + ( 1 − μ j ( i ) ) ⋅ [ log ( 1 − π ) + log qyj ( 1 − q ) 1 − yj ] ] = ∑ jn ∂ ∂ π [ μ j ( i ) log π + ( 1 − μ j ( i ) ) log ( 1 − π ) ] = ∑ jn μ j ( i ) π + μ j ( i ) − 1 1 − π = 0 = ∑ jn ( 1 − π ) μ j ( i ) + π ( μ j ( i ) − 1 ) = 0 ∑ jn µ j ( i ) = ∑ jn π \begin{aligned} \frac{\partial Q^\prime}{\partial \pi} =\sum_j^n \frac{\ Partial Q }{ \partial \pi} &= \sum_j^n \frac{\partial}{\partial \pi} \left[\mu_j^{(i)}\left[\log \pi+\log p^{ y_j} (1-p)^{1-{y_j}}\right]+\left(1-\mu_j^{(i)}\right) \cdot \left[\log(1-\pi)+\ log q ^{y_j}(1-q)^{1-{y_j}}\right]\right] \\ &= \sum_j^n \frac{\partial}{\partial \pi}\left[\mu_j ^{ (i)} \log \pi+(1-\in_j^{(i)}) \log (1-\in)\right] \\ &= \sum_j^n \frac{\in_j^{(i)。 )}}{\pi}+\frac{\mu_j^{(i)}-1}{1-\pi}=0 \\ &= \sum_j^n(1-\pi) \mu_j^{(i )}+\pi\left(\mu_j^{(i)}-1\right)=0 \\ & \sum_j^n \mu_j^{(i)}=\sum_j^n \pi \end{aligned}∂ π∂Q _「=j∑ん∂ π∂Q _=j∑ん∂ π∂[ mj(私)[ログ_円周率+ログ_pyj( 1−p )1 − yj]+( 1−メートルj(私))⋅[ログ( 1 _−円周率)+ログ_qyj( 1−q )1 − yj] ]=j∑ん∂ π∂[ mj(私)ログ_円周率+( 1−メートルj(私))ログ( 1 _−円周率)]=j∑ん円周率メートルj(私)+1−円周率メートルj(私)−1=0=j∑ん( 1−p ) mj(私)+円周率( mj(私)−1 )=0j∑んメートルj(私)=j∑んp
即∑ jn μ j ( i ) = n π \sum_j^n \mu_j^{(i)}=n \pij∑んメートルj(私)=nπ事π = 1 n ∑ jn μ j ( i ) \pi=\frac{1}{n} \sum_j^n \mu_j^{(i)}円周率=n1j∑んメートルj(私)
同じ手順で、それぞれ∑ jn ∂ Q ∂ p = 0 \sum_j^n \frac{\partial Q}{\partial p}=0 とします。∑jん∂p _∂Q _=0和∑ jn ∂ Q ∂ q = 0 \sum_j^n \frac{\partial Q}{\partial q}=0∑jん∂q _∂Q _=0の場合、次の反復のすべてのパラメーターを見つけることができますθ = (π, p, q) \theta=(\pi, p, q)私=(パイ、p 、q )は、次の反復最適化ラウンドに進むことができます。
令 ∑ jn ∂ Q ∂ p = 0 = ∑ jn ∂ ∂ p [ μ j ( i ) [ log π + log pyj ( 1 − p ) 1 − yj ] + ( 1 − μ j ( i ) ) ⋅ [ log ( 1 − π ) + log qyj ( 1 − q ) 1 − yj ] ] = ∑ jn ∂ ∂ p [ μ j ( i ) ⋅ log pyj ( 1 − p ) ( 1 − yj ) ] = ∑ jn ∂ ∂ p [ yj ⋅ μ j ( i ) log p + μ j ( i ) ( 1 − yj ) log ( 1 − p ) ] = ∑ jn [ yj ⋅ μ j ( i ) p + μ j ( i ) ⋅ ( 1 − yj ) ⋅ ( − 1 ) 1 − p ] = 0 = ∑ jnyj ⋅ μ j ( i ) − μ j ( i ) ⋅ yj ⋅ p + p ⋅ yj ⋅ μ j ( i ) − p ⋅ μ j ( i ) = 0 \begin{aligned} & \text { 令 } \sum_j^n \frac{\partial Q}{\partial p}=0 \\ & =\sum_j^n \frac{\partial }{\partial p}\left[\mu_j^{(i)}\left[\log \pi+\log p^{y_j}(1-p)^{1-{y_j}}\right]+\left (1-\mu_j^{(i)}\right) \cdot\left[\log (1-\pi)+\log q^{y_j}(1-q)^{1-{y_j}}\right ]\right] \\ & =\sum_j^n \frac{\partial}{\partial p}\left[\mu_j^{(i)} \cdot \log p^{y_j}(1-p)^{ (1-{y_j})}\right] \\ & =\sum_j^n \frac{\partial}{\partial p}[{y_j} \cdot \mu_j^{(i)} \log p+\mu_j^ {(i)} (1-{y_j}) \log (1-p)] \\ & =\sum_j^n\left[\frac{
{y_j} \cdot \mu_j^{(i)} }{p }+\frac{\mu_j^{(i)} \cdot(1-{y_j}) \cdot(-1)}{1-p}\right]=0 \quad \\ & =\sum_j^n { y_j} \cdot \mu_j^{(i)}-\mu_j^{(i)} \cdot {y_j} \cdot p+p \cdot {y_j} \cdot \mu_j^{(i)}-p \cdot \mu_j^{(i)}=0 \quad \\ \end{整列} 作る j∑ん∂p _∂Q _=0=j∑ん∂p _∂[ mj(私)[ログ_円周率+ログ_pyj( 1−p )1 − yj]+( 1−メートルj(私))⋅[ログ( 1 _−円周率)+ログ_qyj( 1−q )1 − yj] ]=j∑ん∂p _∂[ mj(私)⋅ログ_pyj( 1−p )( 1 − yj) ]=j∑ん∂p _∂[ yj⋅メートルj(私)ログ_p+メートルj(私)( 1−yj)ログ( 1 _−p )]=j∑ん[pyj⋅メートルj(私)+1−pメートルj(私)⋅( 1−yj)⋅( − 1 )]=0=j∑んyj⋅メートルj(私)−メートルj(私)⋅yj⋅p+p⋅yj⋅メートルj(私)−p⋅メートルj(私)=0
即ち
∑ jnyj ⋅ μ j ( i ) = ∑ jnp ⋅ μ j ( i ) p = ∑ jnyj ⋅ μ j ( i ) ∑ jn μ j ( i ) \sum_j^n y_j \cdot \mu_j^{(i)} =\sum_j^np \cdot \mu_j^{(i)} \\ p=\frac{\sum_j^n y_j \cdot \mu_j^{(i)}}{\sum_j^n \mu_j^{(i) }} \\j∑んyj⋅メートルj(私)=j∑んp⋅メートルj(私)p=∑jんメートルj(私)∑jんyj⋅メートルj(私)
次来
令 ∑ jn ∂ Q q = 0 = ∑ jn ∂ ∂ q [ μ j ( i ) [ log π + log pyj ( 1 − p ) 1 − yj ] + ( 1 − μ j ( i ) ) ⋅ [ log ( 1 − π ) + log qyj ( 1 − q ) 1 − yj ] ] = ∑ jn ∂ ∂ q [ ( 1 − μ j ( i ) ) ⋅ log qyj + ( 1 − μ j ( i ) ) ⋅ ( 1 − yj ) ⋅ log ( 1 − q ) ] = ∑ jn ( 1 − μ j ( i ) ) ⋅ yjq + ( 1 − μ j ( i ) ) ⋅ ( 1 − yj ) ⋅ ( − 1 ) 1 − q = ∑ jn ( yj ⋅ ( 1 − q ) − μ j ( i ) ⋅ yj ( 1 − q ) + q ⋅ ( yj − 1 ) − q ⋅ μ j ( i ) ⋅ ( yj − 1 ) ) = ∑ jn ( yj − yj ⋅ q − μ j ( i ) ⋅ yj + μ j ( i ) ⋅ yj ⋅ q + yjq − q − μ j ( i ) ⋅ yj ⋅ q + μ j ( i ) ⋅ q ) = ∑ jn ( yj − μ j ( i ) ⋅ yj − q + μ j ( i ) ⋅ q ) \begin{aligned} & \text { 令 } \sum_j^n \frac{\partial Q}{q }=0 \\ & =\sum_j^n \frac{\partial}{\partial q}\left[\mu_j^{(i)}\left[\log \pi+\log p^{y_j}(1- p)^{1-y_j}\right]+\left(1-\mu_j^{(i)}\right) \cdot\left[\log (1-\pi)+\log q^{y_j}( 1-q)^{1-y_j}\right]\right] \\ & =\sum_j^n \frac{\partial}{\partial q}\left[\left(1-\mu_j^{(i) }\right) \cdot \log q^{y_j}+\left(1-\mu_j^{(i)}\right) \cdot\left(1-y_j\right) \cdot \log (1-q) \right] \\ & =\sum_j^n \frac{\left(1-\mu_j^{(i)}\right) \cdot y_j}{q}+\frac{\left(1-\mu_j^{ (i)}\right) \cdot\left(1-y_j\right) \cdot(-1)}{1-q} \\ & =\sum_j^n\left(y_j \cdot(1-q)- \mu_j^{(i)} \cdot y_j(1-q)+q \cdot\left(y_j-1\right)-q \cdot \mu_j^{(i)} \cdot\left(y_j-1\ right)\right) \\ & =\sum_j^n\left(y_j-y_j \cdot q-\mu_j^{(i)} \cdot y_j+\mu_j^{(i)} \cdot y_j \cdot q+y_j qq-\mu_j^{(i)} \cdot y_j \cdot q+\mu_j^{(i)} \cdot q\right) \\ & =\sum_j^n\left(y_j-\mu_j^{(i) } \cdot y_j-q+\mu_j^{(i)} \cdot q\right) \\ & \end{aligned} 作る j∑んq∂Q _=0=j∑ん∂q _∂[ mj(私)[ログ_円周率+ログ_pyj( 1−p )1 − yj]+( 1−メートルj(私))⋅[ログ( 1 _−円周率)+ログ_qyj( 1−q )1 − yj] ]=j∑ん∂q _∂[ ( 1−メートルj(私))⋅ログ_qyj+( 1−メートルj(私))⋅( 1−yj)⋅ログ( 1 _−q ) ]=j∑んq( 1−メートルj(私))⋅yj+1−q( 1−メートルj(私))⋅( 1−yj)⋅( − 1 )=j∑ん( yj⋅( 1−q )−メートルj(私)⋅yj( 1−q )+q⋅( yj−1 )−q⋅メートルj(私)⋅( yj−1 ) )=j∑ん( yj−yj⋅q−メートルj(私)⋅yj+メートルj(私)⋅yj⋅q+yjq−q−メートルj(私)⋅yj⋅q+メートルj(私)⋅q )=j∑ん( yj−メートルj(私)⋅yj−q+メートルj(私)⋅q )
つまり、
∑ jnyj − μ j ( i ) ⋅ yj = ∑ jnq ( 1 − μ j ( i ) ) q = ∑ jn ( 1 − μ j ( i ) ) ⋅ yj ∑ jn ( 1 − μ j ( i ) ) \ begin{aligned} \sum_j^n y_j-\mu_j^{(i)} \cdot y_j=\sum_j^nq\left(1-\mu_j^{(i)}\right) \\ q=\frac{\ sum_j^n\left(1-\mu_j^{(i)}\right) \cdot y_j}{\sum_j^n\left(1-\mu_j^{(i)}\right)} \end{aligned}j∑んyj−メートルj(私)⋅yj=j∑んq( 1−メートルj(私))q=∑jん( 1−メートルj(私))∑jん( 1−メートルj(私))⋅yj
これまでに、パラメータθ = ( π , p , q ) \theta=(\pi, p, q) を取得しました。私=(パイ、p 、q )それぞれ、
π = 1 n ∑ jn μ j ( i ) p = ∑ jnyj ⋅ μ j ( i ) ∑ jn μ j ( i ) q = ∑ jn ( 1 − μ j ( i ) ) ⋅ yj ∑ jn ( 1 − μ j ( i ) ) \pi=\frac{1}{n} \sum_j^n \mu_j^{(i)} \\ p=\frac{\sum_j^n y_j \cdot \mu_j^{( i)}}{\sum_j^n \mu_j^{(i)}} \\ q=\frac{\sum_j^n\left(1-\mu_j^{(i)}\right) \cdot y_j}{ \sum_j^n\left(1-\mu_j^{(i)}\right)}\\円周率=n1j∑んメートルj(私)p=∑jんメートルj(私)∑jんyj⋅メートルj(私)q=∑jん( 1−メートルj(私))∑jん( 1−メートルj(私))⋅yj
上記のパラメータとサンプルの反復関係では、
1, 1, 0, 1, 0, 0, 1, 0, 1, 1 1,1,0,1,0,0,1,0,1,11 、1 、0 、1 、0 、0 、1 、0 、1 、1
初期パラメータを設定します
π ( 0 ) = 0.5 、 p ( 0 ) = 0.5 、 q ( 0 ) = 0.5 \pi^{(0)}=0.5,p^{(0)}=0.5,q^{( 0)}=0.5円周率( 0 )=0.5 、p( 0 )=0.5 、q( 0 )=0.5
によるμ j ( i ) \mu_{j}^{(i)}メートルj(私)式はyj = 0 に関係なく y_j=0を取得します。yj=0またはyj = 1 y_j=1yj=1,均一有μ j ( 1 ) = 0.5 \mu_{j}^{(1)}=0.5メートルj( 1 )=0.5 個の
値π
( 1 ) = 1 10 ( μ 1 ( 0 ) + μ 2 ( 0 ) + μ 3 ( 0 ) ⋯ + μ 10 ( 0 ) ) = 0.5 p ( 1 ) = y 1 ⋅ μ 1 ( 0 ) + y 2 ⋅ μ 2 ( 0 ) + y 3 ⋅ μ 3 ( 0 ) + ⋯ + y 10 ⋅ μ 10 ( 0 ) (μ 1 ( 0 ) + μ 2 ( 0 ) + μ 3 ( 0 ) ⋯ + μ 10 ( 0 ) ) = 6 × 0.5 10 × 0.5 = 0.6 q ( 1 ) = ( 1 − μ 1 ( 0 ) ) ⋅ y 1 + ( 1 − μ 2 ( 0 ) ) ⋅ y 2 ⋯ + ( 1 − μ 10 ( 0 ) ) ⋅ および 10 ( 1 − μ 1 ( 0 ) ) + ( 1 − μ 2 ( 0 ) ) + ⋯ + ( 1 − μ 10 ( 0 ) ) = 6 × 0.5 10 − 0.5 × 10 = 0.6 \begin{aligned} \pi^{(1)} & =\frac{1}{10}\left(\mu_1^{(0)}+\mu_2^{(0)}+\mu_3^ {(0 )} \cdots+\mu_{10}^{(0)}\right) \\ & =0.5 \\ p^{(1)} & =\frac{y_1 \cdot \mu_1^{(0) }+y_2 \cdot \mu_2^{(0)}+y_3 \cdot \mu_3^{(0)}+ \cdots+y_{10} \cdot \mu_{10}^{(0)}}{\left (\in_1 ^{(0)}+\in_2^{(0)}+\in_3^{(0)} \cdots+\in_{10}^{(0)}\right)} \\ & =\frac {6 \ 0.5 倍} {10 \times 0.5} \\ & =0.6 \\ q^{(1)} & =\frac{\left(1-\mu_1^{(0)}\right) \cdot y_1+ \left( 1-\in_2^{(0)}\right) \cdot y_2 \cdots+\left(1-\in_{10}^{(0)}\right) \cdot y_{10}}{\left (1- \in_1^{(0)}\right)+\left(1-\in_2^{(0)}\right)+\cdots+\left(1-\in_{10}^{(0)} \right) } \\ & =\frac{6\times0.5}{10-0.5\times10}=0.6\end{aligned}円周率( 1 )p( 1 )q( 1 )=101( m1( 0 )+メートル2( 0 )+メートル3( 0 )⋯+メートル10( 0 ))=0.5=( m1( 0 )+メートル2( 0 )+メートル3( 0 )⋯+メートル10( 0 ))y1⋅メートル1( 0 )+y2⋅メートル2( 0 )+y3⋅メートル3( 0 )+⋯+y10⋅メートル10( 0 )=10×0.56×0.5=0.6=( 1−メートル1( 0 ))+( 1−メートル2( 0 ))+⋯+( 1−メートル10( 0 ))( 1−メートル1( 0 ))⋅y1+( 1−メートル2( 0 ))⋅y2⋯+( 1−メートル10( 0 ))⋅y10=10−0.5×106×0.5=0.6
繰り返しを続けることで、最終的なパラメータθ = (π, p, q) \theta=(\pi, p, q) を取得できます。私=(パイ、p 、qの最終値は、 3 コイン モデルです。
Pythonコードを使用して実験シミュレーションを実施し、効果があるかどうかを確認します
以下は、実験データを生成し、EM アルゴリズムを使用してパラメーターを推定するために使用されるコードです。推定されたパラメーターを使用して複数のシミュレーション実験を実行し、モデルの予測能力をテストします。
import random
import numpy as np
import time
def coin_experiment(pi, p, q, n):
"""
模拟掷硬币实验
pi: 硬币 A 正面出现的概率
p: 硬币 B 正面出现的概率
q: 硬币 C 正面出现的概率
n: 实验次数
"""
results = []
results_A = []
results_B = []
results_C = []
for i in range(n):
# 先掷硬币 A
if random.random() < pi:
# 选硬币 B
coin = 'B'
p_head = p
else:
# 选硬币 C
coin = 'C'
p_head = q
# 接着掷选出的硬币
if random.random() < p_head:
results.append(1)
else:
results.append(0)
# 记录每个硬币的正反面
if coin == 'B':
if random.random() < p:
results_B.append(1)
else:
results_B.append(0)
results_A.append(1)
else:
if random.random() < q:
results_C.append(1)
else:
results_C.append(0)
results_A.append(0)
# 计算 A、B、C 硬币的正面概率
p_A = sum(results_A) / len((results_A))
p_B = sum(results_B) / len(results_B)
p_C = sum(results_C) / len(results_C)
return results, p_A, p_B, p_C
pi = 0.2
p = 0.3
q = 0.8
n = 100000
s=time.time()
print(f'开始模拟,模拟参数为pi={
pi},p={
p},q={
q}……')
Y,pi,p,q=coin_experiment(pi, p, q, n)
Y= np.array(Y)
print(f'模拟结束,共模拟{
n}次,耗时{
time.time()-s}……')
print(f"模拟结果,pi={
pi},p={
p},q={
q},整体实验Y=1概率={
sum(Y)/len(Y)}")
#EM参数反推,任意设定初始参数
pi_0 = 0.9
p_0 = 0.8
q_0 = 0.9
epsiodes=1000 #迭代次数
count=1
while count<=epsiodes:
mu = pi_0 * p_0**Y * (1-p_0)**(1-Y) / (pi_0 * p_0**Y * (1-p_0)**(1-Y) + (1-pi_0) * q_0**Y * (1-q_0)**(1-Y))
pi=(1/n)*sum(mu)
p=sum(Y*mu)/sum(mu)
q=sum((1-mu)*Y)/sum(1-mu)
if count%100==0:
print(f"第{
count}次迭代,估算参数分别为:pi={
pi},p={
p},q={
q}")
pi_0 = pi
p_0 = p
q_0 = q
count+=1
#用拿到的估计参数重新模拟下
s=time.time()
print(f'二次模拟检验,模拟参数为pi={
pi},p={
p},q={
q}……')
Y,pi,p,q=coin_experiment(pi, p, q, n)
Y= np.array(Y)
print(f'模拟结束,共模拟{
n}次,耗时{
time.time()-s}……')
print(f"模拟结果,pi={
pi},p={
p},q={
q},整体实验Y=1概率={
sum(Y)/len(Y)}")
実験を観察し、設定した初期値 pi = 0.2、p = 0.3、q = 0.8 に従って 100,000 回の実験を実行します。
シミュレーション プロセス中, pi, p, q は設定した値に非常に近かったです. 実験は実際にこれらのパラメータに従って行われました. 全体的な実験結果 y=1 の確率は 0.696 でした. 最後にパラメータ pi は= 0.91 は EM アルゴリズムの 1000 回の反復後に得られました。p = 0.68、q = 0.83。これらはモデルの実際のパラメーターとは大きく異なりますが、これらのパラメーターを使用して新たに 100,000 回の実験を実施しました。最終的な全体的な実験結果は次のとおりです。 y=1 の確率は 0.6983 で、これは実際のモデルの結果に非常に似ており、より正確なシミュレーションが実現され、モデルは効果的です。