기계학습/정규화 #
개요 #
기계학습 모델에서 가장 중요한 점은 무엇일까? "정확도" 라고 말하는 사람이 많을 것이다. 데이터를 집어넣었을 때 정확한 예측값을 도출하는 것은 물론 중요하다. 하지만 높은 정확도가 오직 내가 사용한 데이터에 국한된다면? 기계학습 모델로서 가치가 없는 것이다. 즉, 어떤 데이터를 넣어줘도 높은 정확도를 보이는 범용성(robustness)이 기계학습 모델에서 매우 중요하다. 그렇다면 이러한 문제를 극복할 방법이 있을까? 그중 하나가 바로 정규화(Normalization)이다. 이번 글에서는 기계학습 모델을 만들 때 부딪치게 되는 과최적화(Overfitting)
문제와 이를 극복할 방법으로 정규화
에 대해 알아보고자 한다.
과최적화(Overfitting) #
과최적화는 다음의 두 경우에 발생할 수 있다. 1. 집단 내 편향성(bias) 2. 과도한 변수(feature)의 개수 첫 번째 경우는 우리가 기계학습 모델을 만들기 집단을 대표하는 표준집단 선정과정에서 임의추출(random sampling) 방법을 통해 극복할 수 있다. 두 번째 경우는 아래 그림을 살펴보도록 하자(그림 1).
<그림 1. 과최적화 문제. 출처: http://daeson.tistory.com/184>
이 예제는 기계학습법의 하나인 Logistic regression을 사용한 회귀식이다. 왼쪽부터 변수가 한 개, 두 개, 셋 이상인 경우의 회귀식을 도식화한 것이다. 변수 간 교차를 고려한다면 회귀식이 복잡해지고 차원의 증가에 따라 예외를 허용하지 않게 된다. 예측하고자 하는 특성과 관계가 없거나 그 영향이 적은 특성이 학습에 포함되는 경우이다. 과최적화는 학습에 드는 컴퓨터의 메모리 사용량을 늘리는 직접적인 효과가 있고 새로운 값을 줬을 때 낮은 정확도를 얻게 되어 결국 사용할 수 없게 된다.
정규화 #
이러한 과최적화를 해결하는 방법의 하나가 바로 정규화이다. 계속해서 회귀식을 예로 들면 각 특성에 대한 θ값은 일반적으로 가중치(weight)라 표현할 수 있다. 이는 예측하고자 하는 특성과 연관성이 높은 특성의 경우 높은 값을 반대의 경우 낮은 값을 갖게 된다. 정규화는 이 θ 값에 페널티를 주어 0에 가깝게 만듦으로써 예측에 불필요한 변수의 영향을 최소화하는 과정이다. 이러한 정규화 방식에는 L1, L2 두 가지가 있다. 모두 영향력이 적은 변수에 대한 θ를 최소화하는 방법이다. 각 각에 대해 자세히 알아보자.
L1 정규화 #
L1 정규화를 사용한 회귀 모형을 Lasso(Least absolute shrinkage and selection operator) regression이라고도 한다. 아래 식을 살펴보자(그림 2).
<그림 2. Cost function in Lasso regression>
쉽게 예기하면 가중치(ß)에 일정한 값을 빼 주는 것이다. 즉, 영향력이 적은 가중치를 0으로 만들어 모델에 사용되는 함수에서 배제하는 것이다. 이 방식은 많은 기계학습에서 사용하는 방법이다.
L2 정규화 #
L2 정규화를 사용한 회귀 모형을 Ridged regression이라고 한다(그림 3).
<그림 3. Cost function in Ridge regression. 출처: http://daeson.tistory.com/184>
L2 정규화의 경우 cost 함수에서 ß(=θ)에 자승을 취한 값에 페널티를 준다(그림 3). 단점은 영향력이 작은 ß(<1)의 경우 그 값이 0에 가깝게 작아지고 큰 경우에는 자승만큼 커짐으로써 커질수록 정규화에 의해 그 영향이 더욱 커지게 된다. 이는 학습모델을 단순화하여 최적화가 덜 된 모델이 만들어질 수 있다.
마치며 #
정규화는 기계학습에서 과최적화를 줄이고 다양한 시험데이터를 줬을 때 범용적으로 사용될 수 있도록 해준다. 주어진 데이터의 특징을 고려하여 적절한 정규화 방법을 사용하도록 하자.