[머신러닝] 9주차.선형 회귀
(사이킷런 LinearRegression)
잔차제곱합을 최소화하는 OLS 추정 방식으로 구현된 클래스. 규제 없음.
fit() 메서드로 X,y 배열 입력 받으면 회귀계수를 coef_ 속성에 저장.
스케일의 영향을 받기 때문에 스케일링 해주는게 좋지만 입력 파라미터를 통해 하는 것보단 따로 전처리 과정에서 스케일링 하는 것이 좋다.
(선형 회귀의 다중 공선성 문제)
선형회귀는 입력 피처의 독립성에 많은 영향을 받음. (독립이라는 가정, 그러나 실제로 독립 어렵)
피처 간의 상관관계가 매우 높으면 분산이 매우 커져서 오류에 민감해진다.
우선 적용 후 성능을 평가해보고 규제 선형, 회귀트리 등의 방법을 사용해보면 된다.
(회귀 평가 지표)
MAE : 실제 값과 예측 값의 차이를 절댓값으로 변환해 평균.
MSE : 실제 값과 예측 값의 차이를 제곱해 평균.
MSLE : MSE에 로그 적용. 전체 오류값이 커지는 것을 막아줌.
RMSE : MSE에 루트.
RMSLE : 루트해도 클 수 있으니 로그.
R^2: 1에 가까울수록 좋다.
(MAE와 RMSE의 비교)
MAE에 비해 RMSE는 큰 오류값에 상대적인 페널티를 더 부여한다.
Ex) 10,20,10,10,100과 같은 경우
MAE = (10 + 20 + 10 + 10 + 100)/5 = 30
RMSE = 루트(100 + 400 + 100 + 100 + 100 + 10000)/5 = 46.26
(사이킷런 회귀 평가 API)
RMSE -> squared 파라미터 False로 설정. 헷갈림!
np.sqrt(MSE) -> RMSE
(scoring 함수에 회귀 평가 지표 적용 시 유의사항)
파라미터 앞에 neg 붙어있음. 이는 Negative 값을 가진다는 의미.
사이킷런 scoring 함수가 score값이 클수록 좋은 평가 결과로 자동 평가.
따라서 작은 오류값이 더 큰 숫자로 인식하게 하는 것임.