# numerical calculation & data framesimport numpy as npimport pandas as pd# visualizationimport matplotlib.pyplot as pltimport seaborn as snsimport seaborn.objects as so# statisticsimport statsmodels.api as sm# pandas optionspd.set_option('mode.copy_on_write', True) # pandas 2.0pd.options.display.float_format ='{:.2f}'.format# pd.reset_option('display.float_format')pd.options.display.max_rows =7# max number of rows to display# NumPy optionsnp.set_printoptions(precision =2, suppress=True) # suppress scientific notation# For high resolution displayimport matplotlib_inlinematplotlib_inline.backend_inline.set_matplotlib_formats("retina")
Introduction
Source: R for Data Science by Wickham & Grolemund
모델의 목표는 데이터 세트에 대한 간단한 저차원 요약을 제공하는 것입니다. 이상적으로, 모델은 진정한 ‘신호’(즉, 관심 있는 현상에 의해 생성된 패턴)를 포착하고 ‘노이즈’(즉, 관심 없는 임의의 변동)는 무시합니다. (번역 by DeepL)
The goal of a model is to provide a simple low-dimensional summary of a dataset. Ideally, the model will capture true “signals” (i.e. patterns generated by the phenomenon of interest), and ignore “noise” (i.e. random variation that you’re not interested in).
이상적으로, 모형(model)이 현상으로부터 노이즈가 제거된 진정한 신호를 잡아내 주기를 기대. 물리 법칙: 물리적 세계에 대한 모델
예를 들어, 캐럿과 가격의 진정한 관계를 모델로 표현
Linear model: \(Y = aX + b + \epsilon\), \(\epsilon\): errors
\(price = a \cdot carat + b + \epsilon\)
로그 변환 후 선형관계로 가정: \(log(price) = a \cdot log(carat) + b + \epsilon\)
\(\epsilon\): Gaussian 분포로 가정, 즉 \(\epsilon \sim N(0, \sigma^2)\)
즉, \(X = X_i\)에 대한 conditional mean이 선형함수로 결정됨을 가정
Errors은 노이즈?
Reducible error: 모형이 잡아내지 못한 신호; 영향을 미치지만 측정하지 않은 변수가 존재
Irreducible error:
대표적으로 측정 오차 (measurement error): ex. 성별, 키, 온도, 강수량, 지능, 불쾌지수, 우울증, …
Random processes
물리적 세계의 불확실성: stochastic vs. deterministic world vs.
예를 들어, 동전을 4번 던질 때 앞면의 갯수
H, H, T, H
H, T, T, H
T, T, H, H
…
보통 Gaussian 분포를 이루거나 가정: ex. 측정 오차들, 동전 앞면의 개수들, 키, 몸무게, IQ, …
그 외에 자연스럽게 나타난다고 가정할 수 있는 여러 분포들이 있음; Binomial, Poisson, Exponential, Weibull, Gamma, Beta, …
가령, 환자/병의 특성(X)에 따른 퇴원까지 남은 시간의 경우 \(E(Y|X = X_i) = a * X_i + \epsilon_i\), \(\epsilon_i \sim \text{Exponential}(\lambda)\); \(f(t) = \lambda e^{-\lambda t}\)
불확실성(uncertainty)
예측은 정확할 수 없으며, 이 불확실성이 error로 표현되며,
확률의 개념으로 모형의 일부로 포함되어 예측에 대한 중요한 정보를 제공.
Gaussian/Normal distribution
랜덤한 값들의 합/평균들이 나타내는 분포; 중심극한정리(Central Limit Theorem)
측정 오차의 분포(error distribution)
다양한 힘들의 상호작용으로 인한 분포
분산이 유한한 분포 중에 정보 엔트로피가 최대(maximum entropy)인 분포
\(X \sim N(\mu, \sigma^2)\); density function \(\displaystyle f(x) = \frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{1}{2}(\frac{x-\mu}{\sigma})^2}\)
250개의 모델 중 10개의 모델을 다음과 같은 \((\beta_0, \beta_1)\) 평면으로 살펴보면, 즉, model space에서 살펴보면
오렌지 색은 위에서 구한 10 best models
Source: Introduction to Statistical Learning by James et al.
점차 촘촘한 간격으로 grid search를 하면서 거리를 최소로 하는 모델을 찾아가는 것이고, 실제로는 Newton-Raphson search를 통해 최소값을 구하는 알고리즘을 통해 구할 수 있음.
즉, 거리를 최소로 하는 \(\beta_0\), \(\beta_1\)를 찾으면,
from scipy.optimize import minimizeminimize(measure_distance, [0, 0], args=(sim1)).x
array([4.22, 2.05])
이렇게 squared error가 최소가 되도록 추정하는 것을 ordinary least squares(OLS) estimattion라고 함.
선형 회귀 모형의 경우, 실제로는 위에서 처럼 grid search를 하지 않고, closed-form solution을 통해 바로 구할 수 있음.
Maximum likelihood estimation
데이터가 발생된 것으로 가정하는 분포를 고려했을 때,
어떨때 주어진 데이터가 관측될 확률/가능도(likelihood)가 최대가 되겠는가로 접근하는 방식으로,
X, Y의 관계와 확률분포를 함께 고려함.
이 때, 이 likelihood를 최대화하는 \(\beta_0, \beta_1, \sigma\)를 찾는 것이 목표이며,
이처럼 분포가 Gaussian라면, OLS estimation과 동일한 값을 얻음. (단, \(\sigma\)는 bias가 존재)
다른 분포를 가지더라도 동일하게 적용할 수 있음!
즉, likelihood의 관점에서 주어진 데이터에 가장 근접하도록(likelihood가 최대가 되는) “분포의 구조”를 얻는 과정임
from scipy.optimize import minimizeminimize(likelihood, [0, 0], args=(sim1)).x
array([4.22, 2.05])
from statsmodels.formula.api import olsmod = ols('y ~ x', data=sim1).fit()mod.summary()
OLS Regression Results
Dep. Variable:
y
R-squared:
0.885
Model:
OLS
Adj. R-squared:
0.880
Method:
Least Squares
F-statistic:
214.7
Date:
Sat, 12 Apr 2025
Prob (F-statistic):
1.17e-14
Time:
18:33:25
Log-Likelihood:
-65.226
No. Observations:
30
AIC:
134.5
Df Residuals:
28
BIC:
137.3
Df Model:
1
Covariance Type:
nonrobust
coef
std err
t
P>|t|
[0.025
0.975]
Intercept
4.2208
0.869
4.858
0.000
2.441
6.001
x
2.0515
0.140
14.651
0.000
1.765
2.338
Omnibus:
0.125
Durbin-Watson:
2.254
Prob(Omnibus):
0.939
Jarque-Bera (JB):
0.333
Skew:
0.081
Prob(JB):
0.847
Kurtosis:
2.510
Cond. No.
13.7
Notes: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
Maximum likelihood estimation은 다양한 분포의 데이터에 대해서도 적용할 수 있음.
예를 들어, 다음과 같은 전형적인 Gaussian이 아닌 분포에 대해서도 적용할 수 있음.
Non-constant variance(왼쪽), Poisson distribution(오른쪽)
Uncertainty
관찰된 데이터(표본, sample)로부터 모집단(population)에 대한 정보를 추론할 때, 불확실성이 존재함.
이는 새로운 데이터에 대한 예측의 불확실성 혹은 일반화(generalization)에 대한 문제와 동일함.
예를 들어, 과거 병원 기록으로 새로운 환자에 대한 진단을 내리는 경우
이 환자의 고유한 상태로부터 오는 불확실성: 측정된 부분(measured) + 측정되지 않은 부분(unmeasured)
과거 기록을 통한 진단의 정확성(true relationship)에 대한 불확실성
불확실성에 대한 종류
파라미터 추정치에 대한 불확실성: confidence interval
데이터가 많을 수록
X가 넓게 분포할 수록
특정 추정값에 대한 불확실성
평균값(\(E(Y|X_i)\))에 대한 불확실성: confidence interval
예측값(\(f(X_i)\))에 대한 불확실성: prediciton interval
전통적으로는 분포에 대한 가정으로부터 이론적으로 불확실성을 추론했으나,
현대적인 접근으로 resampling 방식의 bootstrapping이나 sample을 traing/test set으로 나누는 cross-validation 등을 통해 시뮬레이션을 통해 불확실성을 추정할 수 있음
Bayesian 방식에서는 모집단의 분포에 대한 가정없이, 관찰된 데이터만으로 파라미터에 대한 분포(posterior predictive distribution)로 불확실성에 대해 추정하는 방식도 있음; 앞서 지구의 바다/육지의 비율에 대한 분포의 예측 참고
반대로, machine learning에서는 특정 action 혹은 decision-making을 하는 것이 중요한 경우가 많아, 불확실성에 대한 고려가 적은 경향이 있음; 가령, 불확실성이 크던 작던 간에, 실용적인 관점에서 구체적으로 가격을 예측하거나, 질병 여부를 예측하길 기대함. 어떤 질병에 걸렸을 확률이 0.8로 예측되는 경우라도 사실은 불확실성을 고려하면 그 확률은 가령 0.7 ~ 0.9 사이일 수 있음.
아래는 bootstrapping을 통한 실제 표본을 재추출(resampling)하는 방식을 보여줌; 관찰된 표본을 모집단인듯 가정하고 표본을 재추출
전통적으로는 표본 분포(sampling distribution)에 대한 이론을 통해 closed form으로 얻을 수 있음.
Source: The Truthful Art by Albert Cairo.
Predictive Accuracy
전통적인 모형에서는
샘플에 대해서 계산된 값은 실제보다 overestimate 되는 경향이 있으므로,
이를 보정하는 방식으로 계산: adjusted, shrunken
현대적인 방식에서는
샘플을 training/test set으로 나누어서, test set에 대한 예측값을 계산하고, 이를 통해 예측의 정확성을 평가함