-
sklearn 회귀모델 r2-score 측정ML 2023. 1. 8. 10:03
- 쓸때마다 헷갈리는 모델 성능측정
결정계수(r2)
- 회귀분석의 성능 평가 중 하나로, 추정한 선형 모형이 주어진 자료에 적합한 정도를 재는 척도
- 독립변수가 종속변수를 얼마나 잘 설명하는지를 나타냄
- 0~1 사이의 값을 가짐
- SST : (관측값 - 평균)의 제곱합
- SSR : 회귀제곱합, (예측값 - 평균)의 제곱합
-> 갑자기 평균이 나오는 이유: 회귀선이 존재하지 않을 경우 자료를 예측할 때 보통 평균값을 사용하기 때문
- SSE : 잔차제곱합, (관측값 - 예측값)의 제곱합
(SSE와 SSR을 바꿔부르는 경우도 있음)
Scikit-learn 회귀모델에서의 결정계수
- 모델의 훈련은 훈련 데이터셋을 사용하지만, 성능 측정은 테스트데이터셋을 사용하여 얼마나 잘 예측할 것인가를 본다.
- 공식문서는 전체 데이터셋에 대해 훈련, R2측정도 전체 데이터셋에 대해 계산한다.
- 그러나 실제 분석 시 테스트/훈련데이터셋으로 나누어서 성능을 측정하는 경우, 회귀모델의 다른 성능지표로 RMSE, MAE, MAPE는 함수명(테스트y, 예측y) 로 표기하지만,
- R2를 구할 때는 파라미터가 다르게 들어간다 : model.score(테스트x, 테스트y)
# 전체 데이터셋이 X, y로 나눠진 상태 # scaling from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() scaler.fit(X) X_scaled = scaler.transform(X) # train:val = 7:3로 데이터셋 분리 from sklearn.model_selection import train_test_split x_train, x_val, y_train, y_val = train_test_split(X_scaled, y, test_size=.2 , random_state = 2022) # 모델 학습 from sklearn.ensemble import RandomForestRegressor model = RandomForestRegressor(max_depth=10, random_state=0) model.fit(x_train, y_train) # 예측 및 평가 y_val_pred = model.predict(x_val) from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error print("MSE :",mean_squared_error(y_val , y_val_pred)) print("RMSE:",mean_squared_error(y_val, y_val_pred, squared=False)) print("MAE:",mean_absolute_error(y_val, y_val_pred)) print("MAPE:",mean_absolute_percentage_error(y_val, y_val_pred)) print("R2:",model.score(x_val, y_val))
'ML' 카테고리의 다른 글
windows 가상머신(Ubuntu) CUDA 설정방법 (0) 2023.06.09 statsmodels-js - MLR 구현 (0) 2023.01.08