목차
1. 회귀 모델 Regression Model
2. 회귀 모델의 성능 평가
회귀 모델 Regression Model
- 2023년의 거래액은 어떻게 예측할 수 있을까?
- 2023년의 회원가입은 어느 정도 수준으로 나타날 수 있을까?
특정 사용자가 이탈할 것인가, 잔류할 것인가를 판단할 때는 분류 모델Classification Model을 활용했다. 하지만 내년도 실적 전망치를 예측하는 경우에는 이런 분류 모델을 활용할 수 없다. 왜냐하면, 결과값이 연속형 데이터이기 때문이다.
이런 경우에는 회귀 모델 Regression Model을 사용하게 된다. 회귀는 회귀 분석의 그 회귀다. 어떤 자료에 대해 그 값에 영향을 주는 요소를 고려하여 구한 평균으로, 연속형 데이터의 형태로 값을 예측할 때 사용하는 모델이다.
분류 모델 Classification | 회귀 모델 Regression | |
예측하는 값 | 범주형 데이터 (이탈/잔류, 사망/생존, A/B/C학점) |
연속형 데이터 (매출, 키, 온도 등) |
회귀 모델의 성능 평가하기
모델 성능을 평가할 수 있어야, 우리에게 좋은 모델을 고를 수 있다.
위에서 언급한 것처럼 분류 모델은 정답을 '맞췄다', '틀렸다'를 기준으로 정확도를 평가할 수 있다. 다만, 회귀 모델은 결과값이 수치로 나타나기 때문에 성능평가도 분류 모델과 다른 방식으로 모델을 평가해야 한다.
회귀 모델의 성능을 평가하는 대표적인 지표는 MAE, MSE, RMSE, RMSLE가 있다. 모두 오차를 구하는 것이다. 회귀 모델은 연속형 데이터를 구하기 때문에 예측치와 실제의 오차를 바탕으로 성능을 평가한다.
MAE (Mean Absolute Error) 평균 절대 오차 |
MSE (Mean Squared Error) 평균 제곱근 오차 |
RMSE (Root Mean Squared Error) 평균 제곱근 편차 |
RMSLE (Root Mean Squared Log Error) 평균 제곱근 대수 오차 |
실제 값과 예측 값 차이의 절대값의 평균 | 실제 값과 예측 값의 차이를 제곱한 값의 평균 | MSE에 Root를 적용 |
RMSE에 log를 적용 |
MSE에서 실제 오류 평균보다 값이 커지는 특성 때문에 활용 | 아웃라이어 등의 영향을 적게 받을 수 있다. |
사실 개념과 계산은 별거 아닌데, 수식으로 보면 괜히 어려워보일 수 있기에 엑셀로 간단하게 작성해봤다.
(수식 이미지 만들기 귀찮아서는 안비밀, 수식은 인터넷에 검색하면 쉽게 찾을 수 있다)
보이는 것처럼 실제값과 예측값이 있고, 실제 수치에서 예측치를 뺀 것을 오차로 나타냈다. 오차의 평균을 보면 들쭉 날쭉한 것처럼 보인다. 그런데 실제 수치가 예측치보다 큰 것도 있고, 작은 것도 있기 때문에 오차의 평균으로 계산하면 0.5라고 하는 수치가 나온다. 그렇기에 단순한 오차의 합계나 평균을 쓰는 것이 아니라, 오차의 절대값의 평균(MAE)나 오차 제곱의 평균(MSE)을 활용하게 된다.
다만 오차 제곱의 합은 오차가 1보다 작은 경우는 그 수치가 더욱 작게 반영되고, 오차가 1보다 큰 경우에는 더욱 크게 반영된다. 그렇기 때문에 이렇게 산출한 오차 제곱의 평균에 루트(제곱근)를 씌워서 계산해주는데, 이것이 평균 제곱근 편차(RMSE)다. 이걸 활용하는 경우, 오차 제곱의 단점이 어느정도 상쇄된다. 물론 RMSE로도 이상치가 있는 경우, 오차가 왜곡될 수 있기 때문에 평균 제곱근 대수 오차(RMSLE)를 활용하기도 한다. (RMSLE는 나중에 따로 콘텐츠로 올릴 예정)
참고
- 선형과 비선형의 차이 (머신러닝, 딥러닝) (출처 Minsuk Heo 허민석)
'프로덕트 매니저 > PM의 데이터' 카테고리의 다른 글
[clickhouse] neighbor 활용하여 이전행/다음행 가져오기 (0) | 2023.01.03 |
---|---|
예측치를 산출하는 이유, 그리고 분석에 대한 관점 (feat. 뉴욕주민) (0) | 2022.12.30 |
sum over, 일별 진척율 대비 YoY 구하기 (1) (sum over의 개념 등) (0) | 2022.12.28 |
[SQL/Clickhouse] LIMIT n BY, 그룹별/조건별로 필요한 수만큼 추출하기 (3) | 2022.10.11 |
SQL을 활용한 코호트 분석Cohort Analysis (0) | 2022.06.12 |