이전에 Random Variable에 대한 글을 작성했던 적이 있다. 현재 우리가 관측하고 있는 숫자는 사실 여러 가능성 중 일부가 관측된 형태라고 볼 수 있다.
예를 들어 "아침 9시 육교를 건너는 사람의 수"라는 Random Variable이 있을 때 우리는 매일 아침 9시 육교를 바라보면서 육교를 건너는 사람의 수를 관측하는데, 이러한 관측치가 많아지게 되면 점차 해당 데이터를 기반으로 "아침 9시 육교를 건너는 사람의 수"에 대한 패턴을 식으로 만들어낼 수 있게 된다.
이를 바탕으로 "아침 9시 육교를 건너는 사람의 수"에 대해서 사람 수별로 히스토그램을 그리듯이 빈도를 찾게 되고, 이 빈도를 바탕으로 확률을 계산할 수 있게 된다. (정말 쉽게 이야기 해서) 각 관찰된 사람의 수별로 확률을 그래프로 하나의 함수로 표현하게 되면 이제 확률질량함수(PMF)라고 한다.
이 때 각 사람의 수 - 확률값으로 매칭이 되는데, 이 때 이 확류질량함수에 대해 미분을 통해서 역으로 계산하면 확률이 가장 높은 "사람의 수"를 찾을 수 있게 된다. 이 때 확률값을 Likelihood라고 한다. 그리고 이렇게 확률이 가장 높은 사람의 수를 찾아내는 과정을 Maximum Likelihood Estimation, 즉 MLE라고 한다.
MLE를 잘 이용하면 어떤 데이터셋을 가장 잘 설명하는 모델을 찾아내기 위한 방법으로 사용할 수 있다.
한줄 정리
MLE(Maximum Likelihood Estimation)는 현재 가지고 있는 데이터를 가장 잘 설명하고 있는 모델을 찾기 위한 하나의 방법이다.
정리
아래 0~4까지 x-axis에 'x'처리를 해놓았는데 해당 값을 관측치라고 가정하고, 해당 값들이 Gaussian Distribution을 기반으로 생성이 된 값들이라고 가정해보자.
지금 세 개의 Gaussian Distribution Model 이 있는데, 세 개 모두 관츠기 X값 일부 또는 전부를 설명할 수 있는 상황이다.
이 때 likelihood를 $\prod_{n=1}^{5}P_{\theta}(Y_n|X_n)$ 형태로 결합해서 계산을 해보면, 아마 두 번째 모델이 가장 높게 나올 것이다. 즉 두 번째 모델이 가장 주어진 데이터를 잘 설명하는 모델이라는 말이다.
Unsupervised이면 Likelihood는 $P_{\theta}(X_n)$ 형태로 되어 있겠지만 예시로 든 케이스는 Supervised이기 때문에 $P_{\theta}(Y_n|X_n)$ 형태로 취했다.
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
x = np.arange(-5, 10, 0.01)
legend = []
for j in range(0,6,2):
legend.append(f'N({j},2)')
plt.fill_between(x, norm.pdf(x, j, 2), alpha=0.5)
dots_to_add = [0,1,2,3,4]
for dot in dots_to_add:
plt.scatter(dot, 0, color='r',marker='x')
plt.xlabel('x')
plt.ylabel('density')
plt.legend(legend)
중요한가?
매우 중요하다.
이후에 Bayesian Analysis 배울 때도 쫓아다니면서 꽤 악몽이었는데,
단순하게 생각해보면 Random Variable도 하나의 Function이고 Probability Mass Function도 하나의 Function인데 Input → f(x) → Output만 필요한게 아니라 하다보면 Output → f'(x) → Input은 자연스럽게 필요할 수 밖에 없어서, Likelihood는 매우 중요하다.
Likelihood 공부하다 보니 Function이 이해가 되고 Derivative가 이해가 되고... Convex가 등장하고, 뭐 다 이어지는 길목에 있는 개념이니, 한줄 정도로라도 최소한 이해하고 있어야 헷갈리지 않는다.