본문 바로가기

데이터 사이언스 이야기

[머신러닝] L1 norm, L2 norm, 과적합 방지

norm(노름)

이란, 수학용어로, 실수 혹은 복소수로 이루어진 벡터의 크기를 계산하는 함수를 말한다.
L1 norm과 L2 norm이 머신러닝에서 많이 사용되는데,

L1 norm

은, 절대값을 사용하고,

L2 norm

은, 제곱값을 사용한다.
둘의 특징들을 아래 표에 정리한다.

  L1 norm L2 norm
벡터 간 거리를 구하는 방법 절대값 제곱값
쓰이는 곳 L1 regularization
Lasso회귀
L2 regularization
Ridge회귀
knn
kmeans
특징(정규화에 쓰였을 때) 가중치가 작은 경우 0으로 만들어 버리므로, 변수 선별이 가능함. 모든 특징들이 다 조금씩은 유용하다고 보는 경우에 쓰면 좋음.

과적합(overfitting)

예측모델이 학습데이터에 대해서는 잘 예측하지만,
학습한 적이 없는 데이터에 대해서는 잘 예측하지 못하는 현상을 과적합이라고 한다.
데이터의 수는 적은데, 특징량(feature)의 수는 많은 경우 과적합되기 쉽다.

과적합 방지방법

데이터 수가 적고 특징량이 많아서 과적합이 발생하고 있는 경우, 2가지 방법을 통해 과적합을 방지할 수 있다.
1. 특징량을 줄인다. 직접 특징량을 하나 하나 보고, 쓸만한 특징량인지 아닌지를 판별하거나, 특징량 선택 알고리즘(feature selection)을 이용한다.
쓸만한 정보의 일부도 버려질 가능성이 있지만, 학습데이터셋이 작은 경우 유용할 수 있다.
2. 정규화를 이용한다. 모든 특징들을 그대로 두고, 다만 각각에 대한 가중치를 줄이는 것이다. 각각의 특징들이 다 도움은 되지만, 각각의 영향력은 작을 때에 유용한다.

과적합 방지방법으로서의 정규화

선형회귀모델의 과적합을 방지하기 위해 정규화할 때에 L1정규화, L2정규화를 사용하는데,
예측 오차의 합만을 최소화하는 것이 아니라,
각각 L1 norm, L2 norm, 즉 가중치의 절대값의 합, 제곱의 합을 최소화시키는 제약조건을 사용한다.
특징량들에 대한 가중치를 작게 하는 편이 가설이 단순해진다는 발상에 의한 방법이다.

최소화시키는 방법으로 경사하강법을 사용하는데, L2정규화는 가중치가 0에 가까워지면 가까워질수록 업데이트가 작아지지만,
L1 정규화는 가중치가 0이 될 때까지 기울기가 상수이므로, 특정 변수들의 가중치는 0이 되어버린다.
즉, L1정규화는 특정 변수의 가중치를 먼저 0으로 만들어버리고,
L2정규화는 전체 변수의 가중치를 같이 줄여나가는 특징이 있다.

다만, 정규화를 얼마나 할 것인가, 즉 특징량의 가중치를 작게 하는 것과 예측 오차의 합을 작게 하는 것 중 어느 쪽에 치중할 것인가에 따라서 학습이 잘 되거나, 아니면 잘 안 되고 underfitting이 되거나 overfitting될 수 있다. 이 계수를 람다라고 하는데, 데이터에 따라서 계수를 정해줄 필요가 있다.

관련 library(Python)

norm계산: numpy.linalg.norm
Lasso, Ridge, Elastic 회귀: sklearn.linear_model

참고자료
Andrew Ng, Machine Learning(Coursera)
https://www.coursera.org/learn/machine-learning

기계 학습

스탠퍼드 대학교에서 제공합니다. Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine ... 무료로 등록하십시오.

www.coursera.org