●○○개 념 확인구조
잔차 다섯 개가 0.5, 1.0, 0.5, 1.0, 4.0이다.
절댓값으로 재면 합 7.0 중 4.0이 57%
제곱으로 재면 합 18.5 중 16.0이 86%
부호를 없앨 때 절댓값과 제곱 중 무엇을 쓰느냐가 만드는 차이는 무엇인가?
절댓값은 부호를 일부 남기고 제곱은 완전히 없앤다.
둘 다 부호를 완전히 없앤다. 그래서 남는 차이는 부호가 아니라 크기를 어떻게 가중하느냐다.
제곱은 계산이 빨라 대용량 데이터에서 유리하다.
곱셈과 절댓값의 계산 비용 차이는 무시할 수준이다. 제곱을 쓰는 진짜 이유는 미분이 매끄러워 최적화에 편하다는 데 있다.
정답절댓값은 크기에 비례해 취급하고 제곱은 큰 잔차를 불균형하게 키운다.
잔차가 2배가 되면 절댓값 기여분은 2배지만 제곱 기여분은 4배다. 그래서 같은 잔차 하나가 절댓값으로는 57%, 제곱으로는 86%를 차지한다.
절댓값은 이상치를 계산에서 아예 제외하고 제곱은 포함한다.
절댓값도 이상치를 그대로 더한다. 다만 크기에 비례해서만 더하므로 제곱만큼 압도적인 비중을 주지 않을 뿐이다.
해설
잔차에는 부호가 있어 그대로 평균 내면 상쇄 되므로 절댓값을 씌우거나 제곱한다. 사소해 보이는 선택인데 결과가 갈린다. 절댓값은 모든 잔차를 크기에 비례해 취급하고 제곱은 큰 잔차를 불균형하게 키우기 때문이다. 여기서는 잔차 하나가 절댓값 기준으로 합계의 57%지만 제곱 기준으로는 86%를 가져간다. MSE를 최소화하는 학습은 사실상 그 하나짜리 이상치를 줄이는 일에 대부분의 힘을 쓴다는 뜻이다. 제곱을 쓰는 실용적인 이유는 미분이 매끄럽다는 데 있다. 절댓값은 0에서 꺾여 경사하강법에 불편하므로 학습에는 MSE를, 보고에는 단위가 타깃과 같은 RMSE를 쓰는 조합이 흔하다.
이 내용 다시 읽기 →●●○상황 적용판단
두 모델의 잔차와 점수다.
모델 A 잔차 1, 1, 1, 1, 1 MAE 1.0 RMSE 1.000
모델 B 잔차 0, 0, 0, 0, 3 MAE 0.6 RMSE 1.342
MAE는 B를, RMSE는 A를 더 낫다고 판정한다.
어느 쪽 판정을 따라야 하는가?
정답문제가 정한다. 큰 실수 한 번이 치명적이면 A, 가끔 크게 틀려도 되면 B다.
두 판정 모두 계산이 맞다. 절댓값을 씌운 순간 큰 오차와 작은 오차를 같은 눈으로 보겠다고 정한 것이고, 제곱을 씌운 순간 큰 오차 하나가 작은 오차 여럿보다 나쁘다고 정한 것이다.
RMSE가 MAE보다 정교한 지표이므로 언제나 RMSE를 따른다.
정교함의 차이가 아니라 미워하는 대상의 차이다. 이상치를 노이즈로 보고 흘리고 싶은 문제에서는 MAE 쪽이 더 알맞은 판정을 준다.
둘의 평균을 내어 종합 점수로 순위를 매긴다.
단위가 같아도 두 지표는 서로 다른 질문에 답한다. 평균을 내면 어느 질문에도 답하지 못하는 숫자가 나온다.
B의 잔차에 0이 네 개라 계산이 왜곡됐으므로 A가 옳다.
0인 잔차는 정확히 맞혔다는 뜻이라 왜곡이 아니다. B가 네 건을 완벽하게 맞히고 한 건을 크게 틀렸다는 사실이 그대로 반영된 결과다.
해설
MAE와 RMSE가 서로 다른 모델을 고른다는 것은 지표가 정확도의 등급표가 아니라 어떤 실수를 얼마나 미워할지에 대한 선언이라는 뜻이다. 대부분의 예측이 정확한 대신 가끔 크게 어긋나도 되는 문제라면 B가 낫고, 한 번의 큰 실수가 치명적인 문제라면 A가 낫다. 배송 예상 시간이라면 대체로 정확한 쪽이 낫고, 항공기 부품 수명 예측이라면 한 번의 큰 실수를 막는 쪽이 낫다. 그래서 순서는 지표를 고르고 모델을 학습하는 것이 아니다. 이 문제에서 무엇이 비싼 실수인지 먼저 정하고 그 정의에 맞는 지표를 고르는 쪽이다.
이 내용 다시 읽기 →●●○상황 적용진단
표본 5개짜리 테스트 세트에서 MAE 1.4, RMSE 1.92가 나왔다. 두 값의 비는 1.37이다. 이 비는 언제나 1과 √n 사이에 있다.
이 비율에서 무엇을 읽어야 하는가?
잔차가 모두 같은 크기로 고르게 퍼져 있다는 뜻이다.
그 경우 비가 정확히 1이 된다. 1.37은 1에서 눈에 띄게 떨어져 있으므로 잔차의 크기가 서로 다르다는 신호다.
RMSE 계산에 오류가 있다. 두 값은 언제나 같아야 한다.
RMSE는 제곱평균이라 산술평균인 MAE보다 작아질 수 없고, 같아지는 것은 모든 잔차의 크기가 똑같을 때뿐이다. 1.92가 1.4보다 큰 것은 정상이다.
표본이 5개라 비가 √5인 2.24를 넘을 수 없어 해석할 값이 없다.
상한이 있다는 것은 척도가 있다는 뜻이지 정보가 없다는 뜻이 아니다. 1과 2.24 사이에서 어디에 놓였는지가 곧 잔차 분포의 모양이다.
정답소수의 큰 오차가 섞여 있다. 상위 잔차를 직접 열어볼 차례다.
비가 1에 가까우면 잔차가 고르게 퍼져 있고 커질수록 몇 개가 전체를 짊어진다는 뜻이다. 두 지표를 이미 계산했다면 공짜로 얻는 진단이고, 값이 튀면 잔차가 큰 관측을 골라 무엇이 다른지 확인하는 것이 다음 순서다.
해설
RMSE는 항상 MAE 이상이고 두 값이 같아지는 것은 모든 잔차의 크기가 똑같을 때뿐이다. 반대편 끝은 √n으로 잔차 하나가 전부를 짊어질 때 나온다. 그래서 이 비율은 두 지표를 이미 계산했다면 공짜로 얻는 진단 도구다. 1에 가까우면 잔차가 고르게 퍼져 있고, 눈에 띄게 크면 소수의 큰 오차가 섞여 있다는 신호다. 비가 튀었을 때의 다음 순서도 정해져 있다. 잔차 상위 몇 개를 직접 열어 그 관측이 무엇이 다른지 보는 것이다. 데이터 오류일 수도 있고 모델이 다루지 못하는 유형일 수도 있는데, 두 경우의 처방이 서로 다르므로 눈으로 확인하는 것 말고 지름길이 없다.
이 내용 다시 읽기 →●●○상황 적용함정
샘플 100개에 진짜 유효한 특성은 3개뿐이고 4번째 열부터는 타깃과 아무 관계 없는 난수다. 학습 데이터에서 잰 값이다.
특성 수 R² Adjusted R²
1 0.7063 0.7033
3 0.9452 0.9435
6 0.9457 0.9421
10 0.9465 0.9405
난수 특성을 붙였는데도 R²가 계속 오르는 이유는 무엇인가?
난수 열에도 우연히 신호가 섞여 있어 설명력이 실제로 올랐다.
우연한 적합이 조금은 있지만 그것이 원인의 전부는 아니다. 최소제곱에서는 어떤 열을 붙여도 R²가 결코 내려가지 않는다는 것이 구조적으로 보장된다.
정답계수를 0으로 두면 이전 모델과 같아지므로 결과가 그보다 나빠질 수 없다.
새 열의 계수를 0으로 두는 것이 항상 후보에 들어 있으므로 최적화가 찾은 해는 최소한 이전만큼은 좋다. 그래서 학습 데이터의 R²로는 특성 수가 다른 모델을 비교할 수 없다.
샘플 100개가 적어 R²가 불안정하게 흔들린 결과다.
흔들림이라면 오르내려야 하는데 표에서는 단조롭게 오르기만 한다. 방향이 한쪽으로 정해져 있다는 것이 구조적 원인을 가리킨다.
R²는 특성 수와 무관한 지표이므로 표의 값에 오류가 있다.
무관하기는커녕 특성이 늘수록 절대 내려가지 않는다. 그 성질을 보정하려고 나온 것이 Adjusted R²다.
해설
최소제곱으로 특성을 추가하면 R²는 절대 줄어들지 않는다. 추가된 특성이 완전한 난수여도 그렇다. 새 열의 계수를 0으로 두면 이전 모델과 똑같아지므로 최적화 결과가 그보다 나쁠 수 없기 때문이다. 그래서 학습 데이터의 R²로는 특성 수가 다른 모델을 비교할 수 없다. Adjusted R²는 특성 수에 비례하는 벌점을 붙여 이를 보정하고, 표에서 유효 특성 3개를 넘어서는 순간부터 내려가기 시작한다. 여기에 붙는 다른 함정도 있다. R²는 음수가 될 수 있는데, 절편을 포함한 최소제곱 모델을 학습 데이터에서 평가하면 0과 1 사이가 보장되므로 음수는 홀드아웃에서만 나온다. 테스트 R²가 음수라면 과적합이나 분포 이동을 알리는 신호다.
이 내용 다시 읽기 →●●●분석과 판단함정
수요 예측 모델을 MAPE로 평가하고 그 값을 직접 최적화했다. 배포 후 보니 예측이 실제 수요보다 체계적으로 낮게 나와 재고 부족이 반복된다.
MAPE를 목적함수로 쓴 것이 이 치우침과 어떻게 이어지는가?
MAPE는 절댓값을 쓰므로 방향 정보가 사라져 예측이 무작위로 치우친다.
절댓값 때문이라면 위아래로 고르게 흩어져야 한다. 한 방향으로만 눌리는 것은 분모가 만들어내는 비대칭 때문이다.
정답과소예측의 오차율에는 100%라는 천장이 있지만 과대예측에는 없다.
0으로 예측하는 것이 과소 쪽의 최악이라 오차율이 100%를 넘을 수 없다. 반면 실제값의 세 배로 예측하면 200%가 되므로 같은 크기의 실수라도 위로 틀리는 쪽이 더 무겁게 벌점을 받는다.
MAPE는 실제값이 0에 가까울 때 폭발하므로 그 항들이 평균을 끌어내린다.
0 근처의 폭발은 MAPE의 대표적인 결함이 맞지만 그 항들은 평균을 끌어올린다. 예측을 아래로 미는 것은 별개의 성질이다.
MAPE는 회귀에 쓸 수 없는 지표라 어떤 방향으로든 결과가 왜곡된다.
타깃이 0에서 충분히 떨어져 있고 비율 오차가 의미 있는 문제라면 MAPE는 유용하다. 지표를 모르는 사람에게도 그대로 전달된다는 것이 큰 장점이다.
해설
MAPE는 오차를 실제값으로 나누므로 위아래가 대칭이 아니다. 과소예측은 0으로 예측하는 것이 최악이라 오차율이 100%를 넘을 수 없지만, 과대예측에는 천장이 없어 실제값의 세 배로 예측하면 200%가 된다. 같은 크기의 실수라도 위로 틀리는 쪽이 더 크게 벌점을 받으니 이 값을 목적함수로 삼으면 예측이 체계적으로 아래로 눌린다. 재고 부족이 재고 과잉보다 비싼 문제에서는 정확히 반대 방향의 치우침이라 손해가 크다. 대안은 두 갈래다. 분모를 실제값과 예측값의 평균으로 바꾼 sMAPE는 값이 200%로 묶이지만 이름과 달리 완전히 대칭은 아니다. 시간 순서가 있다면 순진한 예측의 오차로 나누는 MASE가 분모의 폭발 문제까지 함께 해결한다.
이 내용 다시 읽기 →