Search

선형회귀

대표적인 선형회귀 모델은 다음과 같다.
일반 선형 회귀 : 규제를 적용하지 않은 모델
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을 곱해야 한다.