더북(TheBook)

코드의 형태는 크게 다르지 않습니다. 다만 x가 두 개가 되었으므로 x1, x2 두 변수를 만들고, 기울기도 a1a2 이렇게 두 개를 만듭니다. 앞서 했던 방법대로 경사 하강법을 적용해 보겠습니다. 먼저 예측 값을 구하는 식을 다음과 같이 세웁니다.

y_pred = a1 * x1 + a2 * x2 + b # 기울기와 절편 자리에 a1, a2, b를 각각 대입합니다.
error = y - y_pred             # 실제 값과 비교한 오차를 error로 놓습니다.

오차 함수를 a1, a2, b로 각각 편미분한 값을 a1_diff, a2_diff, b_diff라고 할 때 이를 구하는 식은 다음과 같습니다.

n = len(x1)                           # 변수의 총 개수입니다.
a1_diff = (2/n) * sum(-x1 * (error))  # 오차 함수를 a1로 편미분한 값입니다.
a2_diff = (2/n) * sum(-x2 * (error))  # 오차 함수를 a2로 편미분한 값입니다.
b_diff = (2/n) * sum(-(error))        # 오차 함수를 b로 편미분한 값입니다.

학습률을 곱해 기존의 기울기와 절편을 업데이트한 값을 구합니다.

a1 = a1 - lr * a1_diff    # 학습률을 곱해 기존의 a1 값을 업데이트합니다.
a2 = a2 - lr * a2_diff    # 학습률을 곱해 기존의 a2 값을 업데이트합니다.
b = b - lr * b_diff       # 학습률을 곱해 기존의 b 값을 업데이트합니다.

이제 실제 점수와 예측된 점수를 출력해서 예측이 잘되는지 확인합니다.

print("실제 점수: ", y)
print("예측 점수: ", y_pred)

지금까지 코드를 정리하면 다음과 같습니다.

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