Open danbi5228 opened 2 years ago
m = 샘플 개수, p= 모델이 학습할 파라미터 개수, L^ = 모델의 가능도 함수의 최댓값
학습할 파라미터가 많은 (클러스터가 많은) 모델에게 벌칙을 가함
데이터에 잘 학습하는 모델에게 보상을 더함
하지만 데이터에 아주 잘 맞지 않을 수 있음 (특히 대규모 데이터셋)
확률 vs. 가능도
예) -4와 +1이 중심인 두 개의 가우시안 분포를 가진 1D 혼합 모델, 두 분포의 표준편차를 제어하기 위한 파라미터 Θ
왼쪽 위 그래프: 전체 모델 (x와 Θ의 함수 f(x;Θ))
오른쪽 위 그래프: 가능도 함수 (Θ를 모른 채 샘플 x=2.5 하나를 관측한 경우 얻게 되는 함수)
PDF는 x의 함수, 가능도 함수는 Θ의 함수
가능도 함수는 확률 분포가 아님. (가능한 모든 Θ에 대해서 가능도 함수를 적분하면 언제나 1이 아님. 어떤 양숫값도 될 수 있음)
최대 가능도 추정 (MLE) - 데이터셋 X가 주어졌을 때 일반적으로 모델 파라미터에 대해 가장 그럴듯한 값을 예측함. 이를 위해 X에 대한 가능도 함수를 최대화하는 값을 찾아야 함.
로그 가능도 최대화 - 로그는 곱셈을 덧셈으로 바꿀 수 있는 성질이 있기 때문에 일반적으로 로그 가능도를 최대화하는 것이 더 쉬움. (로그 함수는 증가함수 이므로 가능도 함수를 최대화하는 것은 이 함수의 로그를 최대화하는 것과 동일.)
가능도 함수를 최대화하는 Θ값을 추정하고 나면 AIC와 BIC를 계산하기 위해 필요한 값 L^를 계산할 준비가 됨.
# bic()와 aic() 메서드를 사용해 계산
gm.bic(X)
gm.aic(X)
베이즈 정리: X가 주어졌을 때 z의 조건부 확률인 사후 확률 분포 p(z|X)를 계산하는 것이 목표 $p(z|X)$ = 사후 확률 = 가능도 x 사전 확률 / 증거 = $p(X|z)p(z) \over p(X)$
# 4번째 백분위수 (4%)를 밀도 임곗값으로 사용하여 이상치를 구분하는 방법
densities = gm.score_samples(X)
density_threshold = np.percentile(densities, 4)
anomalies = X[densities < density_threshold]