Model Assessment

김당찬·2022년 3월 9일
0

Statistical Learning

목록 보기
7/14

How to make an assessment of a model?

우리가 어떤 머신러닝 모델을 만들었을 때, 모델의 성능은 어떻게 측정할 수 있을까🤔? 간단히 생각해보면, 서로 다른 데이터셋들에 대해 모델의 정확도를 측정하고, 이들을 종합해서 지표화하면 될 것이다. 이때 데이터셋들은 확률적으로 독립이어야 할 것이다. 모델의 성능을 측정하는 것은 매우❗️ 중요한 문제이다. 실제로 모델을 개발해야 할 때, 다양한 성능지표가 이용될 수 있고 이에 따라 사용하는 머신러닝 기법 역시 달라질 수 있기 때문이다. 이번 게시글에서는 모델의 성능 측정 방법들에 대해 다루어보도록 하자.

Bias-Variance tradeoff

머신러닝과 관련된 글들에서 계속적으로 다루는 내용이 편향과 분산의 최적화에 대한 내용이다. 모델의 복잡성이 증가할 수록 편향이 감소하지만 분산이 올라가고, 따라서 이 둘 사이의 tradeoff 관계를 적절히 맞출 hyperparameter(ex. Spline Model에서 매듭의 개수)를 조율하는 것이 중요한 문제였다.

Target Variable YY와 Input Vector XX에 대해 모델을 훈련시킨다는 것은, Training set T\mathcal{T}로부터 적절한 모형을 설정하여 YY에 대한 예측값 f^(X)\hat f (X)를 구하는 것이다. 당연히 주어진 변수와 예측값 사이에는 오차가 발생할 수 밖에 없으며, 이 오차를 측정하는 함수 L(Y,f^(X))L(Y,\hat f(X)) 를 Loss function손실함수라고 정의한다. 대표적으로 squared error (Yf^(X))2(Y-\hat f(X))^2와 absolute error Yf^(X)|Y-\hat f(X)|가 있다.

Test error(generalization error라고도 한다)는 독립적인 test sample에 대한 예측오차prediction error로,

ErrT=E[L(Y,f^(X))T]\text{Err}_\mathcal{T}=E[L(Y,\hat f(X))|\mathcal T]

로 표현된다. 여기서 주목해야할 것은 Training set T\mathcal T가 고정되어 있으므로, 위 test error는 고정된 특정 훈련 데이터셋을 기준으로 한 오차를 의미한다. 그런데 위 식은 기댓값의 형태이므로 확률변수가 존재하여 randomness 역시 가지고 있음을 의미한다. 반면, Training error는 훈련 샘플들에 대한 손실함수의 표본평균이다. 즉,

err=1Ni=1NL(yi,f^(xi))\overline{\text{err}}=\frac{1}{N}\sum_{i=1}^NL(y_i,\hat f(x_i))

를 의미한다. 이 두 가지 오차중 우리가 실제로 관심을 가져야 하는것은 훈련 중 오차가 아닌 실제 테스트를 수행했을 때의 오차에 대한 기댓값이다. 그러나 Training error는 모델을 복잡하게 하여 bias를 낮추기만 한다면 계속해서 감소하는 성질이 있는 반면, Test error는 bias가 낮아져도 모델의 복잡성이 올라가면 오차가 반드시 감소하지는 않는데, 이는 다음 decomposition에서 확인할 수 있다. Training error가 0인 모델을 구현했다고 하면, 이는 다른 데이터셋에서는 매우 형편없이 작동할 것이므로, Training error는 test error의 좋은 추정치가 되지 못한다. 따라서, 다른 추정치들로 어떤 것들이 이용되는지를 살펴보도록 하자.

Bias-Variance Decomposition

먼저, 제곱오차를 기준으로 살펴보도록 하자. 모델이 Y=f(X)+ϵY=f(X)+\epsilon 형태로 주어지고 E[ϵ]=0,Var(ϵ)=σϵ2E[\epsilon]=0, \text{Var}(\epsilon)=\sigma_\epsilon^2 이 성립한다고 하자. 이때 X=x0X=x_0에서의 기대예측오차EPE는 다음과 같이 분해될 수 있는데, 이를 bias-variance decomposition이라고 한다.

Err(x0)=E[(Yf^(x0))2X=x0]=σϵ2+[Ef^(x0)f(x0)]2+E[f^(x0)Ef^(x0)]2=σϵ2+Bias2(f^(x0))+Var(f^(x0))\begin{aligned} \text{Err}(x_0) &=E[(Y-\hat f(x_0))^2|X=x_0]\\ &=\sigma_\epsilon^2+[E\hat f(x_0)-f(x_0)]^2+E[\hat f(x_0)-E\hat f(x_0)]^2\\ &=\sigma_\epsilon^2+\text{Bias}^2(\hat f(x_0))+\text{Var}(\hat f(x_0)) \end{aligned}

마지막 식에서 첫째항은 모델의 추정에 관계없이 발생하는 데이터로부터의 오차이므로 우리가 컨트롤 할 수 없다. 따라서 bias와 variance만이 남으며, 이는 tradeoff관계가 있으므로 모델의 복잡성을 컨트롤하는것이 필요하다.

Estimate of Training error

Training set T={(x1,y1),(x2,y2),,(xN,yN)}\mathcal T=\{(x_1,y_1),(x_2,y_2),\ldots,(x_N,y_N)\} 이 주어지고 이때 어떤 모델 ff와 새로운 test 데이터 (X0,Y0)(X^0,Y^0)에 대한 test error를 다음과 같이 나타내자.

ErrT=EX0,Y0[L(Y0,f^(X0))T]\text{Err}_\mathcal T=E_{X^0,Y^0}[L(Y^0,\hat f(X^0))|\mathcal T]

그런데 training set T\mathcal T 역시 어떤 확률분포로부터 random하게 얻을 수 있는 데이터셋이므로, 우리는 T\mathcal T에 대해 기댓값을 취할 수 있고, 이를 다음과 같이 나타내도록 하자.

Err=ETEX0,Y0[L(Y0,f^(X0))T]\text{Err}=E_\mathcal T E_{X^0,Y^0}[L(Y^0,\hat f(X^0))|\mathcal T]

그렇다면 위 식의 Err\text{Err}는 새로운 데이터에 대해 기존 test error보다 더 통계학적으로 접근할 수 있게 된다.

Optimism

간단히 생각해보면, training error는 모델을 추정하는데 이용하는 데이터셋을 바탕으로 그대로 (training) error를 추정하기 때문에 랜덤성이 더 높은 test error보다 오차가 낮을 수 밖에 없다. 즉, Test error와 Training error의 불일치가 발생하는 것은 모델의 평가evaluation이 어떤 데이터셋에서 이루어지느냐에 기인한다. 우선 다음과 같이 정의된 In-sample error에 주목해보자.

Errin=1Ni=1NEY0[L(Yi0,f^(xi))T]\text{Err}_{in}=\frac{1}{N}\sum_{i=1}^NE_{Y^0}[L(Y_i^0,\hat f(x_i))|\mathcal T]

여기서 Y0Y^0는 각 training point xi,    i=1,2,,Nx_i,\;\;i=1,2,\ldots,N 에 대해 각각 1개의(총 NN개의) 새로운 반응변수를 관찰한 것을 의미한다. 즉, Training error와의 차이점은 training 데이터셋으로 모델 추정을 하고, training 데이터셋의 반응변수가 아닌 새로운 반응변수를 확률변수로 설정하여 이에 대한 기댓값을 이용했다는 것이다. 이때 In-sample error와 training error의 차이를 optimism이라고 정의하자.(이 책의 저자는 아마 training error가 test error에 비해 일반적으로 더 낮으므로 더 optimistic한 error라는 의미에서 정의한 것 같다🤔 )

op=defErrinerr\text{op}\stackrel{\text{def}}{=}\text{Err}_\text{in}-\overline{\text{err}}

또한, optimism 값은 일반적으로 training error가 예측오차보다 더 낮으므로 양의 값을 가진다고 보면 될 것이다. 마지막으로, optimism 역시 확률변수 YY와 관련되어있으므로 이에 대한 기댓값을 정의할 수 있다.

ω=defEY(op)\omega\stackrel{\text{def}}{=}\text{E}_Y(\text{op})

일반적으로 Training set에 대한 조건부 오류 ErrT\text{Err}_\mathcal T를 사용하는 것 대신 이에 대한 기댓값 Err\text{Err}을 추정하는 것과 마찬가지로, 여기에서도 optimism 값을 직접 사용하는 것 보다, ω\omega 에 대한 추정치를 사용할 수 있다.

Estimates of In-sample prediction error

Mallow's Cp

앞서 정의한 것 처럼 training error는 표본평균이므로, 우리는 In-sample error에 대해 다음과 같은 추정치를 정할 수 있다.

Err^in=err+ω^(1)\widehat{\text{Err}}_{\text{in}}=\overline{\text{err}}+\hat\omega\tag{1}

이때 ω^\hat\omega는 optimism 값의 기댓값에 대한 추정치이다. 여기서 optimism의 기댓값인 ω\omega에 대해 다음이 성립하는데,

ω=2Ni=1NCov(y^i,yi)(2)\omega=\frac{2}{N}\sum_{i=1}^N\text{Cov}(\hat y_i,y_i)\tag{2}

이는 모든 손실함수 종류에 대해 성립한다. 만일 제곱오차손실함수를 이용하고, d개의 모수가 추정되는 상황(d개의 basis function이 이용되는 상황이라고 보면 된다)이라면 식 (1)과 (2)로부터

Cp=err+2dNσ^ϵ2C_p=\overline{\text{err}}+\frac{2d}{N}\hat\sigma_\epsilon^2

라는 형태로 In-sample estimate를 정의할 수 있는데, 이를 (Mallow's) CpC_p statistic이라도고 한다. 이를 이용하면, Training error를 구하고 사용되는 basis function의 개수에 비례해서 In-sample error를 추정할 수 있다.

AIC

AICAkaike information criterion는 CpC_p와 마찬가지로 In-sample error에 대한 추정치로 사용되는데, 로그가능도비log-likelihood 손실함수가 사용될 때 일반적으로 적용된다. 이는 식 (1)과 유사한 관계식을 이용하는데, 다음 관계식에서 NN\to\infty 일 때 점근적으로 성립한다.

2E[logPθ^(Y)]2NE[loglik]+2dN-2\text{E}[\log P_{\hat\theta}(Y)]\sim-\frac{2}{N}\cdot\text{E}[\text{loglik}]+\frac{2d}{N}

위 식에서 Pθ^(Y)P_{\hat \theta(Y)} 는 반응변수 YY에 대한 확률밀도를 의미하며 θ^\hat\thetaθ\theta에 대한 최대가능도추정량mle이고, loglik\text{loglik}는 다음과 같은 최대화된 로그가능도를 나타낸다.

loglik=i=1NlogPθ^(yi)\text{loglik}=\sum_{i=1}^N\log P_{\hat\theta(y_i)}
profile
블로그 이사했습니다 https://ddangchani.github.io

0개의 댓글