logo

회귀 평가 지표

MAE, RMSE, R²

예측 오차

  • 회귀 모형: 연속적인 숫자를 예측하는 모형
  • 실제값 yi​: i번째 사례에서 관찰한 타깃
  • 예측값 y^​i​: 모형이 i번째 사례에 대해 예측한 값
  • 예측 오차 ei​: 실제값과 예측값의 차이
ei​=yi​−y^​i​

오차가 여러 개이면 하나의 숫자로 요약해야 모형을 비교할 수 있음. MAE, RMSE, R2는 오차를 서로 다른 방식으로 요약하는 회귀 평가 지표.

실습 데이터: 인지 과제 반응시간

  • 입력: 사전 연습 시간(분)
  • 타깃: 밀리초(ms) 단위의 반응시간
  • 수업용 합성 자료: 연습 시간이 길어질수록 반응시간이 줄어드는 경향과 무작위 개인차를 함께 반영
열 설명
practice_minutes 사전 연습 시간(분)
reaction_time_ms 반응시간(ms)

실습 준비

다운로드 명령

!wget -q -O reaction_time.xlsx "https://www.mindscale.kr/content-assets/24d730234f8d72bad3fb2f2ff9916b717797f485510adf57d80e556596de27d1/reaction_time.xlsx"
import pandas as pd

df = pd.read_excel("reaction_time.xlsx", sheet_name="data")
df.head()
실행 결과
   practice_minutes  reaction_time_ms
0         92.874726        444.961986
1         52.665413        513.003225
2        103.031750        456.640588
3         83.684163        446.836884
4         11.301282        601.735828
df.shape  # 자료의 형태
실행 결과
(320, 2)

입력과 타깃 분리.

y = df["reaction_time_ms"]
X_all = df.drop(columns="reaction_time_ms")

모형 구성

연습 시간을 입력으로 사용하여 깊이를 3으로 제한한 결정나무 구성.

from sklearn.tree import DecisionTreeRegressor

tree3 = DecisionTreeRegressor(
    max_depth=3, random_state=42
)
tree3.fit(X_all, y)
pred_tree3 = tree3.predict(X_all)

평균 절대 오차

  • 평균 절대 오차(mean absolute error, MAE): 각 예측 오차의 절대값을 평균한 지표
  • 작을수록 실제값과 예측값이 가까움
  • 일부 이상치가 있더라도 전반적으로 잘 맞는 예측을 선호
MAE=n1​i=1∑n​∣yi​−y^​i​∣

MAE 계산

from sklearn.metrics import mean_absolute_error

mean_absolute_error(y, pred_tree3)
실행 결과
23.121682490484584

깊이 3 나무의 예측은 실제 반응시간에서 평균적으로 약 23.1ms 빗나감.

평균 제곱근 오차

  • 평균 제곱근 오차(root mean squared error, RMSE): 오차를 제곱해 평균한 뒤 제곱근을 구한 지표
  • 오차를 제곱하므로 큰 오차에 더 민감
  • 모든 예측을 평균으로 했을 때, 오차의 표준편차와 같음
  • 평균적으로 잘 맞는 예측을 선호
RMSE=n1​i=1∑n​(yi​−y^​i​)2​

RMSE 계산

from sklearn.metrics import root_mean_squared_error

root_mean_squared_error(y, pred_tree3)
실행 결과
28.568478881554665

큰 오차에 더 민감한 RMSE는 약 28.6ms.

결정계수

  • 결정계수 R2: 평균만 예측하는 기준 모형과 제곱오차를 비교한 지표
  • R2=1: 모든 예측이 실제값과 일치
  • R2=0: 타깃의 평균만 예측한 것과 같은 제곱오차
  • 단위 없음
  • "분산의 ~%를 설명한다"와 같이 읽음
    • 평균으로만 예측하는 경우에 비해 분산(=불확실성)이 줄어든 정도
R2=1−∑i=1n​(yi​−yˉ​)2∑i=1n​(yi​−y^​i​)2​

결정계수 계산

from sklearn.metrics import r2_score

r2_score(y, pred_tree3)
실행 결과
0.7678434396919797
  • 깊이 3인 의사결정나무는 반응시간 분산의 76.8%를 설명함.
    • 평균으로만 예측한 경우보다 제곱오차가 약 76.8% 작음.

퀴즈

문제 1 / 6맞음: 0힌트: 0틀림: 0채점중: 0남음: 6

MAE가 작을수록 예측은 어떻게 되나요?

  • ○실제값에 더 가깝다
  • ○실제값에서 더 멀어진다
  • ○자료의 수가 더 많아진다

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.

Previous
선형 회귀