대표적인 선형회귀 모델은 다음과 같다.
•
일반 선형 회귀 : 규제를 적용하지 않은 모델
from sklearn.linear_model import LinearRegression
Python
복사
•
릿지 : 선형 회귀에 l2 규제를 추가한 모델 . 상대적으로 큰 회귀 계수 값의 예측 영향도를 감소시키기 위해서 회귀 계수 값을 더 작게 만드는 모델이다.
•
라쏘 : 선형 회귀에 l1 규제를 적용한 모델. 상대적으로 작은 회귀 계수 값을 0으로 만들어서 아예 해당 피처가 선택되지 않도록 하는 모델이다. → 피처 선택 기능으로도 사용된다.
•
엘라스틱넷 : l2, l1 규제를 결합한 모델. 주로 피처가 많은 데이터 세트에서 사용된다. l1규제로 피처의 개수를 줄이면서 l2규제로 계수 값의 크기를 조정하는 방식이다.
선형 회귀의 목적은 결국 비용함수(손실함수) 값이 더 이상 감소하지 않는 최소의 오류 값을 갖는 회귀계수를 갖는 모델을 찾는 것이다.
사이킷런 linear_models 모듈
사이킷런의 linear_models 모듈은 매우 다양한 종류의 선형 기반 회귀를 클래스로 구현해 제공하고 있다.
회귀 평가 지표
회귀의 성능을 평가하는 지표는 다음과 같다.
•
MAE : 실제값과 예측값의 차이를 절댓값으로 변환해 평균한 것
•
MSE : 실제값과 예측값의 차이를 제곱해 평균한 것
•
RMSE : MSE가 실제 오류보다 값이 커지는 특성이 있는 것을 방지하여 MSE에 루트를 씌운 것
•
MSLE(Mean Squared Log Error) : MSE에 로그를 적용해준 지표.
◦
예측값이나 실제값에 음수가 있으면 안됨
•
RMSLE(Root Mean Squared Log Error) : RMSE에 로그를 적용해준 지표
◦
예측값이나 실제값에 음수가 있으면 적용 안됨
◦
Over Estimation 보다 Under Estimation일 때 더 큰 패널티를 부여한다.
▪
예를 들어, 배달 음식 예정 시간을 30분이라고 했는데, 실제로 40분이 걸렸다면 Under Estimate 가 된 것이고 이 부분에 큰 Penalty 를 줄 수 있다.
•
R^2 : 분산 기반 평가 지표. 실제값의 분산 대비 예측값의 분산 비율을 지표로 하고, 1에 가까울수록 예측 정확도가 높은 것. (예측값 분산 / 실제값 분산)
◦
해석 : 평균 모델에 비해 R^2 배 만큼 더 정확하게 예측합니다.
◦
R^2 = SSR / SST= 1 - (SSE / SST)
평가지표별 특징
RMSE vs RMSLE
사이킷런은 RMSE를 제공하지 않는다. MSE에 제곱근을 씌워서 직접 만들어야 한다.
평가 방법 | 사이킷런 평가 지표 | Scoring 함수 적용 값 |
MAE | metrics.mean_absolute_error | ‘neg_mean_absolute_error’ |
MSE | metrics.mean_squared_error | ‘neg_mean_squared_error’ |
R^2 | metrics.r2_score | ‘r2’ |
Scoring 함수의 매커니즘은 score값이 클수록 좋은 평가 결과로 평가한다. 하지만, 회귀분석의 경우에는 평가 지표값이 커질수록 나쁜 것이기 때문에 이 부분을 고려해서 negative를 의미하는 ‘neg_’ 를 붙이는 것이다.
→ 따라서 scoring 함수 내에서의 mae나 mse평가 지표값은 -1을 곱한 것이라고 생각하면 된다. 따라서 실제 mse나 mae를 확인하고 싶다면 다시 -1을 곱해야 한다.