티스토리 뷰
선형 회귀의 경우 하이퍼 파라미터 최적화 못지않게, 데이터 분포를 정규화하는 것과 인코딩이 하는 방법이 매우 중요합니다. 선형 모델은 일반적으로 피처와 타깃값의 관계가 선형적이라고 가정하고 최적의 선형함수를 찾아내 결괏값을 예측합니다.
또한, 선형 회귀 모델은 피처값과 타깃값의 분포가 정규 분포인 것을 매우 선호합니다. 특히 타깃값이 치우진 왜곡(Skew) 형태의 분포를 가지는 경우 예측 성능에 부정적인 영향을 끼칠 가능성이 높습니다. 피처값 역시 타깃값보다는 덜하지만 왜곡된 분포를 가질 경우 예측 성능에 부정적인 영향을 끼칩니다.
따라서 선형 회귀를 적용하기 전에 먼저 데이터 스케일링/정규화 작업을 수행하는 것이 일반적입니다. 하지만 해당 작업을 수행했다고 해서 무조건 예측 성능이 향상되는 것은 아닙니다. 일반적으로 중요 피처들이나 타깃값의 분포가 심하게 왜곡된 경우 이러한 변환 작업을 수행합니다.
일반적으로 피처 데이터와 타깃 데이터에 스케일링/정규화 작업을 수행하는 방법이 다릅니다. 먼저 피처 데이터에 적용하는 변환 작업은 다음과 같습니다.
- StandardScaler를 이용한 표준화 또는 MinMaxScaler를 이용한 정규화
- 이미 스케일링을 수행한 데이터 세트에 다시 다항 특성을 적용. 보통 스케일링을 통해 예측 성능 향상이 없을 경우 수행
- 원래 값에 log 함수를 적용하여 보다 정규 분포에 가까운 형태로 값을 조정. 이를 로그 변환이라고 부르며, 실제 선형 회귀에서 가장 많이 사용되는 변환 방법
보통 표준화 또는 정규화로는 예측 성능의 큰 향상을 기대하기 어려우며, 피처가 많은 경우 다항 변환을 수행하면 기하급수적으로 많은 개수의 피처가 생성되므로 과적합 문제가 발생하기 쉽습니다. 그러므로 보통 선형 회귀에서는 로그 변환을 가장 많이 사용합니다. 또한 실제로 많은 사례에서 로그 변환의 예측 성능 향상이 검증되었습니다. 타깃값의 경우도, 일반적으로 로그 변환을 적용합니다.
보스톤 주택 가격 데이터 세트에 대해 표준 정규 분포 변환, 최댓값/최솟값 변환, 로그 변환을 차례로 적용한 후 RMSE로 각 경우별 예측 성능을 측정해봅시다.
데이터 전처리를 위한 메서드를 정의했습니다. method 인자로 변환 방법을 설정할 수 있으며, p_degree는 다항식 특성을 추가할 때 다항식 차수를 의미합니다. 차수는 최대 2로 설정하겠습니다. 또한 로그 변환의 경우 np.log()가 아니라, np.log1p()를 사용했습니다. 일반적인 log(x)를 적용하면 언더 플로우가 발생하기 쉬워서 log(1+x)를 적용하는데, 이를 구현한 것이 바로 np.log1p()입니다.
실험할 피처 변환 방법은 총 5가지입니다.
- 아무런 변환을 하지 않음
- 표준화
- 표준화 + 2차 다항 변환
- 정규화
- 정규화 + 2차 다항식 변환
- 로그 변환
결과를 해석해봅시다. 피처 데이터에 표준화 또는 정규화만 수행할 경우 성능 개선은 없습니다. 표준화를 수행한 뒤 2차 다항 변환을 했을 때 alpha = 100에서 4.634로 성능이 개성됐습니다. 반면 로그 변환을 수행한 경우 모든 alpha에 대해 좋은 성능 향상이 있음을 확인할 수 있습니다.
일반적으로 선형 회귀를 적용하려는 데이터 세트에 데이터 값의 분포가 심하게 왜곡되어 있을 경우 이처럼 로그 변환을 적용함으로써 좋은 결과를 기대할 수 있습니다.
'파이썬 머신러닝 완벽 가이드' 카테고리의 다른 글
파이썬 머신러닝 완벽 가이드 : 자전거 대여 수요 예측 회귀 실습 (1) | 2023.05.13 |
---|---|
파이썬 머신러닝 완벽 가이드 : 로지스틱 회귀와 회귀 트리 (0) | 2023.05.12 |
파이썬 머신러닝 완벽 가이드 : 규제 선형 모델 - 릿지, 라쏘, 엘라스팃넷 (0) | 2023.05.12 |
파이썬 머신러닝 완벽 가이드 : 다항 회귀와 과적합/과소적합 이해 (0) | 2023.05.11 |
파이썬 머신러닝 완벽 가이드 : 사이킷런 회귀 클래스를 이용한 보스턴 주택 가격 예측 (0) | 2023.05.11 |