좋은 모델이란?
현재 데이터(training data)를 잘 설명하는 모델이자 미래 데이터(testing data)에 대한 예측 성능이 좋은 모델
Explanatory modeling + Predictive modeling
현재 데이터를 잘 설명하는 모델이란 학습 에러를 최소화 하는 모델이다. 즉 트레이닝 에러를 최소화 하는 모델을 만들어야 한다.
$Expected MSE = E[(Y-\hat{Y})]$$
$ = \sigma + (E[\hat{Y}]- \hat{Y})^2 + E[\hat{Y} - E[\hat{Y}]]^2$
$ = \sigma^2 + Bias^2(\hat{Y}) + Var(\hat{Y})$
$ = Irreducible Error + Bias^2 +Variance$
Expected MSE를 전개해보면, 크게 $Irreducible Error, Bias, Variance$ 부분으로 나누어져 있다.
$Irreducible Error$는 모델에서 발생한 에러로 우리가 어떻게 할 수 없는 에러이다. 두 번째로 $Bias$, 세 번째는 $Variance$이다. 우리가 모델로써 줄일 수 있는 에러는 $Bias, Variance$이다.
아래 첫 번째 이미지는 과녁 중앙에 흩어짐 없이 잘 모여있는 그림이다. 두 번째 그림은 중앙 과녁에 잘 맞은거 같으면서도 중앙을 중심으로 분포되어 있다. $Bias$ 관점에서는 좋은데 $Variance$ 관점에서는 조금 좋아보이지 않는다. 세번째는 과녁 중앙에서 떨어져서 $Bias$관점에서는 좋지 않지만, $Variance $관점에서는 좋은 편이다. 네 번째 그림은 $Bias, Variance$ 모두 좋지 않아보인다.
위 그림에서 가장 좋은 경우와 가장 나쁜 경우의 그림은 무엇일까? 당연히 가장 좋은 경우는 첫 번째 그림이고, 가장 나쁜 경우는 네번 째 그림이다. 그럼 두 번째, 세 번째 그림 중 더 나은건 무엇인가? $Bias$가 좋은 것? $Variance$가 좋은 것? 이 부분은 상황에 따라 달라 질 수 있을 것 같다.
미래 데이터 (testing data)에 대한 예측 성능이 좋은 모델은 미래 데이터 에 대한 $Excpected error$가 낮은 모델을 의미한다. 위에서 $Expected Error$를 줄이려면, 우리가 어떻게 할 수 없는 $Irreducible Error$ 가 아닌 $Bias$ 또는 $Variance$가 낮거나 둘 다 낮아야 한다. 둘 다 낮추는 방법이 어렵다면 하나라도 낮추면 좋다.
$Variance$ 를 낮추는 방법은 뭘까?
Subset selection method
Subset selection method 는 전체 p개의 설명변수(X) 중 일부 k 개만을 사용하여 회귀 계수 $\beta$를 추정하는 방법으로, 전체 변수 중 일부만을 선택함에 따라 $Bias$가 증가 할 수 있지만 $Variance$가 감소한다. Subset selection 에는 아래와 같이 몇 가지 방법이 존재한다.
- Best subset selection
- Forward stepwise selection
- Backward stepwise elimination
- Least angle regression
- Orthogonal matching pursuit
정규화 개념
위 데이터를 예측하는 모델에서 가장 좋은 모델은 중앙에 있는 모델이다. 가장 우측에 모든 데이터를 정확하게 예측한 모델이 더 좋아 보일 수 있지만 그렇지 않다.
위 그림은 차수의 증가에 따른 에러 패턴이다. Training 관점에서 보면 차수가 증가하면 증가할수록 에러가 확연히 줄어드는 것을 볼 수 있다. 하지만 Testing 관점에서 보면 차수가 증가함에 따라 에러 값이 감소하다가 특정 차수 이후에 에러가 다시 증가하는 것을 볼 수 있다.
Traing, Testing의 에러가 모두 큰 경우는 $Bias$가 매우 커서 발생하는 문제로 $High Bias problem$이라 한다. 앞에서 살펴봤던 Under-fitting에 관한 그림이다.
Training 관점에서는 에러가 매우 작지만, Testing 관점에서는 에러가 매우 큰 상황이다. 이 때는 $Variance$가 매우 커서 발생하는 문제로 $High Variance problem$ 이라 한다. 앞에서 살펴봤던 Over-fitting에 관한 그림이다.
가장 좋은 모델은 Training, Testing 관점에서 모두 에러가 최소화된 구간의 모델이 가장 좋은 모델일 것이다.
만약, Over-fitting된 모델에서 Variance는 조금 낮춤으로써 좋은 모델로 변화시키는 방법이 무엇일까? 아래와 같은 모델이 존재한다고 가정하다.
$\beta_{0} + \beta_{1}x + \beta_{2}x^2 + \beta_{3}x^3 + \beta_{4}x^4$ 의 Over-fitting된 모델이 있을 때 다음과 같은$\beta_{0} + \beta_{1}x + \beta_{2}x^2$ 모델로 변환하기 위해서 어떻게 해야할까?
여러 가지 방법 중 간단하게 최소제곱법에서 뒤에 $\beta_{3}, \beta_{4}$에 매우 큰 수를 곱해준다. 이 때 최소제곱법으로 구한 값이 최소가 되려면, $\beta_{3}, \beta_{4}$는 어떤 값이 되어야 할까?
$$min_{\beta} \sum_{i=1} ( y_{i} - \hat{y})^2 + 5000\beta_{3}^2 + 5000\beta_{4}^2$$
$\beta_{3}, \beta_{4}$가 0에 매우 가까운 값일 수록 최소제곱법으로 구한 값이 최소가 될것이다. $\beta_{3}, \beta_{4}$에 매우 큰 값을 곱해줌으로써 $\beta_{3}, \beta_{4}$에 제한을 주었다.
이 처럼 파라미터에 페널티를 줌으로써 모델의 변화를 이루자는 것이 정규화(Regularization)의 주된 컨셉이다.
$$L(\beta) = min_{\beta} \sum_{i=1} ( y_{i} - \hat{y})^2 + \lambda\sum_{j=1}^p \beta_{j}^2$$
(1) Training accuracy : $\sum_{i=1} ( y_{i} - \hat{y})^2$
(2) Generalization accuracy : $\lambda\sum_{j=1}^p \beta_{j}^2$
$\lambda$ : 정규화 파라미터로 (1), (2) 사이의 트레이드 오프를 제어하는 역할을 한다.
만약 $\lambda$를 매우 크게 하면, $\beta$ 값들은 매우 작아지므로, $\beta_{0}$의 값만 남아 Under-fitting이 된다. 만약 $\lambda$를 매우 작게 한면, 제약의 효과가 거의 없기 때문에 $\beta$ 값들의 변화가 거의 없고, Over-fitting된다.
즉, 정규화 방법은 회귀 계수 $\beta$가 가질 수 있는 값에 제약 조건을 부여하는 방법이다. 제약 조건에 의해서 $bias$가 증가할 수는 있지만, $Variance$가 감소한다.
이러한 제약 조건에 따라 다양한 방법이 존재한다. Ridge, Lasso, ElasticNet 등에 대한 방법은 다시 정리해본다.
참고자료
https://www.youtube.com/watch?v=pJCcGK5omhE&list=PLpIPLT0Pf7IoTxTCi2MEQ94MZnHaxrP0j&index=26
https://en.wikipedia.org/wiki/Regularization_%28mathematics%29
'AI > Machine Learning' 카테고리의 다른 글
데이터 불균형 - Under Sampling (1) | 2023.09.24 |
---|---|
의사결정 나무 (Decision Tree) 예측, 분류 정리 (0) | 2023.04.01 |
[Machine Learning] 차원축소 - #1 PCA (0) | 2023.03.27 |
[Agent] Software Agent Architecture (0) | 2018.10.28 |
[Agent] Communication (0) | 2018.10.28 |