매일공부

[sklearn] 모델 정확도 평가; 오차측정 지표 본문

IT/ML

[sklearn] 모델 정확도 평가; 오차측정 지표

aram 2022. 11. 3. 17:26

 

* 데이터 과학 모형
>> 정답을 얻을 수는 없지만 유용한 해답을 얻을 수 있음
>> 정답이 아닌 해답이기에 오차(error) 존재

 


오차측정 지표

회귀 분석은 실제 값과 예측값의 차이를 기반으로  분석 결과를 평가함

  • 실제 값과 예측값의 차이 : 오차 , 잔차
  • 제 값과 예측값의 차이의 제곱합 : SSE(sum of squared error) 오차 제곱합
  • RSS(Residual Sum of Square) 오차 제곱 합
    : 오류 값의 제곱을 구해서 더하는 방식, 미분 등의 계산 편리
    : Error^2 = RSS
  • MAE (Mean absolute error) 평균 절대 오차
    : from sklearn.metrics import mean_absolute_error,  neg_mean_absolute_error
    : 실제 값과 예측값의 차이를 절대값으로 변환해 평균한 것 
    : 지표 자체가 직관적이며 예측변수와 단위 같음
    : 스케일 의존적
  •  MSE(mean square error) 평균제곱오차
    : from sklearn.metrics import mean_squared_error,  neg_mean_squared_error
    : 실제 값과 예측값의 차이를 제곱해서 평균한 것
    : 지표 자체가 직관적
    : 예측 변수와 단위가 다름
    : 이상치에 민감
    : 스케일 의존적
    : 큰 값에 대해 벌점이 크게 매겨짐
  • RMSE (root mean square error) 평균 제곱근 오차
    : np.sqrt(sklearn.metrics.mean_squared_error(origin, pred)))
    : MSE에 루트를 씌운 평가지표
    : 지표 자체가 직관적이며 예측변수와 단위가 같음
    : 스케일 의존적
    : 이상치에 민감
    : 잔차를 제곱해서 생기는 값의 왜곡이 MSE에 비해 좀 덜함
  • MAPE (Mean Absolute Percentage Error)
    : MAE를 비율(%)로 표현한 것
    : 지표 자체가 직관적
    : MAE, MSE, RMSE에 비해 비교에 용이|
    : 비율로 해석이 의미있는 값에만 적용가능
  • MPE (Mean Percentage Error)
    : MAPE에서 절댓값을 제외한 지표
    : MPE > 0 underperformance (underestimates)
    : MPE < 0 overperformance (overestimates) 
    : 지표 자체가 직관적이지 않으며 예측변수와 단위가 다름
  • MSLE (Mean Squared Log Error)
    : from sklearn.metrics import mean_squared_log_error
    : MSE에 로그를 적용한 평가지표
  • RMSLE(root mean square Log error)
    : np.sqrt(sklearn.metrics.mean_squared_log_error(origin, pred)))
    : MSLE에 루트를 씌운 평가지표
    : 이상치에 강건
    : 실제값과 예측값에 로그를 적용한것이므로 상대적인 Error를 측정함
    ex) 예측값 =100, 실제값=90인 경우 RMSE=10 , RMSLE=0.1053
        예측값 =10000, 실제값=9000으로 절대적 크기가 변경된 경우  RMSE=1000 , RMSLE=0.1053

    : over estimation보다 under estimation에 더 큰 페널티를 부여함 
    ex)  예측값 =600, 실제값=1000인 경우,  MSE=400 , RMSLE=0.510
          예측값 =1400, 실제값=1000인 경우,  MSE=400 , RMSLE=0.33

MAE, MSE, RMSE, MSLE, RMSLE는 실제값과 예측값의 차이를 의미하므로 작을수록 예측 성능이 좋음을 의미함

 

>> 오차 파이썬 함수 : https://mizykk.tistory.com/102

>> 오차 그래프 : https://satchellhong.tistory.com/37

 


분산(Variance) 오차

- 학습용 데이터를 잘 예측하도록 만들어진 모형이 평가용 데이터를 예측하면 발생한 데이터 간의 차이로 발생하는 오차
- 과적합 발생

R² (R Sqaure; 결정계수)
: 예측값 분산/실제값의 분산
: from sklearn.metrics import r2_score, r2
: X가 Y를 얼마나 잘 설명/예측하는가를 알려주는 통계량
: 분산을 기반으로 예측성능을 평가
: 1에 가까울수록 예측 정확도가 높음
: 상대적으로 얼마나 성능이 나오는지를 측정한 지표
: Goodness of Fit = X로 설명할 수 있는 Y 변화량의 크기를 나타내며 0에서 1사의 값을 가짐 
  (1이면 차이를 100% 설명한다는 의미)

출처 : https://www.datasciencecentral.com/r-squared-in-one-picture/

>> 값을 정확히 예측하기 위해선 R 2 값이 중요하지만, 경향성 정보가 중요한 경우 R 2 가 낮다고 꼭 나쁜 모양은 아님

SSE = (residuals**2).sum() #잔차 제곱 합 
SST = ( (df['Price'] - df['Price'].mean())**2).sum() 
R_squared = 1- (SSE/SST) #결정계수 - 예측 능력 평가

 

# 선형회귀 (Linear Regression) 분석에서 X가 Y를 얼마나 잘 설명/예측하는가를 알려주는 통계량(평가지표)? 

R2 (R-SQUARED; 결정계수) = 1-SSE/SST = 예측값의 분산/실제값의 분산

 

편향 오차

- 모형이 너무 단순해서 예측을 제대로 못하는 경우 발생하는 오차
- 과소적합 발생

 

축소 불가능한 오차

- 반응 변수에 영향을 주는 변수 중 일부가 수집되지 않았거나 분석에 이용된 데이터가 갖고 있지 않은 다른 정보에 의해 발생한 오차 >> 줄일 수 없는 오차

 

교차검증 >> https://dailystudy.tistory.com/112

 

 

* 내용참고&출처 : 태그에서 수강한 수업을 복습 목적으로 정리한 내용입니다.

Comments