機器學習 EM演算法

2021-09-28 10:40:16 字數 2619 閱讀 2210

em演算法(最大期望演算法[expectation-maximization algorithm, em])是為處理缺失資料的引數的估計問題,主要分為e步和m步交替組成,對給定的初始引數依賴較大。

from numpy import

*import numpy as np

import matplotlib.pyplot as plt

import random

defcreate_sample_data

(m, n)

: mat_y = mat(zeros(

(m, n)))

for i in

range

(m):

for j in

range

(n):

# 通過產生隨機數,每一行表示一次實驗結果

mat_y[i, j]

= random.randint(0,

1)return mat_t

# em演算法

defem

(arr_y, theta, tol, iterator_num)

: pi =

0 p =

0 q =

0 m, n = shape(arr_y)

mat_y = arr_y.geta(

)for i in

range

(iterator_num)

: miu =

pi = copy(theta[0]

) p = copy(theta[1]

) q = copy(theta[2]

)for j in

range

(m):

miu_value =

(pi *

(p ** mat_y[j])*

((1- p)**(

1- mat_y[j]))

)/ \

(pi *

(p ** mat_y[j])*

((1- p)**(

1- mat_y[j]))

+(1- pi)

*(q ** mat_y[j])*

((1- q)**(

1- mat_y[j]))

) sum1 =

0.0for j in

range

(m):

sum1 += miu[j]

theta[0]

= sum1 / m

sum1 =

0.0 sum2 =

0.0for j in

range

(m):

sum1 += miu[j]

* mat_y[j]

sum2 += miu[j]

theta[1]

= sum1 / sum2

sum1 =

0.0 sum2 =

0.0for j in

range

(m):

sum1 +=(1

- miu[j]

)* mat_y[j]

sum2 +=(1

- miu[j]

) theta[2]

= sum1 / sum2

print

("------------------------------------------"

)print

(theta)if(

abs(theta[0]

- pi)

<= tol and

abs(theta[1]

- p)

<= tol \

andabs(theta[2]

- q)

<= tol)

:print

("break"

)break

return pi, p, q

defmain()

:# mat_y = create_sample_data(100, 1)

mat_y = mat(zeros((10

,1))

) mat_y[0,

0]=1

mat_y[1,

0]=1

mat_y[2,

0]=0

mat_y[3,

0]=1

mat_y[4,

0]=0

mat_y[5,

0]=0

mat_y[6,

0]=1

mat_y[7,

0]=0

mat_y[8,

0]=1

mat_y[9,

0]=1

#theta 三個引數可以自行更改,然後對比一下結果

theta =

[0.4

,0.6

,0.7

]print

(mat_y)

pi, p, q = em(mat_y, theta,

0.001

,100

)print

(pi, p, q)

main(

)

《統計學習方法》—— 李航

機器學習演算法 EM演算法

介紹 理論分析 現在,已經知道目標函式 似然函式 maxj p x 假設隱變數為z,那麼可以寫成j zp x z 我們假設當前的引數為 i 那麼可以得到 j j i logp x logp x i log zp x,z logp x i log z p z x,i p x z p z x,i log...

機器學習演算法 EM演算法

e步 利用當前估計的引數值,求出在該引數下隱含變數的條件概率值 計算對數似然的期望值 m步 結合e步求出的隱含變數條件概率,求出似然函式下界函式的最大值 尋找能使e步產生的似然期望最大化的引數 值 然後,新得到的引數值重新被用於e步.直到收斂到區域性最優解。note 每次迭代實際在求q函式及其極大,...

機器學習 EM演算法推導

有時,我們用極大似然的時候,公式中可能會有隱變數 l i 1m p yi i 1 m z p yi z i 1m zp z p y i z 也就是 y 取什麼值是由隱含的變數 z 決定的。舉個栗子 有三個硬幣,abc,先拋a,由a的正反面決定下一步拋 b 還是拋 c a是正面拋b,a是反面拋c。第二...