다항선형 회귀의 Overfitting문제
5.5절 예제에서 보듯이 다항회귀에서 차수(degree)가 높아질수록(e.g. degree = 15)
다항식이 복잡해지고 회귀계수가 매우 크게 설정되면서 overfitting이된다.
해결방법 -> 규제

규제 선형 회귀 개요
앞의 예제에서 Degree=15 의 다항회귀는 지나지게 모든 데이터에 적합한 회귀식을 만들기 위해서 다항식이 복잡해지고
회귀 계수가 매우 크게 설정이 되면서 과대적합이 되고 평가 데이터 세트에 대해서 형편없는 예측 성능을 보였습니다.
따라서 회귀 모델은 적절히 데이터에 적합하면서도 회귀 계수가 기하급수적으로 커지는 것을 제어할 수 있어야 합니다.

규제 선형 모델에서 alpha 의 역할
alpha가 0(또는 매우 작은 값)이라면 비용 함수 식은 기존과 동일한 Min(RSS(W) + 0)이 될 것입니다.
반면에 alpha 가 무한대(또는 매우 큰 값)라면 비용 함수 식은 RSS(W)에 비해 alpha * IIW|| 값이너무 커지게 되므로 W 값을 0(또는 매우 작게 )으 로 만들어야 Cost 가 최소화되는 비용 함수 목표를 달성할 수 있습니다.
즉 alpha 값을 크게 하면 비용 함수는 회귀 계수 W의 값을 작게 해 과적합을 개선할 수 있으며 alpha 값을 작게 하면 회귀 계수 W의 값이 커져도 어느 정도 상쇄가 가능하므로 학습 데이터 적합을 더 개선할 수 있습니다.

규제 선형 회귀의 유형
- 이처럼 비용 함수에 alpha 값으로 페널티를 부여해 회귀 계수 값의 크기를 감소시켜 과적합을 개선하는 방식을 규제
(Regularization) 라고 부릅니다. - 규제는 크게 L2 방식과 L1 방식으로 구분됩니다. L2 규제는 위에서 설명한 바 처럼 alpha * IIWII 와 같이 W의 제곱에 대해 페널티를 부여하는 방식을 말합니다. L2 규제를 적용한 회귀를 릿지 (Ridge) 회귀라고합니다.
- 라쏘 (Lasso) 회귀는 L1규제믈 적용한 회귀입니다. L1 규제는 alpha* IIWII 와 같이 W 의 절댓값에 대해 페널티등 부여합니다. L1 규제를 적용하면 영향력이 크지 않은 회귀 계수값을 0으로 변환합니다.
- ElasticNet: L2, L1 규제를 함께 결합한 모델입니다. 주로 피처가 많은 데이터 세트에서 적용되며, L1 규제로 피처의 개수를 줄임과 동시에 L2 규제로 계수값의 크기를 조정합니다.
릿지 (Ridge) 회귀
⦁ L2 규제를 적용한 선형회귀
- L2 규제는 회귀계수를 감소시킨다. (0은안된다)


라쏘 (Lasso) 회귀
W의 절댓값에 페널티를 부여하는 L1 규제를 선형 회귀에 적용한 것이 라쏘 (Lasso) 회귀입니다. 즉 L1 규제는 alpha* IIWI1 를 의미하며, 라쏘 회귀 비용함수의 목표는 RSS(W) + alpha* IIWI1 식을 죄소화 하는 W를 찾는 것입니다 L2 규제가 회귀 계수의 크기를 감소시키는 데 반해, L1 규제는 불필요한 회귀 계수를 급격하게 감소시켜 0으로 만들고 제거합니다. 이러한 측면에서 L1 규제는 적절한 피처만 회귀에 포함시키는 피처 셀렉션의 특성을 가지고 있습니다.


엘라스틱넷 (Elastic Net) 회귀
- 엘라스틱넷 (Elastic Net) 회귀는 L2 규제와 L1 규제를 결합한 회귀입니다. 따라서 엘라스틱넷 회귀 비용함수의 목표는
RSS(W) + alpha2 * IIWII2 + alpha1 * IIWI1 식을 최소화 하는 w를 잦는 것입니다. - 엘라스틱넷은 라쏘회귀가 서로 상관관계가 높은 피처들의 경우에 이들 중에서 중요 피처만을 셀렉션하고 다른피처들은 모두 회귀 계수를 0으로 만드는 성향이 강합니다. 특히 이러한 성향으로 인해 alpha 값에 따라 회귀 계수의 값이 급격히 변동 할수도 있는데, 엘라스틱넷 회귀는 이를 완화하기 위해 L2 규제를 라쏘회귀에 추가한 것 입니다.
사이킷런 엘라스틱넷 회귀
사이킷런은 ElasticNet클래스를 통해서 엘라스틱넷 회귀를 구현합니다.
ElasticNet 클래스의 주요 생성 파라미터는 alpha 와 l1_ratio 입니다.
ElasticNet 클래스의 alpha는 Ridge와 Lasso클래스의 alpha 값과는 다릅니다.

'Machine Learning > 머신러닝 완벽가이드 for Python' 카테고리의 다른 글
ch5.6_1 선형 회귀 모델을 위한 피처 엔지니어링 (0) | 2022.10.13 |
---|---|
ch5.5_5.6 Polynomial 회귀와 overfittng, 규제 선형 모델 (실습) (0) | 2022.10.13 |
ch.5.5 다항회귀 (Polynomial Regression) (0) | 2022.10.13 |
ch5.3_Gradient_Descent, ch5.4_LinearModel (1) | 2022.10.12 |
ch.5.4 사이킷런 LinearRegression 클래스 (보스턴주택가격예측) (0) | 2022.10.12 |