Regulation

규제(Regulation)
규제는 부가 정보를 손실에 더해 과대적합 문제를 방지하는 한 방법이다.
복잡도에 대한 패널티(penalty)를 유도하여 모델 파라미터의 값을 감소시킨다.
릿지 회귀(Ridge Regression), 라쏘(Least Absolute Shrinkage and Selection Operator, LASSO), 엘라스틱 넷(Elastic Net)
등이 가장 많이 사용된다.
릿지 회귀(Ridge Regression)
릿지 회귀는 단순히 최소 제곱 비용 함수에 가중치의 제곱함을 추가한 L2 규제 모델이다.
하이퍼 파라미터 lambda를 증가시키면 규제 강도가 증가되고, 모델의 가중치 값이 감소한다.
(절편 w0는 규제하지 않음)

회귀 계수가 0이 될 수가 없다.
라쏘(Least Absolute and Selection Operator, LASSO)
라쏘 규제를 통해 희소한 모델을 만들 수 있다.
규제 강도에 따라서 어떤 가중치는 0이 될 수 있다. 따라서 라쏘를 지도 학습의 특성 선택 기법으로 사용할 수 있다.
라쏘의 L1 패널티는 모델 가중치의 절댓값 합으로 정의한다.

하지만 라쏘는 m>n인 경우(m은 특성 개수, n은 훈련 샘플의 개수)인 경우 최대 n개의 특성을 선택하는 것이 한계이다.

Lasso Regression과 Ridge Regression에서 회귀 계수 beta(=w)를 추정할 때, 최적화 식으로 변경하여 해를 구할 수 있다.
위 식을 기하학적으로 보면 아래와 같다.

빨간색 등고선이 적당한 w1, w2에 대하여 같은 RSS값을 가지는 위치이며, 색칠된 공간은 제약 조건을 만족하는 공간이다.
따라서 Ridge Regression에서는 w1=0을 만족하는 것이 불가능하지만,
Lasso Regression에서는 w1=0을 만족 시킬 수 있다.
엘라스틱 넷(ElasticNet)
희소한 모델을 만들기 위한 L1 페널티와 m>n 일 때, n보다 많은 특성을 선택할 수 있는 L2를 모두 가지는,
릿지 회귀와 라쏘의 절충안이다.
Ridge & Lasso & ElasticNet
from sklearn.linear_model import Ridge
ridge=Ridge(alpha=1.0)
from sklearn.linear_model import Lasso
lasso=Lasso(alpha=1.0)
from sklearn.linear_model import ElasticNet
elanet=ElasticNet(alpha=1.0, l1_ratio=0.5)
ElasticNet의 l1_ratio를 통해서 l1와 l2 비율을 조정할 수 있다.
ex) l1_ratio=1: same as Lasso