더북(TheBook)

4.3.2 기울여 보기

직선에서 수평이라는 조건을 제거하면 무슨 일이 벌어질까요? 당연한 말이지만 이제는 평평한 선을 긋지 않아도 됩니다. 위나 아래로 향하는 선을 그어도 되는 것이죠. 여러분이 그린 포인트 군집이 이륙하거나 착륙하는 비행기처럼 위아래로 향한다면, 평평하고 수평적인 활주로보다는 경사진 직선이 더 적합할 것입니다. 기울어진 직선 형태는 대수학의 고전적인 방정식인 y = mx + b입니다. mb 값을 조정해서 x 값이 얼마나 좌우로 이동해야 위아래로 움직이는 y에 근접하는지 알 수 있게 됩니다.

가깝다는 것을 어떻게 정의할까요? 거리를 다룰 때 썼던 방식을 똑같이 쓰면 됩니다. 그런데 여기에서는 기울어진 직선이라는 흥미로운 조건이 추가되었습니다. 하나의 포인트부터 직선까지 거리는 어떻게 될까요? 그것은 distance(prediction, y) = distance(m*x + b, y)와 같습니다. 그러면 총 거리는 어떻게 될까요? 우리가 가진 모든 데이터에 대해 거리를 잰 후 모두 더하면 됩니다. sum(distance(mx+b, y) for x, y in D) 이렇게 말이죠. 수학적으로는 다음 수식과 같이 표현됩니다.

 

곧 코드와 그래프가 나옵니다! 조금만 기다리세요. 여담이지만, 가장 좋은 직선이 평평한 직선인 경우도 충분히 가능합니다. 이전 절에서 살펴보았듯이 단순한 수평선이 원하는 답이 된다는 의미입니다. 그러한 경우에는 m을 0으로 설정하고 즐겁게 방정식을 풀어 나가면 됩니다. 그럼 다음으로 넘어갑시다.

이제 기울어진 직선 몇 개를 이용해서 실험을 계속해 보겠습니다. 이해를 돕기 위해 그래프를 그리는 부분과 테이블에 들어갈 값을 계산하는 부분을 process 함수 안에 구현했습니다. 함수 이름으로 process는 끔찍하기는 합니다. stuff나 things와 동급이에요. 그렇지만 여기에서는 우리가 가진 작은 데이터셋과 간단한 직선으로 하는 일련의 과정(process)이라고 생각해 주세요.

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