더북(TheBook)

2.5.3 오차 제곱합

오차 제곱합은 아주 빈번하게 등장하는 점곱 패턴입니다. 제가 가진 실제 값 actual과 여러분의 예측 값 predicted를 가지고 오차를 계산할 수 있습니다. error = predicted - actual처럼 말이죠.

예측 값이 실제 값보다 큰지, 작은지에 따라 오차는 양수 또는 음수가 됩니다. 오차를 양수로 만드는 트릭에는 몇 가지가 있습니다. 오차를 측정할 때 하나는 5로 과다추정하고 -5로 과소추정했다고 합시다. 이를 그냥 합하면 오차가 서로 상쇄되어 예측이 완벽하다고 잘못 판단하게 됩니다. 이때 오차 제곱합 트릭을 유용하게 사용할 수 있습니다. 오차 5는 25가 되고 오차 -5도 25가 됩니다. 여러분이 내린 예측 값의 오차가 5와 -5라면, 오차 제곱합은 25 + 25 = 50이 됩니다.

 

In [19]:

errors = np.array([5, -5, 3.2, -1.1])
display(pd.DataFrame({'errors':errors, 'squared':errors*errors}))

 

errors

squared

0

5.0000

25.0000

1

-5.0000

25.0000

2

3.2000

10.2400

3

-1.1000

1.2100

자, 오차의 제곱은 오차2 = (예측값 - 실제값)2으로 구합니다. 이를 모두 합하는 수식은 Σi(예측값i - 실제값i)2 = Σierrori2입니다. 이 수식은 왼쪽부터 읽으면 됩니다. “합을 하는 대상은 (괄호 열고) 오차를 제곱한 것 (괄호 닫고)”. 더 축약하면 오차 제곱합이 되지요. 앞서 설명한 점곱과 같은 패턴입니다.

 

In [20]:

np.dot(errors, errors)

Out [20]:

61.45

가중 평균과 오차 제곱합은 아마도 머신 러닝에서 가장 흔하게 등장하는 합계 형태일 것입니다. 이 두 가지 형태를 이해하면 수많은 머신 러닝 시나리오에서 수학적으로 무슨 일이 일어나는지 이해할 준비가 된 것입니다. 머신 러닝을 배우는 초심자를 혼돈에 빠뜨리는 수식 대부분은 알고 보면 합계를 더 적은 기호로 압축적으로 표현한 것들입니다. 이 절에서 여러분은 그것을 어떻게 이해하는지 배웠습니다.

뭔가 뒷목이 서늘한 느낌을 받았을 수도 있습니다. 아마도 C2 = a2 + b2처럼 생긴 공식 때문일 것입니다. 거리2 = 길이12 + 길이22 혹은 거리 = = 으로 조금 다르게 표현할 수도 있습니다. 맞습니다. 우리의 오랜 친구, 유클리드(Euclid)와 피타고라스(Pythagoras)도 제곱합으로 쓸 수 있습니다. 보통 ab는 거리고, 이 둘을 뺌으로써 거리를 계산할 수 있습니다. 앞서 실제 값과 예측 값을 비교했던 것처럼 말이지요. 너무 놀라지 마세요! 그리고 오차는 실제 값과 예측 값 간 거리일 뿐입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.