
앞서 본 Degree=15의 다항회귀 처럼 지나치게 모든 데이터에 적합한 회귀식을 만들기 위해서 다항식이 복잡해지고 회귀 계수가 매우 크게 설정이 되면서 과대적합이 되었고, 테스트 데이터 세트에 대해 좋지 않는 성능을 보였다.
따라서 회귀 모델은 적절히 데이터에 적합하면서도 회귀 계수가 기하급수적으로 커지는 것을 제어할 수 있어야 한다.
즉 최적의 모델이 되기 위한 손실 함수의 목표는 학습 데이터에 대한 잔차 오류도 최소화 되어야 하지만, 회귀 계수의
크기 제어도 목적이 되어야 한다.
𝛼가 0 또는 매우 작은 값이라면 손실 함수의 식은 기존과 동일한 𝐿𝑜𝑠𝑠(𝑥, 𝑦) = arg min_𝑤 𝑅𝑆𝑆(𝑊) + 0이 될 것이다.
반면에 𝛼가 무한대 또는 매우 큰 값이라면 손실 함수 식은 𝑅𝑆𝑆(𝑊) 에 비해 𝛼∑𝑤**2 또는 𝛼∑|𝑤|의 값이 너무 커지게 되므로 𝑊를 작게 만들어야 손실이 최소화되는 비용 함수 목표를 달성할 수 있게 된다.
즉 𝛼값을 크게 하면 비용 함수는 회귀 계수 𝑊의 값을 작게 해 과적합을 개선할 수 있으며, 𝛼값을 작게 하면 회귀 계수 𝑊의 값이 커져도 어느 정도 상쇄가 가능하므로 학습 데이터 적합을 더 개선할 수 있게 된다.
𝛼 = 0인 경우에는 𝑊가 커도 𝛼∑𝑤**2 또는 𝛼∑|𝑤|이 0이 되어 비용 함수는 arg min_𝑤 𝑅𝑆𝑆(𝑊)
𝛼 = ∞인 경우에는 𝛼∑𝑤**2 또는 𝛼∑|𝑤| 역시 무한대가 되므로 비용 함수는 𝑊를 0에 가깝게 최소화 해야 한다.
이처럼 손실 함수에 𝛼값으로 패널티를 부여해 회귀 계수 값의 크기를 감소시켜 과적합을 개선하는 방식을 규제(Regularization)라고 한다.
규제는 크게 L2 방식과 L1 방식으로 구분된다.
L2 방식 𝐿𝑜𝑠𝑠(𝑥, 𝑦) = arg min_𝑤∑𝑅𝑆𝑆(𝑊) + 𝛼∑𝑤**2
L1 방식 𝐿𝑜𝑠𝑠(𝑥, 𝑦) = arg min_𝑤∑𝑅𝑆𝑆(𝑊) + 𝛼∑|𝑤|
릿지(Ridge) 회귀는 L2 방식을 적용한 회귀이며, L2 방식을 적용하면 회귀 계수 값을 무한히 0에 가깝게 만들지만 0이 되진 않는다.
라쏘(Lasso) 회귀는 L1 방식을 적용한 회귀이며, L1 방식을 적용하면 영향력이 크지 않은 회귀 계수 값을 0으로 반환한다.
엘라스틱 넥(ElasticNet)은 L2, L1 방식을 결합한 모델로서, 주로 Feature가 많은 데이터 세트에 적용된다.
L1 규제로 Feature의 개수를 줄임과 동시에 L2 규제로 계수 값의 크기를 조정한다.
릿지 회귀는 𝛼값을 이용하여 회귀 계수의 크기를 조절한다.
𝛼값이 크면 회귀 계수의 값이 작아진다.
𝛼값이 작아지면 회귀 계수의 값이 커진다
L2 규제가 회귀 계수의 크기를 감소만 시키는 데 반해, L1 규제는 불필요한 회귀 계수를 급격하게 감소시켜 0으로
만들어 버리고 제거하는 역할이 있다.
즉 L1 규제는 적절한 Feature만 회귀에 포함시키는 특성 선택(Feature Selection)의 특징도 가지고 있다.
ElasticNet 클래스의 주요 하이퍼 파라미터는 alpha와 l1_ratio이다.
alpha
alpha 파라미터는 L1, L2 규제에 사용될 alpha의 합이다.
∑𝑅𝑆𝑆(𝑊) + 𝛼2∑𝑤**2 + 𝛼1∑|𝑤| 에서 𝛼 = 𝛼2 + 𝛼1이 된다.
l1_ratio
l1_ratio는 L1 규제에 사용할 alpha의 비율로서 𝛼1/(𝑎1 + 𝑎2)이다.
l1_ratio가 0이면 𝛼1 = 0이 되면서 L2 규제와 동일해 진다.
l1_ratio가 1이면 𝛼2 = 0이 되면서 L1 규제와 동일해 진다.
0 < l1_ratio < 1 이면 L1과 L2 규제를 적절히 잘 적용한다.
책
참조 자료
해당 챕터의 실습 및 예제 코드는 아래 링크의 Machine Learning 참조 해주시면 됩니다.