주가 regression에 어떤 metric을 써야할까

MSE, RMSE 등은 오차가 커질수록 크게 penalty를 준다. 따라서 outlier에 너무 크게 영향을 받는다.

MAPE (Mean Absolute Percentage Error)는 주가가 퍼센트로 수익이 결정되는걸 생각하면 가장 괜찮아보인다. 그런데 Wikipedia등에 보면 이 방법의 단점으로 negative error (actual < forecast)에 큰 penalty를 준다고 지적하여 사용을 꺼리게한다.

하지만 그런 지적은 주가와는 무관한 이야기이다. Errors on percentage errors에서 보인 예를 보면 actual = 150, forecast = 100 일때와 actual = 100, forecast = 150일때를 비교하면서 둘의 MAPE가 다른게 문제라고 말한다. 하지만 주가의 경우 이 둘은 수익률이 다르므로 loss가 다르게 나오는게 맞다. 또 다른 지적은 actual 이 작을 때 실제 보다 작은 forecast의 MAPE가 100%가 넘지 못하는 반면 실제보다 큰 forecast의 MAPE의 상한이 없다고 말한다. 하지만 이는 forecast가 음수가 될 수 없는 모델에서만 해당하는 말이다.

같은 사이트에서 추천하는 방법은 MAPE를 쓰던가, MAPE가 말이 안되는 경우에 한해 MASE (Mean Absolute Scaled Error)를 쓰라고 추천한다.

MASE는 가장 naive 한 prediction 대비 오차의 비를 계산한다. 예를들어 actual 이 1, 3, 5, 7, 9 라고 하자. 그러면 가장 naive 한 forecast는 바로 이전 시점의 값으로 예측하는 것이다. 즉, np.nan, 1, 3, 5 가 가장 naive한 예측이다. 이 naive한 방법을 사용할때 오차는 np.nan, 2 (= |3-1|), 2 (=|5-3|), 2 (=|7-5|)이다. MASE 는 이 값들의 평균을 분모로하고, 분자는 |forecast – actual|로 한다. 즉 가장 단순 무식한 방법대비 얼마나 잘하는지를 본다.

MAPE가 정말로 문제가 될 경우란 forecast와 actual이 정확히 일치해 gradient descent가 안될 경우이다. Metric 으로서는 문제가 없다.