두 포인트 중 하나에 가까운 지점에서 시작하겠습니다. 바를 올리기 시작하면서 두 포인트 사이에 있는 적절한 중간 지점을 지납니다. 아직 멈추지 말고 바를 계속 이동시켜 맨 위 포인트에 도달합니다. 아래에 있는 포인트에서는 꽤 멀어졌군요. 이상적인 균형점은 중간 어딘가에 있습니다. 이제 숫자를 조금 살펴볼까요?
In [14]:
col_labels = "Prediction", "Errors", "Sum", "SSE", "Distance" display(pd.DataFrame.from_records(results, columns=col_labels, index="Prediction"))
Prediction |
Errors |
Sum |
SSE |
Distance |
1.0000 |
[4.0, 1.0] |
5.0000 |
17.0000 |
4.1231 |
2.0000 |
[3.0, 0.0] |
3.0000 |
9.0000 |
3.0000 |
3.0000 |
[2.0, -1.0] |
1.0000 |
5.0000 |
2.2361 |
3.5000 |
[1.5, -1.5] |
0.0000 |
4.5000 |
2.1213 |
4.0000 |
[1.0, -2.0] |
-1.0000 |
5.0000 |
2.2361 |
5.0000 |
[0.0, -3.0] |
-3.0000 |
9.0000 |
3.0000 |
테이블에는 양 혹은 음의 오차가 기록되어 있습니다. 오차의 합은 직선을 평가하는 용도로 적합하지 않습니다. [2, -1]처럼 정반대 방향의 오차합은 1입니다. 전반적인 예측 능력을 위해서는 오차가 서로 상쇄되지 않아야 합니다. 이 문제를 해결하는 방법 중 하나는 총 거리(total distance)를 구하는 것입니다. 최근접 이웃 방법에서 사용했던 거리처럼 말이죠. 즉, 을 계산합니다. SSE 열은 오차 제곱합으로 거리를 계산하는 것과 비슷합니다. 남은 것은 제곱근을 취하는 것이지요. 지금까지 규칙을 적용해서 뽑은 최고 직선은 포인트들의 수직 위치 평균인 = 3.5를 이용해서 그은 수평선입니다. 앞서 보았던 막대의 균형처럼 평균이 제일 좋은 답입니다. 양측의 오차 가운데에서 완벽하게 중심을 잡고 있죠.