본문 바로가기

Machine Learning/머신러닝 완벽가이드 for Python

ch.5.4 사이킷런 LinearRegression 클래스 (보스턴주택가격예측)

사이킷런 LinearRegression 클래스

LnearRegression 클래스는 예측값과 실제 값의 RSS(Residual Sum of Squares)를 최소화해 OLS(Ordinary Least Squares) 추정 방식으로 구현한 클래스입니다.
LinearRegression 클래스는 fit() 메서드로 X, y 배 열 을 입력받으면 회귀 계수(Coefficients)인 W를 coef_ 속성에 저장합니다.

 

 

선형 회귀의 다중 공선성 문제

일반적으로 선형 회귀는 입력 피처의 독립성에 많은 영향을 받습니다. 피처간의 상관관계가 매우 높은 경우 분산이 매우커져서 오류에 매우 민감해집니다. 이러한현상을 다중공선성 (muIti-colIinearity) 문제 라고 합니다. 일반적 으로 상관관계가 높은 피처가 많은 경우 독립적인 중요한 피처만 남기고 제거하거나 규제를 적용합니다.

 

회귀 평가지표

 

 

사이킷런 회귀 평가 API

 

  • 사이킷런은 아쉽게도 RMSE를 제공하지 않습니다. RMSE를 구하기 위해서는 MSE 에 제곱근을 씌워서 계산하는 함수를 직접 만들어야 합니다.
  • 다음은 각 평가 방법에 대한 사이킷런의 API 및 cross_val_score 나 GridSeaerchCV 에서 평가 시 사용되는 scoring 파라미터의 적용 값입니다.

cross_val_score : MSE를 리스트 형태로 반환해 줌

 

사이킷런 Scoring 함수에 회귀 평가 적용 시 유의 사항

 

  • MAE의 사이킷런 scoring 파라미터값은 'neg_mean_absolute_error' 입니다 이는 Negative(음수) 값을 가진다는 의미인데, MAE는 절댓값의 합이기 때문에 음수가 될 수 없습니다.
  • Scoring 함수에 'neg_mean_absolute_error를 적용해 음수값을 반환하는 이유는 사이킷런의 Scoring 함수가 score 값이 클수록 좋은 평가결과로 자동평가하기 때문입니다. 따라서 -1을 원래의 평가지표 값에 곱해서 음수(Negative)를 만들어 작은 오류 값이 더 큰숫자로 인식하게 합니다. 예를 들어 10 > 1 이지만 음수를 곱하면 -1 > -10 이 됩니다.
  • metrics.mean_absolute_error( )와 같은 사이킷런 평가 지표 API는 정상적으로 양수의 값을 반환합니다. 하지만 Scoring 함수의 scoring 파라미터 값 'neg_mean_absolute_error’ 가 의미하는 것은 -1* metrics.mean_absolute_error()이니 주의가 필요합니다.