1. 리지 회귀 (Ridge Regression)
리지 (Ridge) 도 회귀를 위한 선형 모델이므로 최소적합법에서 사용한 것과 같은 예측 함수를 사용합니다. 하지만 리지 회귀에서의 가중치 (w) 선택은 훈련 데이터를 잘 예측하기 위해서 뿐만 아니라 추가 제약 조건을 만족시키기 위한 목적도 있습니다. (* 앞서 말한 과소적합과 과대적합 사이를 세밀하게 조정할 수 있을듯)
가중치의 절댓값을 가능한 한 작게 만드는 것입니다. 다시 말해서 w의 모든 원소가 0에 가깝게 되길 원합니다. 직관적으로 생각하면 이는 모든 특성이 출력에 주는 영향을 최소한으로 만듭니다(* 기울기를 작게 만듭니다). 이런 제약을 규제(Regularization) 라고 합니다. 규제란 과대적합이 되지 않도록 모델을 강제로 제한한다는 의미입니다. 리지 회귀에서 사용하는 규제 방식을 L2규제 라고 합니다.
(* 이전 (MSE에 따른 선형 회귀) 에 나왔던 점수 (훈련 세트 점수 : 0.95, 테스트 세트 점수 : 0.61) 보다 더 일반화된 모습이다.)
결과를 보니 훈련 세트에서의 점수는 LinearRegression 보다는 낮지만 테스트 세트에 대한 점수는 더 높습니다. 기대한 대로입니다. 선형 회귀는 이 데이터셋에 과대적합되지만 Ridge 는 덜 자유로운 모델이기 때문에 과대적합이 적어집니다.
관심이 있는 것은 테스트 세트에 대한 성능이기 때문에 LinearRegression 보다 Ridge 모델을 선택해야 합니다.
Ridge 모델은 단순하게 (* 계수를 0에 가깝게) 해주고 훈련 세트에 대한 성능 차이를 절충할 수 있는 방법을 제공합니다. 사용자는 alpha 매개변수로 훈련 세트의 성능 대비 모델을 얼마나 단순화할지를 지정할 수 있습니다.
앞에서의 예제에서는 매개변수의 기본값인 alpha = 1.0 을 사용했습니다. 하지만 이 값이 최적이라고 생각할 이유는 없습니다. 최적의 alpha 값은 사용하는 데이터셋에 달렸습니다. alpha 값을 높이면 계수를 0에 가깝게 만들어서 훈련 세트의 성능은 나빠지지만 일반화에는 도움을 줄 수 있습니다.
(* alpha 값이 커지니 모델이 더 단순해진 모습이다)
아주 작은 alpha 값은 계수를 거의 제한하지 않으므로 LinearRegression 으로 만든 모델과 거의 같아집니다(* alpha = 0.00001 로 지정하면 LinearRegression 에서 얻은 점수와 같은 점수를 얻을 수 있습니다.)
이 코드에서 alpha = 0.1 이 꽤 좋은 성능을 낸 것 같습니다. 테스트 세트에 대한 성능이 높아질때까지 alpha 값을 줄일 수 있을 것입니다.
또한 alpha 값에 따라 모델의 coef_ 속성이 어떻게 달라지는지를 조사해보면 alpha 매개변수가 모델을 어떻게 변경시키는지 더 잘 이해할 수 있습니다. 높은 alpha 값은 제양이 더 많은 모델이므로 작은 alpha 값일 때보다 coef_ 의 절댓값 크기가 작을 것이라고 예상할 수 있습니다.
이 그림에서 x축은 coef_ 의 원소를 위치대로 나열한 것입니다. 즉 x=0은 첫 번째 특성과 연관된 계수입니다. 이런식으로 x=100 까지 계속됩니다. y축은 각 계수의 수치를 나타냅니다. alpha=10 일 때 대부분의 계수는 -3과 3 사이에 위치합니다. 하지만 alpha=1 일 때 Ridge 모델의 계수는 보다 좀 커졌습니다.
규제의 효과를 이해하는 또 다른 방법은 alpha값을 고정하고 훈련 데이터의 크기를 변화시켜 보는 것입니다.(* 데이터셋의 크기에 따른 성능 변화를 나타낸 그래프를 학습곡선 learning curve 라고 합니다.)
예상대로 모든 데이터셋에 대해 리지와 선형 회귀 모두 훈련 세트의 점수가 테스트 세트의 점수보다 높습니다. 리지에는 규제가 적용되므로 리지의 훈련 데이터 점수가 전체적으로 선형 회귀의 훈련 데이터보다 낮습니다. 그러나 테스트 데이터에서는 리지의 점수가 더 높으며 특별히 작은 데이터셋에서는 더 그렇습니다. 데이터셋의 크기가 400 미만에서는 선형 회귀는 어떤 것도 학습하지 못하고 있습니다. 두 모델의 성능은 데이터가 많아질수록 좋아지고 마지막에는 선형 회귀가 리지 회귀를 따라잡습니다.
여기서 배울 점은 데이터를 충분히 주면 규제 항은 덜 중요해져서 리지 회귀와 선형 회귀의 성능이 같아질 것이라는 점입니다. 또 흥미로운 점은 선형 회귀의 훈련 데이터 성능이 감소한다는 것입니다. 이는 데이터가 많아질수록 모델이 데이터를 기억하거나 과대적합하기 어렵기 때문입니다.
2. 라소 (Lasso)
선형회귀에 규제를 적용하는 데에 Ridge 의 대안으로 Lasso 가 있습니다. 리지 회귀에서와 같이 라소도 계수를 0에 가깝게 만들려고 합니다. 하지만 방식이 조금 다르며 이를 L1 규제라고 합니다. L1 규제의 결과로 라소를 사용할 때 어떤 계수는 정말 0이 됩니다. 이 말은 모델에서 완전히 제외되는 특성이 생긴다는 뜻 입니다. 어떻게 보면 특성 선택 (* Feature Selection) 이 자동으로 이뤄진다고 볼 수 있습니다. 일부 계수를 0으로 만들면 모델을 이해하기 쉬워지고 이 모델의 가장 중요한 특성이 뭔지 드러내줍니다.
'[Deep daiv.] > 머신러닝' 카테고리의 다른 글
머신러닝 공부 4.1 - 규제 Regularization (0) | 2024.03.30 |
---|---|
머신러닝 공부 - 4 Lasso (.contd) and LinearClassifier (0) | 2024.03.25 |
머신러닝 공부 - 2 KNN Regression and Linear Model (0) | 2024.03.22 |
머신러닝 공부 - 1 머신러닝에 대한 기본적인 이해와 KNN 알고리즘 (0) | 2024.03.19 |