์๋
ํ์ญ๋๊น,
์ฌ๊ธฐ๊ฐ ์ง๋ฌธํ๊ธฐ์ ์ ์ ํ ๊ณณ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ธ์.
๋ด ์์ฌ ๋
ผ๋ฌธ์ ๊ฒฝ์ฐ ์ด์ฐ ๋ฐ ์ฐ์(์ฐ์ ๋ฐ ์ด์ฐ ๋ณ์์ ํผํฉ)์ผ ์ ์๋ ์ฌ๋ฌ ํ๋ฅ ๋ณ์์ ์กฐ๊ฑด๋ถ ํ๋ฅ ์ ์ถ์ ํ๊ณ ์ถ์ต๋๋ค. ๋๋ ์ด๊ฒ์ด ์ด ํผํฉ๋ฌผ๊ณผ ์ฆ๊ฑฐ ๋ณ์์ ๊ณต๋ ๋ถํฌ์ ๋ํ ๋ฐ๋ ์ถ์ ์ ์ํํจ์ผ๋ก์จ ์๋ฅ๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฒฐ๊ณผ๋ ๋ถํฌ ํผํฉ์ 2๋ถ์ 1์ด ๋์ง๋ง ํ์ํ ๋ถํฌ๋ ์๋๋๋ค. ๋ฐ๋ผ์ ์กฐ๊ฑด๋ถ ๋ถํฌ์์ ์ํ๋งํ๋ ค๋ฉด ๊ฑฐ๋ถ ์ํ๋ง(๋๋ ์ต์ ํ๋ MCMC ๋ฐฉ๋ฒ)์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด ์ฌ๋ฐ๋ฅธ์ง?
์๋ฅ๋ ํ์ฌ ๋ถํํ๋ ์ฐ์ ๋ถํฌ์ ๋ํ ์กฐ๊ฑด๋ถ ๋ถํฌ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ๊ทธ๋๋ ๋นจ๋ฆฌ ์ถ๊ฐํ๊ณ ์ถ์ ๋ถ๋ถ์ ๋๋ค. ๊ทธ ์์ด๋์ด๋ ๊ทธ๋ด๋ฏํ๊ฒ ๋ค๋ฆฝ๋๋ค. ์ด ์์ญ์์ ๋ ๋ณธ๊ฒฉ์ ์ธ PyMC๋ฅผ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
๋ด๊ฐ ํ ์ ์๋ค๋ฉด, ์ ์๋ณด๋ค. PyMC๋ ๋ถํฌ ํผํฉ๋ฌผ, HMM ๋ฑ๋ ์ง์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฅผ ์์ฑํ๋ ๊ณต์ฅ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ์ธํฐํ์ด์ค๊ฐ ๋งค์ฐ ๋ช ํํ ์๋ฅ๊ฐ PyMC์ (์ต์ ํ๋) ์ํ๋ง ๋ฐฉ๋ฒ๊ณผ ํตํฉ๋ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ์๋ง๋ ์๋ฅ ๋ชจ๋ธ์ PyMC ๋ชจ๋ธ๋ก ๋ณํํ์ฌ.
ํฉ๋ฆฌ์ ์ธ ์๊ฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์๊ฐ์ด ํ์ํ๋ค๋ฉด ์๋ฅ์์๋ ๊ตฌํํ ์ ์์ ๊ฒ์ ๋๋ค. ์ค๋์ ์ด ๋ฌธ์ ์ ๋ํด ์์ ํ ์๊ฐ์ด ์์ต๋๋ค. ์์ ์ ์ํ๋ ์ํ ์ฝ๋ ์ค๋ํซ์ ์ ๊ณตํด ์ฃผ์๋ฉด ๊ณง ๊ตฌํํ ์ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๋๋ ์์ง ์๋ฅ๋ฅผ ์ฌ์ฉํ์ง ์์์ผ๋ฉฐ ๋ด ๋ฌธ์ ์ ๋ํ ๊ฐ์ฅ ์์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒ์ํ๋ ๋จ๊ณ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์กฐ๊ฑด๋ถ ๋ถํฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ฒ์ ๊ฐ์ง ์ ์์ต๋๋ค. ๋ด๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ๋ด๊ฐ ๋ด ์ฒซ ๋ฒ์งธ ๊ฒ์๋ฌผ์์ ์ธ๊ธํ ๊ฒ๊ณผ ์ ํํ ์ผ์นํ์ง๋ง ๊ฐ์ฐ์์์ ํผํฉ๋ง ์ฌ์ฉํ๋ ํ์ฌ ์ฝ๋์ ๋๋ค(๋ซํ ํ์ ํ์์ด ์กด์ฌํจ).
ํธ์ง: ์ด์ sklearn GMM๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ํซ์ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
gmm.weighted_fit(๋ฐ์ดํฐ, ๋ฌด๊ฒ_๋ฐ์ดํฐ)
z=1.2
(con_mean, con_cov, con_weights) = utility.cond_dist_gmm(np.array([np.nan,np.nan,z]), gmm.means_, gmm._get_covars(), gmm.weights_)
์ถ๊ฐํด์ผ ํ ํญ๋ชฉ์ ๋ํ ์์์ ์ธ ์์ฌ ์ฝ๋์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํญ๋ชฉ์ด ์๋ ๊ฒฝ์ฐ:
a = NormalDistribution( 5, 2 )
b = ConditionalGaussianDistribution( w=[5], w0=2, sigma=2 )
๊ทธ๊ฒ์ ์ ๊ท์ธ ๋ถ๋ชจ ๋ถํฌ์ ๋ถ๋ชจ์ ์ ํ ํ๊ท๋ฅผ ์ค์ฌ์ผ๋ก ํ ์กฐ๊ฑด๋ถ ์ ๊ท ๋ถํฌ๋ฅผ ์ง์ ํฉ๋๋ค. ๋ฌด์์ด๋ ๋น์ ์๊ฒ ๊ฐ์ฅ ํธ๋ฆฌํ ๊ฒ์ ๋๋ค.
์ ํํ ๋ฌด์์ ๋ฌป๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. GMM์ ์๋ฅ๋ก ๊ตฌํ๋ฉ๋๋ค(์ ์๊ฐ์๋ sklearn๋ณด๋ค ๋น ๋ฆ ๋๋ค). ์กฐ๊ฑด๋ถ ๊ฐ์ฐ์ค ํผํฉ ๋ชจ๋ธ์ ์ฐพ๊ณ ์์ต๋๊น?
๋ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์กฐ๊ฑด๋ถ GMM.
์ด์ฐ ๋ฐ ์ฐ์ ๋ณ์(์: d=[c1,c2,d1,d2])๊ฐ ์๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ค๋ฅด๊ฒ ํํํ๊ฒ ์ต๋๋ค.
๋๋ ์ด๊ฒ์ ํ ์ ์๊ธฐ๋ฅผ ์ํ๋ค:
gmm=MixtureDistribution(MultivariateGaussianDistribution1, MultivariateGaussianDistribution2, ..., MultivariateGaussianDistributionk)
cat1=์ด์ฐ ๋ถํฌ([(0,0.1),(1,0.3),(2,0.6)])
cat2=์ด์ฐ ๋ถํฌ([(0,0.6),(1,0.4)])
d_model=๊ณต๋๋ถํฌ(gmm,cat1,cat2)
d_model.from_sample(๋ฐ์ดํฐ)
cond_d = ConditionalDistr(d_model,[np.nan,np.nan,1,0])
์ฃ์กํฉ๋๋ค. ์์ง ๋ง์ํ์ ๋ด์ฉ์ ์๋ฒฝํ๊ฒ ์ดํดํ์ง ๋ชปํ๊ณ ์์ต๋๋ค. ์ฐ์ํ ๋ถ๋ชจ์ ๋ถ์ฐ์ํ ๋ถ๋ชจ๋ฅผ ๋ชจ๋ ๊ฐ๋๋ก ์กฐ๊ฑด๋ถ ๋ถํฌ๋ฅผ ์ ์ํ ์ ์๊ธฐ๋ฅผ ์ํ์ญ๋๊น? ๊ธฐ๋ณธ์ ์ผ๋ก ์ด์ฐ ๋ณ์์ ์ฐ์ ๋ณ์๊ฐ ๋ชจ๋ ์๋ ๋ฒ ์ด์ง์ ๋คํธ์ํฌ?
์, ๊ทธ๋ ๊ฒ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ข ๋ ์ฐ๊ตฌ๋ฅผ ํ๊ณ EM์ ์ ํธํ๋ ์ด๋ค ํํ์ ์ํ๋ง ๋ฐฉ๋ฒ๋ ํผํ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ๋ด ๋ชจ๋ธ์ ํํ๋ ฅ์ ๊ฐ์์ํจ๋ค ํ๋๋ผ๋. ๋ฐ๋ผ์ ์กฐ๊ฑด๋ถ ๊ฐ์ฐ์ค ํผํฉ ๋ชจ๋ธ์ ๊ตฌํํ๋ค๋ฉด(๋ด ๊ตฌํ์ด ์ ๋๋ก ์๋ํ์ง ์์), ๊ทธ๋ณด๋ค ํจ์ฌ ๊ฐ์ฌํ ๊ฒ์ ๋๋ค. ๋ด๊ฐ ์ฌ์ฉํ ์ฉ์ง๋ฅผ ์ ๊ณตํ ์ ์์ง๋ง ํ์ํ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง๊ณ ์์ ๊ฒ์ ๋๋ค.
๋ฌผ๋ก , ๋๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ํ์ด์ง์ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์ ๋ฌธ์ ๋ณด๊ณ ์ถ์ต๋๋ค.
๋ด๊ฐ ์ฐพ์ ๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค.
๋ด๊ฐ ์๋ํ ๊ฒ: ๊ธฐ๊ณ ํ์ต์ ์ํ ๊ฐ์ฐ์ค ํ๋ก์ธ์ค์ ๋ถ๋ก A
๋๋ ์กฐ๊ฑด๋ถ ๊ฐ์ฐ์ค ํผํฉ ๋ชจ๋ธ์ 2์ฅ ํ๊ฒฝ ์ํ ๋งคํ
์กฐ๊ฑด๋ถ ๋ฐฐํฌ๋ฅผ ์งํํ์ต๋๊น?
๋๋ ์์ง ์ด๊ฒ๋งํผ ๊น์ด ์๋ ๊ฒ์ ๋ฐฐ์ธ ์๊ฐ์ด ๋ง์ง ์์ต๋๋ค. ์๋น ํ์ ๋ฐฉ๋ฌธ ๋ ์ง๋ ์ด๋ฒ ์ฃผ์ ๋๋ค. ๊ณง ์ด ๋ฌธ์ ๋ก ๋์๊ฐ๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ์์ ํ ๋ด ๋ ์ด๋์์ ๋ฒ์ด๋ฌ์ต๋๋ค. ์ฃ์กํฉ๋๋ค! ๋ด๊ฐ ์ด๊ฒ์ ๊ณง ์์ ํ๋ค๋ฉด ๋น์ ์๊ฒ ๋์์ด ๋ ๊น์, ์๋๋ฉด ๋น์ ์ ๋น์ ์ ๋ ผ๋ฌธ์ ์์ฑํ์ต๋๊น?
๊ด์ฐฎ์์.
๊ทธ๋ฆฌ๊ณ ์ ์๊ฒ ๋์์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ๋
ผ๋ฌธ์ ๋๋ฌ์ต๋๋ค.
๋์๊ด์ ํ์ด์ ๋น๋๋ค.
2016๋ 9์ 1์ผ 04:21์ Jacob Schreiber [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ด๊ฒ์ ์์ ํ ๋ด ๋ ์ด๋์์ ๋ฒ์ด๋ฌ์ต๋๋ค. ์ฃ์กํฉ๋๋ค! ๋ด๊ฐ ์ด๊ฒ์ ๊ณง ์์ ํ๋ค๋ฉด ๋น์ ์๊ฒ ๋์์ด ๋ ๊น์, ์๋๋ฉด ๋น์ ์ ๋น์ ์ ๋ ผ๋ฌธ์ ์์ฑํ์ต๋๊น?
โ
์ค๋ ๋๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub https://github.com/jmschrei/pomegranate/issues/86#issuecomment -243958007์์ ํ์ธํ๊ฑฐ๋ ์ค๋ ๋ https://github.com/notifications/unsubscribe-auth/AG5qkEFMbUPk0uoKA4JTxdt8CaxTfPX29๋ฅผ ์์๊ฑฐ
์น์ ํ๋ @jmschrei ์ด ์ฃผ์ ์ ๋ํ ํ๋ก์ธ์ค๋ ๋ฌด์์ ๋๊น? ๊ด์ฌ๋ ๋์ ๊ฒ์ ๋๋ค. ๊ฐ์ฌ ํด์!
์๋ ํ์ธ์ @jaSunny์ ๋๋ค. ๊ตฌํํ๊ณ ์ ํ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ ํํ ์ค๋ช ํ ์ ์์ต๋๊น?
@jmschrei : ๋ฌผ๋ก ์ด์ฃ ! sample() ๋ฉ์๋ ๋ ํ๋ฅญํ๊ฑฐ๋ ์๋ฅ ๋ชจ๋ธ์ PyMC๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ์ฌ ์ํ๋ง์ ์ํํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. :)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@jmschrei : ๋ฌผ๋ก ์ด์ฃ ! sample() ๋ฉ์๋ ๋ ํ๋ฅญํ๊ฑฐ๋ ์๋ฅ ๋ชจ๋ธ์ PyMC๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ์ฌ ์ํ๋ง์ ์ํํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. :)