Ước lượng mô hình và Likelihood

Nhập môn Mô hình tuyến tính với Python

Jason Vestuto

Data Scientist

Ước lượng

Biểu đồ histogram: số đếm đã chuẩn hóa theo khoảng cách, dữ liệu là các cột xám và mô hình là đường cong chuông Gaussian màu đỏ khớp sát đỉnh các cột xám

Nhập môn Mô hình tuyến tính với Python

Ước lượng

# 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)
Nhập môn Mô hình tuyến tính với Python

Likelihood vs Probability

  • Xác suất có điều kiện: $P( \text{outcome A} | \text{given B})$
  • Xác suất: $P( \text{data} | \text{model} )$
  • Likelihood: $L( \text{model} | \text{data} )$
Nhập môn Mô hình tuyến tính với Python

Tính Likelihood

Đồ thị xác suất theo khoảng cách: đường cong chuông Gaussian màu đỏ, có một điểm gần mé trái, với các đoạn thẳng ngang và dọc nối điểm này đến từng trục

Nhập môn Mô hình tuyến tính với Python

Tính Likelihood

Đồ thị xác suất theo khoảng cách: đường cong chuông Gaussian màu đỏ, với 6 điểm từ mé trái tới gần tâm, mỗi điểm có các đoạn thẳng ngang và dọc nối đến hai trục

Nhập môn Mô hình tuyến tính với Python

Likelihood từ xác suất

# 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))
Nhập môn Mô hình tuyến tính với Python

Ước lượng hợp lý cực đại

# 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]
Nhập môn Mô hình tuyến tính với Python

Ước lượng hợp lý cực đại

Đồ thị hình parabol úp xuống, với điểm đỏ tại giá trị cực đại, vẽ trên trục loglikelihood theo các giá trị của mu

Nhập môn Mô hình tuyến tính với Python

Cùng luyện tập nào!

Nhập môn Mô hình tuyến tính với Python

Preparing Video For Download...