회귀 평가 지표
MAE, RMSE, R²
예측 오차
- 회귀 모형: 연속적인 숫자를 예측하는 모형
- 실제값 yi: i번째 사례에서 관찰한 타깃
- 예측값 y^i: 모형이 i번째 사례에 대해 예측한 값
- 예측 오차 ei: 실제값과 예측값의 차이
오차가 여러 개이면 하나의 숫자로 요약해야 모형을 비교할 수 있음. 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 계산
from sklearn.metrics import mean_absolute_error
mean_absolute_error(y, pred_tree3)
실행 결과
23.121682490484584
깊이 3 나무의 예측은 실제 반응시간에서 평균적으로 약 23.1ms 빗나감.
평균 제곱근 오차
- 평균 제곱근 오차(root mean squared error, RMSE): 오차를 제곱해 평균한 뒤 제곱근을 구한 지표
- 오차를 제곱하므로 큰 오차에 더 민감
- 모든 예측을 평균으로 했을 때, 오차의 표준편차와 같음
- 평균적으로 잘 맞는 예측을 선호
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: 타깃의 평균만 예측한 것과 같은 제곱오차
- 단위 없음
- "분산의 ~%를 설명한다"와 같이 읽음
- 평균으로만 예측하는 경우에 비해 분산(=불확실성)이 줄어든 정도
결정계수 계산
from sklearn.metrics import r2_score
r2_score(y, pred_tree3)
실행 결과
0.7678434396919797
- 깊이 3인 의사결정나무는 반응시간 분산의 76.8%를 설명함.
- 평균으로만 예측한 경우보다 제곱오차가 약 76.8% 작음.
퀴즈
MAE가 작을수록 예측은 어떻게 되나요?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.