모델 추정과 우도

Python으로 배우는 선형 모델 입문

Jason Vestuto

Data Scientist

추정

히스토그램 그래프로, y축은 정규화된 빈도, x축은 거리 구간이며, 데이터는 회색 막대로, 모델은 회색 막대 상단에 밀접하게 맞는 빨간 가우시안 종 모양 곡선으로 표시됨

Python으로 배우는 선형 모델 입문

추정

# Define gaussian model function
def gaussian_model(x, mu, sigma):
    coeff_part = 1/(np.sqrt(2 * np.pi * sigma**2))
    exp_part = np.exp( - (x - mu)**2 / (2 * sigma**2) )
    return coeff_part*exp_part
# Compute sample statistics
mean = np.mean(sample)
stdev = np.std(sample)
# Model the population using sample statistics
population_model = gaussian(sample, mu=mean, sigma=stdev)
Python으로 배우는 선형 모델 입문

우도 vs 확률

  • 조건부 확률: $P( \text{outcome A} | \text{given B})$
  • 확률: $P( \text{data} | \text{model} )$
  • 우도: $L( \text{model} | \text{data} )$
Python으로 배우는 선형 모델 입문

우도 계산

확률 대 거리 그래프로, 빨간 가우시안 종 모양 곡선이 그려져 있고 왼쪽 끝 근처에 점이 있으며 각 축으로 수평·수직 선분이 연결됨

Python으로 배우는 선형 모델 입문

우도 계산

확률 대 거리 그래프로, 빨간 가우시안 종 모양 곡선 위에 왼쪽 끝에서 중앙 방향으로 6개의 점이 있고 각 점에서 양쪽 축으로 수평·수직 선분이 연결됨

Python으로 배우는 선형 모델 입문

확률로부터 우도 계산

# Guess parameters
mu_guess = np.mean(sample_distances)
sigma_guess = np.std(sample_distances)
# For each sample point, compute a probability
probabilities = np.zeros(len(sample_distances))
for n, distance in enumerate(sample_distances):
    probabilities[n] = gaussian_model(distance, mu=mu_guess, sigma=sigma_guess)
likelihood = np.product(probs)
loglikelihood = np.sum(np.log(probs))
Python으로 배우는 선형 모델 입문

최대 우도 추정

# Create an array of mu guesses
low_guess = sample_mean - 2*sample_stdev
high_guess = sample_mean + 2*sample_stdev
mu_guesses = np.linspace(low_guess, high_guess, 101)
# Compute the loglikelihood for each guess
loglikelihoods = np.zeros(len(mu_guesses))
for n, mu_guess in enumerate(mu_guesses):
    loglikelihoods[n] = compute_loglikelihood(sample_distances, mu=mu_guess, sigma=sample_stdev)
# Find the best guess
max_loglikelihood = np.max(loglikelihoods)
best_mu = mu_guesses[loglikelihoods == max_loglikelihood]
Python으로 배우는 선형 모델 입문

최대 우도 추정

아래로 볼록한 포물선 그래프로, 최댓값에 빨간 점이 표시되어 있으며 x축은 mu 값, y축은 로그 우도로 구성됨

Python으로 배우는 선형 모델 입문

연습해 봅시다!

Python으로 배우는 선형 모델 입문

Preparing Video For Download...