๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (86) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ๋ฌด์ ๋ณด ์ฌ์ ๋ถํฌ(Non-informative prior distribution) ๋ฌด์ ๋ณด ์ฌ์ ๋ถํฌ(Non-informative prior distribution)์ ์์๋ณผ ๊ฒ์ด๋ค. ๊ด์ฌ์๋ ๋ชจ์์ ๋ํ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ์ถ์ง ์๋ค๋ฉด, ๋ชจ์์ ๋ชจ๋ ๊ฐ๋ฅํ ๊ฐ๋ค์ ๋์ผํ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ฌ์ ๋ถํฌ๋ก ๊ท ๋ฑ๋ถํฌ๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค. ์ด๋ฅผ ์ ์ฉํ์ฌ ๋ค์์ ์ํฉ์ ๋ํด ์๊ฐํด๋ณด์. โท ๊ท ๋ฑ๋ถํฌ๋ ๋ฒ ํ๋ถํฌ์ ํน์ดํ ๊ฒฝ์ฐ์ด๋ค. ์ด๋ฅผ ์ด์ฉํ์ฌ, ESS(Effective Sample Size)๋ฅผ ๊ตฌํ ์ ์๋ค. ์ฆ, 2๊ฐ์ ์ํ๋งํผ ์ฌํ๋ถํฌ์ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก ์์ ํ ๋ฌด์ ๋ณด ์ฌ์ ๋ถํฌ๋ผ๊ณ ํ ์ ์๋ค. ๋ฐ์ดํฐ์๋ง ์ข ์์ ์ธ(Dependent) ์ฌํ๋ถํฌ๋ฅผ ์ถ์ ํ๊ธฐ ์ํด ESS๋ฅผ ์ค์ฌ๋ณด์. โท ์ฌ์ ๋ถํฌ์ ๋ ๋ชจ์๋ฅผ 0์ผ๋ก ์ ํ์ฌ ESS๋ฅผ 0์ผ๋ก ๋ง๋ค์๋ค. ESS๊ฐ 0์ธ ๋ฌด์ ๋ณด ์ฌ์ ๋ถํฌ๋ฅผ ์ฌ.. ์คํํฌ(Spark) ์ค์น ์๋์ฐ 10 ํ๊ฒฝ์์ ์คํํฌ(Spark) ์ค์น ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณผ ๊ฒ์ด๋ค. ์คํํฌ๋ฅผ ์ค์นํ๊ธฐ ์ํด ์๋ฐ(Java)์ ์ค์นผ๋ผ(Scala)๊ฐ ํ์ํ๋ค. ๋ฐ๋์ ์๋ฐ์ ์ค์นผ๋ผ๋ฅผ ์ค์นํ ํ, ์คํํฌ๋ฅผ ์ค์นํ๋๋ก ํ์. ์ค์นผ๋ผ์ ์ค์น ๋ฐฉ๋ฒ์ ์๋์ ๋งํฌ๋ฅผ ํตํด ํ ์ ์์ผ๋, ํ์ํ๋ฉด ์ฐธ๊ณ ํ๋๋ก ํ์. [Scala & Spark] 01. ์ค์นผ๋ผ(Scala) ์ค์น ์๋์ฐ 10 ํ๊ฒฝ์์ ์ค์นผ๋ผ(Scalar) ์ค์น ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณผ ๊ฒ์ด๋ค. ์ค์นผ๋ผ๋ ์๋ฐ(Java)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์๋ฐ(1.8 ๋ฒ์ ์ด์)๋ฅผ ๋ฐ๋์ ์ค์นํด์ผ ํ๋ค. ๋ฐ๋์ ์๋ฐ๋ฅผ ์ค์นํ ํ, ์ค์นผ๋ผ๏ฟฝ rooney-song.tistory.com 1. ์คํํฌ ๋ค์ด๋ก๋ ๋ฐ ์ค์น (1) ์ฌ๊ธฐ(http://spark.apache.org/downloa.. ๋ค์ํ ์ผค๋ ์ฌ์ ๋ถํฌ(Conjugate prior distribution) ๋ฌธ์ ๋ฅผ ํตํด ๋ค์ํ ์ผค๋ ์ฌ์ ๋ถํฌ(Conjugate prior distribution)์ ๋ํด ์์๋ณด์. ๋ฌธ์ 1) 10๋ถ๋์ ์ ๋ฅ์ฅ์ ๋์ฐฉํ๋ ๋ฒ์ค ์์ ๋ถํฌ๊ฐ ์ง์๋ถํฌ๋ฅผ ๋ฐ๋ฅด๊ณ , ์ง์๋ถํฌ์ ๋ชจ์๊ฐ ๊ฐ๋ง๋ถํฌ(alpha = 100, beta = 1000)๋ฅผ ๋ฐ๋ฅธ๋ค. 10๋ถ๋์ 12๋์ ๋ฒ์ค๊ฐ ๋์ฐฉํ์๋ค. ์ด๋, ์ฌํ๋ถํฌ์ ์ฌํํ๊ท ์ ๊ตฌํ์ฌ๋ผ. ํ์ด) โท ์ฌํ๋ถํฌ๋ alpha๊ฐ 101, beta๊ฐ 1012์ธ ๊ฐ๋ง๋ถํฌ์ด๋ค. ์ฌ์ ๋ถํฌ์ ์ฌํ๋ถํฌ๊ฐ ๊ฐ๋ง ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ฏ๋ก ์ผค๋ ์ฌ์ ๋ถํฌ๋ผ๊ณ ํ ์ ์๋ค. โท ์ฌ์ ๋ถํฌ์ ESS(Effective Sample Size)๋ alpha์ beta์ ํฉ์ด๋ฏ๋ก, 1100์ด๋ค. โท ์ฌํํ๊ท ์ 0.0998๋ก ๊ฑฐ์ ๋ณํ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ๋ค. ์ด๋ ESS๊ฐ ๋ฐ์ดํฐ์ ๊ฐ์์ ๋นํด ์๋.. ์ค์นผ๋ผ(Scala) ์ค์น ์๋์ฐ 10 ํ๊ฒฝ์์ ์ค์นผ๋ผ(Scalar) ์ค์น ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณผ ๊ฒ์ด๋ค. ์ค์นผ๋ผ๋ ์๋ฐ(Java)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์๋ฐ(Java)๋ฅผ ๋ฐ๋์ ์ค์นํด์ผ ํ๋ค. ์๋ฐ๋ Java SE 8, JDK 8, JRE8 ์ค ํ๋๋ฅผ ์ค์นํ๋๋ก ํ์. ์๋ฐ๋ฅผ ์ค์นํ ํ, ์ค์นผ๋ผ๋ฅผ ์ค์นํ๋๋ก ํ์. 1. ์ค์นผ๋ผ ๋ค์ด๋ก๋ ๋ฐ ์ค์น (1) ์ฌ๊ธฐ(https://www.scala-lang.org/download/)๋ก ๋ค์ด๊ฐ [Download the Scala binaries for windows]๋ฅผ ์ ํํ๋ค. (2) ๋ค์ด๋ฐ์ "scala-2.13.3.msi"๋ฅผ ์คํํ์ฌ ์ค์นํ๋ค. (2-1) ๋ง์ฝ ์คํํฌ(Spark)๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ค์นผ๋ผ๋ฅผ ์ค์นํ๋ ๊ฒฝ์ฐ, ๊ฒฝ๋ก ์ค์ ์ ๋ค๋ฅด๊ฒ ํด์ฃผ์ด์ผ ํ๋ค. ๊ฒฝ๋ก๋ฅผ ์ง์ ์ง์ ํ์ง ์์ผ๋ฉด .. ์ฌํํ๊ท (Posterior mean)๊ณผ ESS(Effective Sample Size) ๋ฌธ์ ๋ฅผ ํตํด ์ฌํํ๊ท (Posterior mean)๊ณผ ESS(Effective Sample Size)์ ๋ํด ์์๋ณด์. ๋ฌธ์ 1) ์ฌ์ ๋ถํฌ๊ฐ ๋ฒ ํ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๊ณ ๊ฐ๋ฅ๋ ํจ์๊ฐ ๋ฒ ๋ฅด๋์ด ๋ถํฌ๋ฅผ ๋ฐ๋ฅผ ๋, ์ฌํ๋ถํฌ์ ํ๊ท ๊ณผ ESS๋ฅผ ๊ตฌํ์ฌ๋ผ. ํ์ด) โท ์ฌํํ๊ท ์ ์ฌ์ ๋ถํฌ์ ํ๊ท ๊ณผ ๋ฐ์ดํฐ ํ๊ท ์ ๊ฐ์คํ๊ท (Weighted average)์ผ๋ก ๋ํ๋ผ ์ ์๋ค. ๋ฐ์ดํฐ ๊ฐ์ค์น์ ๋ถ์๋ ํ๋ณธํฌ๊ธฐ, ์ฌ์ ๋ถํฌ ๊ฐ์ค์น์ ๋ถ์๋ alpha์ beta์ ํฉ์ด๋ค. ์ด๋, ESS๋ ์ฌ์ ํ๊ท ๊ฐ์ค์น์ ๋ถ์์ธ alpha์ beta์ ํฉ์ด๋ค. ์ฆ, ESS๋ ์ฌ์ ํ๊ท ์ด ์ฌํํ๊ท ์ ๋ฐ์๋๋ ๋น์ค์ ์ํ ๊ฐ์๋ก ๋ํ๋ธ ๊ฒ์ด๋ค. โถ ESS๊ฐ ์ปค์ง๋ฉด ์ฌํํ๊ท ์์ ์ฌ์ ํ๊ท ์ ๋น์ค์ด ์ปค์ง๊ณ ๋ฐ์ดํฐ ํ๊ท ์ ๋น์ค์ด ์ค์ด๋ ๋ค. ์ฆ, ์ฌ์ ์ ๋ณด๊ฐ ์ฌํ๋ถํฌ์.. ์ผค๋ ์ฌ์ ๋ถํฌ(Conjugate prior distribution) ์ผค๋ ์ฌ์ ๋ถํฌ(Conjugate prior distribution)์ ๋ํด ์์๋ณผ ๊ฒ์ด๋ค. ๋ค๋ฃฐ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. ์ผค๋ ์ฌ์ ๋ถํฌ์ ์ ์ 2. ์ผค๋ ์ฌ์ ๋ถํฌ์ ์์ 1. ์ผค๋ ์ฌ์ ๋ถํฌ์ ์ ์ ์ผค๋ ์ฌ์ ๋ถํฌ์ ์ ์๋ ๋ค์๊ณผ ๊ฐ๋ค. โท ์ฆ, ์ฌ์ ๋ถํฌ(Prior distribution)์ ์ฌํ๋ถํฌ(Posterior distribution)๊ฐ ๋์ผํ ๋ถํฌ์กฑ์ ์ํ๋ฉด ์ฌ์ ๋ถํฌ๋ฅผ ์ผค๋ ์ฌ์ ๋ถํฌ๋ผ๊ณ ํ๋ค. โท ์ผค๋ ์ฌ์ ๋ถํฌ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์ฌํ๋ถํฌ์ ๊ณ์ฐ์ด ํธ๋ฆฌํด์ง๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ์ ์ผค๋ ์ฌ์ ๋ถํฌ๋ ๋ค์๊ณผ ๊ฐ๋ค. 2. ์ผค๋ ์ฌ์ ๋ถํฌ์ ์์ ๋ฌธ์ ) ์ฌ์ ๋ถํฌ๊ฐ ๋ฒ ํ๋ถํฌ์ ๋ฐ๋ฅด๊ณ ๊ฐ๋ฅ๋ ํจ์๊ฐ ๋ฒ ๋ฅด๋์ด ๋ถํฌ๋ฅผ ๋ฐ๋ฅผ ๋, ์ด ์ฌ์ ๋ถํฌ๊ฐ ์ผค๋ ์ฌ์ ๋ถํฌ์์ ๋ณด์ฌ๋ผ. ํ์ด) โท ์์ ๊ฒฐ๊ณผ๋ฅผ ํตํด ์ฌ์ ๋ถํฌ์ ์ฌํ๋ถํฌ๊ฐ ๋ฒ ํ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ .. ์ธ๊ณต์ ๊ฒฝ๋ง(Artificial Neural Network) ๊ตฌํ MNIST ๋ฐ์ดํฐ์ ์๊ธ์จ๋ก ์ ํ ์ซ์ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฅํ๋ ๋ค์ค ๋ถ๋ฅ(Multiclass classification) ๋ฌธ์ ๋ฅผ ๋ค๋ฃฐ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ๋ ์ฌ๊ธฐ(https://www.kaggle.com/c/digit-recognizer)์์ ์ป์ ์ ์๋ค. ํ์ดํ ์น๋ฅผ ์ด์ฉํ์ฌ ์ธ๊ณต์ ๊ฒฝ๋ง(Artificial Neural Network)์ ๊ตฌํํ ๊ฒ์ด๋ค. ๊ตฌํ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. ๋ฐ์ดํฐ ์ ๋ ฅ ๋ฐ ํ์ธ 2. ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ 3. ๋ชจ๋ธ ์ค์ 4. ๋ฐ์ดํฐ ํ์ต ๋ฐ ๊ฒ์ฆ 1. ๋ฐ์ดํฐ ์ ๋ ฅ ๋ฐ ํ์ธ In: import numpy as np import pandas as pd from sklearn.model_selection import train_test_split import torch import torch.nn .. ์ฌ์ ์์ธก๋ถํฌ์ ์ฌํ์์ธก๋ถํฌ(Prior and posterior predictive distribution) ์ฌ์ ์์ธก๋ถํฌ(Prior predictive distribution)์ ์ฌํ์์ธก๋ถํฌ(Posterior predictive distribution)์ ๋ํด ์์๋ณผ ๊ฒ์ด๋ค. ๋ค๋ฃฐ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. ์ฌ์ ์์ธก๋ถํฌ์ ์ฌํ์์ธก๋ถํฌ์ ์ ์ 2. ์ฌ์ ์์ธก๋ถํฌ์ ์ฌํ์์ธก๋ถํฌ์ ์์ 1. ์ฌ์ ์์ธก๋ถํฌ์ ์ฌํ์์ธก๋ถํฌ์ ์ ์ โท ์ฌ์ ์์ธก๋ถํฌ๋ ๋ฒ ์ด์ฆ ์ ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํ๋ฉด, ์ฌ์ ๋ถํฌ์ ๊ฐ๋ฅ๋ ํจ์์ ๊ณฑ์ ์ ๋ถํ ํํ๋ก ์ ์๋๋ค. ์ฆ, theta์ ๋ํ ๊ฐ๋ฅ๋ ํจ์์ ํ๊ท ์ด๋ผ ํ ์ ์๋ค. โท ์ฌํ์์ธก๋ถํฌ๋ ๋ฒ ์ด์ฆ ์ ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํ ์ ์๋ค. ์ด๋, ์ผ๋ฐ์ ์ผ๋ก ๊ด์ธก ๊ฒฐ๊ณผ์ธ x์ ํ๋ฅ ๋ณ์ x tilde์ ๊ด๊ณ๋ ๋ ๋ฆฝ์ด๋ผ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์, theta์ ์ฌํ๋ถํฌ์ ๊ฐ๋ฅ๋ ํจ์์ ๊ณฑ์ ์ ๋ถํ ํํ๋ก ์ ์๋๋ค. theta์.. ์ ์ฉ๊ตฌ๊ฐ(Credible interval) ์ ์ฉ๊ตฌ๊ฐ(Credible interval)์ ๋ํด ์์๋ณผ ๊ฒ์ด๋ค. ๋ค๋ฃฐ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. ์ ์ฉ๊ตฌ๊ฐ์ ์ ์ 2. ์ ์ฉ๊ตฌ๊ฐ์ ์์ 1. ์ ์ฉ๊ตฌ๊ฐ์ ์ ์ ์ ์ฉ๊ตฌ๊ฐ์ ์ ์๋ ๋ค์๊ณผ ๊ฐ๋ค. โท ๋น๋์ฃผ์(Frequentist) ๊ด์ ์์๋ ๋ชจ์๊ฐ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ ๋ขฐ๊ตฌ๊ฐ(Confidence interval)์ ๋ํ ํด์์ด ์ฐ๋ฆฌ์ ์ง๊ด๊ณผ ๋ง์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์ ์ฉ๊ตฌ๊ฐ์ ๋ชจ์์ ๋ํ ์ฌํ๋ถํฌ๋ฅผ ๊ฐ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ ์ฉ๊ตฌ๊ฐ์ ํด์์ด ์ฐ๋ฆฌ์ ์ง๊ด๊ณผ ์ผ์นํ๋ค. ์ฆ, ๋ชจ์๊ฐ ํด๋น ์ ์ฉ๊ตฌ๊ฐ์ ๋ํด ์กด์ฌํ ํ๋ฅ ์ ๋ํ ํด์์ด ๊ฐ๋ฅํ๋ค. 2. ์ ์ฉ๊ตฌ๊ฐ์ ์์ ๋ฌธ์ ) ๋์ ์ ์๋ฉด์ด ๋์ฌ ํ๋ฅ ์ด ๊ท ์ผ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๊ณ , ๊ฐ๋ฅ๋ ํจ์๋ ๋ฒ ๋ฅด๋์ด ๋ถํฌ์ ๋ฐ๋ฅธ๋ค. ์ด ๋, ๋์ ์ ๋์ก๋๋ ์๋ฉด์ด ๋์๋ค. ์ด ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ์ฌ.. ํด๋์ค(Class)์ ์ธ์ ๋ฐ ๋ฉ์๋(Method) ํ์ด์ฌ์ ์๋ฃ ๊ตฌ์กฐ์ธ ํด๋์ค(Class)์ ์ธ์ ๋ฐ ๋ฉ์๋(Method) ๋ํด ์์๋ณผ ๊ฒ์ด๋ค. ๋ค๋ฃฐ ๋ด์ฉ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ๋ค. 1. self ์ธ์ 2. __init__() ๋ฉ์๋ 3. super() ๋ฉ์๋ 1. self ์ธ์ In: class test_class: def test_fun_1(): print('Function 1') def test_fun_2(self): print('Function 2') t_c = test_class() t_c.test_fun_1() Out: --------------------------------------------------------------------------- TypeError Traceback (most recent call last) in 1 t_c =.. ๋น๋์ฃผ์ ์ถ๋ก (Frequentist inference) ๋น๋์ฃผ์(Frequentist) ๊ด์ ์ ์ถ๋ก (Inference)์ ๋ํด ์์๋ณผ ๊ฒ์ด๋ค. ๋ค๋ฃฐ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. ๊ฐ๋ฅ๋(Likelihood)์ MLE(Maximum Likelihood Estimation) 2. ์ ๋ขฐ๊ตฌ๊ฐ(Confidence interval) 1. ๊ฐ๋ฅ๋์ MLE ๋ฒ ๋ฅด๋์ด ๋ถํฌ์ ๊ฐ๋ฅ๋ ํจ์๋ฅผ ๊ตฌํด๋ณด์. โท P(X tilde)์ ๊ฐ๋ฅ๋ ํจ์์ธ L(theta | X tilde)์ ๊ฒฐ๊ณผ๋ ๊ฐ์ง๋ง, ๊ฐ๋ฅ๋ ํจ์๋ y์ ๋ํ ํจ์๊ฐ ์๋ theta์ ๋ํ ํจ์๋ผ๋ ์ ์์ ๋ค๋ฅด๋ค. ์ฆ, ๊ฐ๋ฅ๋๋ ๋ชจ์์ ๋ํ ํจ์๋ก์จ ๋ชจ์๊ฐ ์ฃผ์ด์ก์ ๋, ๊ด์ธก๊ฐ์ ๋ํด ๋ถ์ฌํ๋ ํ๋ฅ ์ ์๋ฏธํ๋ค. ๋น๋์ฃผ์ ๊ด์ ์์ ๋ชจ์๋ฅผ ์ถ์ ํ๊ธฐ ์ํ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ MLE๊ฐ ์๋ค. MLE๋ฅผ ํตํด ๋ฒ ๋ฅด๋์ด ๋ถํฌ์ ๋ชจ์๋ฅผ ์ถ.. ์๋ ๋ฏธ๋ถ(Automatic differentiation) ์ฌ์ฉ๋ฒ ํ์ดํ ์น์ ์๋ ๋ฏธ๋ถ(Auto differentiation)์ ์ด์ฉํ ๋ณํ๋(Gradient) ๊ณ์ฐ ๋ฐฉ๋ฒ์ ์์๋ณผ ๊ฒ์ด๋ค. ๋ค๋ฃฐ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. ์๋ ๋ฏธ๋ถ ์ค๋น 2. ๋ณํ๋ ๊ณ์ฐ 1. ์๋ ๋ฏธ๋ถ ์ค๋น In: import torch x = torch.ones(2, 2, requires_grad = True) print(x) Out: tensor([[1., 1.], [1., 1.]], requires_grad=True) โท torch.ones()์ ํ ์ ํฌ๊ธฐ์ ๋ํ ์ธ์์ requires_grad ์ธ์๋ฅผ ์ฃผ์ด ํ ์๋ฅผ ์์ฑํ์๋ค. ๊ฒฐ๊ณผ ์ฐฝ์ requires_grad=True๊ฐ ๋ํ๋ ๊ฒ์ ๋ณผ ์ ์๋๋ฐ, ์ด๋ ์ดํ ์ญ์ ํ ๊ณผ์ ์ ์ํ ํ, ํด๋น ํ ์์ ๋ณํ๋๋ฅผ ๊ตฌํ ์ ์๋๋ก ํ๋ค. In: y = .. ์ด์ 1 ยทยทยท 4 5 6 7 8 ๋ค์