ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.