가설 함수를 최소제곱법으로 구했지만, 변수가 많아지면 최소제곱법만으로는 구할 수 없다. 그러므로 비용함수(cost function)라는 것이 필요하다. 비용함수는 예측한 값과 실제 결괏값의 차이를 돌려주는 함수다.
오차 = 실제값 - 예측값
다음은 앞서 구한 기울기 W와 절편 b를 갖고 구한 예측값과 실제값 y = [ 4, 7, 9 ]의 차이인 오차를 보여준다.
# numpy 라이브러리를 임포트한다
import numpy as np
# x 값과 y 값을 리스트로 저장한다. 오차를 만들기 위해 앞서 예제에서 사용한 y를 다른 값으로 바꿨다
x = np.array( [ 1, 2, 3 ] )
y = np.array( [ 4, 7, 9 ] )
# 앞서 구한 기울기 W, 절편 b를 설정한다
W = 2.0
b = 1.0
# x 값을 주고 예측값(y_hat)을 구한다. 그리고 오차를 구한다
for xi, yi in zip( x, y ):
y_hat = W * xi + b
# 실제값(y)과 예측값(y_hat)의 차이가 오차다
err = yi - y_hat
print( '%.f = %.f - %.f ' % ( err, yi, y_hat ) )