[Math] 모수추정

검정test과 모수추정parameter-estimation

  • 데이터 분석은 확률변수를 파악해가는 과정
  • 분포검정(distribution test): 확률변수가 예상한 확률분포를 따르는지 검정
    • eg. 정규성 검정(normarlity test)
  • 모수검정(parameter test): 분포를 정했을 때, 해당 pdf의 계수(coefficient, parameter)이 특정값을 가지는지, 또는 큰지 작은지 확인
  • 모수추정(parameter-estimation): 모수가 어떤 값을 가질 확률이 가장 높은지 추정
    • LSM(Least Squared Method): 가능성이 가장 큰 값 하나만 구함
    • MLE(Maximum Likelihood Estimation): 상동
    • Bayesian Estimation: 가능한 모든 모수에 대해 확률 구함
      • 모수적(parametric) 방법: 모수 분포를 확률분포로 나타냄. Hyper Prams필요.
        • 데이터가 베르누이 분포 -> 모수는 베타분포 따른다고 가정
        • 데이터가 카테고리 분포 -> 모수는 디리클레 분포 따른다고 가정
      • 비모수적(non-parametric) 방법: 모수의 분포와 동일한 분포를 가지는 숫자 집합 생성. eg. MCMC

모수추정parameter-estimation

1. 최소자승법 LSM(least squre method)

  • 근사적으로 구하려는 해와, 실제 해의 오차의 제곱의 합이 최소가 되는 해를 구하는 것
  • minimizing the sum of squares of the residulas

1) 역행렬 존재

$Xw = y \rightarrow w=X^{-1}y$

  • X: 계수행렬
  • w: 가중치 벡터(미지수벡터)
  • y: 상수벡터

2) 역행렬 존재하지 않음

$Ax=b$

  • A: 계수 행렬
  • x: 미지수 벡터
  • b: 상수벡터
    • 선형 연립방정식의 해가 존재하지 않는 경우
    • data(방정식) > Dim(미지수 갯수)
  • 2.1) solution: 최소자승법
    • 목표: $Ax \approx b$ 최소화하는 $x$(미지수 벡터) 구하기
    • 방법:
    • 2.1.1) $\text{minimize L2 norm}$
      • $Ax-b=e \rightarrow e^Te = ||e||^2=(Ax-b)^T(Ax-b)$
      • $x = \text{arg} \min_x e^Te$
    • 2.1.2) $x = A^+b$ (pseudo inverse)
      • e: 잔차(residual)
      • 잔차벡터e L2 norm 최소화

2. 최대 가능도 모수 추정(Maximum Likelihood Estimation)

1) $\hat{\theta}_{ML} = \arg \max_{\theta} \log{L}(\theta; \{x_i\})$

  • 추정한 pdf의 변수: $\theta$(params), 상수:$x$(sample)
  • 표본: 같은 확률분포에서 나온 독립적 값

2) 가능도 함수$\mathcal{L}(\theta)=p(x \vert \theta)$

3) 결합확률밀도함수 $\mathcal{L}(\theta; x_1, \dots, x_N)=\prod_{i=1}^N p(x_i;\theta)$

  • 예) $N(\mu, \sigma)$ 표본 x=1이라면, $\mu$=1일 때 pdf가 가장 높음

3. 베이지안 모수 추정

  • tartget: 모수의 사후 분포 $p_{posterior}(\mu| x_1, \dots, x_N)$
  • 모수의 값이 가질 수 있는 모든 가능성의 분포를 계산
  • Hyper prams: 모수$\theta$의 확률분포를 표현

    $p_{posterior}(\mu| x_1, \dots, x_N) = \dfrac{p_{likelihood}(x_1, \dots, x_N| \mu) \cdot p_{prior}(\mu)}{p(x_1, \cdots, x_N)}$

  • $p_{prior}(\mu)$: 모수의 사전분포. 모수 분포 사전지식 없으면, uniform dist. $Beta(1,1)$ or Gaussian dist $N(0, 1)$
  • $p_{posterior}(\mu| x_1, \dots, x_N)$: 데이터(지식) 주어졌을 때 모수의 분포
  • $p_{likelihood}(x_1, \dots, x_N| \mu)$: 모수를 알 때, 데이터 $x_1, \dots, x_N$ 나올 수 있는 확률

예제. 정규분포 기댓값 베이지안 모수 추정

  • 모수 $\mu$ 정규분포 따르는 것으로 가정
  • param $\sigma^2$은 알고 있다고 가정
  • $p_{posterior} \propto p_{likelihood} \cdot p_{prior} $

  • prior: $p(\mu) = N(\mu_0, \sigma_0^2) = \dfrac{1}{\sqrt{2 \pi \sigma_0^2}}\exp(- \dfrac{(\mu - \mu_0)^2}{2 \sigma_0^2}) $

    • $\mu_0$: unknown. $\mu_0$은 정규 분포(0, 1)를 따른다고 가정하고 시작.
    • 즉, hyper param 초기값이 (0, 1) -> 데이터 더할수록 갱신
  • likelihodd: $p(x_1, \cdots, x_N| \mu) = \prod_{i=1}^N N(x_i|\mu) = \prod_{i=1}^N\dfrac{1}{\sqrt{2 \pi \sigma_0^2}}\exp(- \dfrac{(x_i - \mu_0)^2}{2 \sigma_0^2}) $
  • target:$p_{posterior}(\mu_0| x_1, \dots, x_N)$
  • hyper param은 데이터를 먹으면서 계속 갱신됨
  • 즉, 아래의 $x_i$와 N에 따라 갱신
  • 다음 스텝에서는 $\mu’_0$이 $\mu_0$자리로 치환 -> 새로운 데이터 바로바로 적용가능
    • $\mu_o^{‘}$
    • $\sigma_o^{‘}$
1
sp.stats.norm(mu).rvs(N)
array([ 2.52106488,  1.42421203,  2.14195316,  1.68067158,  2.69153875,
        2.69474914,  1.27440262,  0.61663604,  0.4170616 ,  2.61037938,
        0.81114074,  1.49318365,  1.40368596,  1.9474327 ,  0.06372019,
        2.1887786 ,  2.52389102,  2.08842209,  1.68911383,  2.09740017,
        2.39904635, -0.77259276,  3.95591231,  2.39009332,  1.34759142,
        1.60904662,  2.49374178,  1.88389606, -0.03068447,  4.06449286,
        1.88945934,  3.02017271,  1.30795015,  3.53637705,  2.28634369,
        2.60884383,  0.95474663,  3.21114529,  2.68981816,  3.30184623,
        1.37191244,  1.51897288,  4.3039167 ,  0.93998418,  1.8640503 ,
        3.13689136,  2.09772497,  2.58295368,  1.60055097,  2.37005589])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# sample generator
mu, sigma2 = 2, 4

# target: hyperparam
mu0, sigma20 = 0, 1

xx = np.linspace(1, 3, 1000)
np.random.seed(0)

# 데이터(지식)을 50개씩 늘려갔을 때, Posterior는 어떻게 변하는가
line = [":", "-.", "--", "-"]
fig, ax = plt.subplots()
for l in line:
N = 50
x = sp.stats.norm(mu).rvs(N)

mu0 = sigma2 / (N*sigma20 + sigma2) * mu0 + \
(N * sigma20) / (N * sigma20 + sigma2) * x.mean()
sigma20 = 1/(1/sigma20+ N/sigma2)
print(mu0)

ax.plot(xx, sp.stats.norm(mu0, sigma20).pdf(xx), ls=l, label="{}th".format(i))
ax.legend()
ax.axis([1.75, 2.25, 0, 25])
plt.show()
1.9819993262158315
1.9805846303216201
2.0701788542914947
2.0303044050403543

png

reference:

질문

  • 00확률분포의 모수, 의 확률분포는 00를 따르는가?
    • 아니다. 드물다. 이러한 사전분포는 conjugate prior이며 베타분포가 그러하다
  • 예제에서 hyper param 공식 유도시, 최대 가능도 함수 사용?
< !-- add by yurixu 替换Google的jquery并且添加判断逻辑 -->