어떻게 점들 사이에 선 긋기, 회귀
공부한 시간이 길수록 점수도 높은 편이라고 하자. 사람마다 제각각이라 점들은 흩어져 있다. 그래도 전체 흐름을 직선 하나로 그어 두면, 다섯 시간 공부한 새 사람의 점수도 그 선에서 어림할 수 있다. 흩어진 점들 사이로 가장 잘 맞는 직선을 찾아 값을 예측하는 방법, 이것이 선형 회귀예요.
흩어진 점들로 시작해요
앞 레슨까지는 값 하나의 가운데와 퍼짐, 그리고 가능성을 봤다. 이번에는 짝지어진 두 값을 본다. 공부한 시간과 받은 점수처럼 말이다. 시간을 가로축에, 점수를 세로축에 두면 사람 한 명이 점 하나가 돼요.
사람마다 사정이 달라서 점들은 한 줄로 딱 떨어지지 않고 구름처럼 흩어진다. 아래에서 점을 하나씩 찍어 보자.
빈 칸을 눌러 점을 흩뿌려 보자. 오른쪽으로 갈수록 위로 올라가는 흐름이 어렴풋이 보여요.
점들이 흩어져 있어도 한 발 물러서서 보면 흐름이 보인다. 오른쪽으로 갈수록 대체로 위로 올라간다. 시간을 많이 쓴 사람일수록 점수가 높은 편이라는 뜻이에요.
하지만 이것만으로는 새 사람의 점수를 콕 집어 말하기 어렵다. 이 흐름을 선 하나로 그릴 수 있다면 훨씬 또렷해질 것이다.
점들 사이로 선을 그어요
흐름을 나타내는 가장 쉬운 방법은 곧은 직선 하나를 긋는 것이다. 이 선은 흩어진 점들의 한가운데를 가로지르듯 지나간다. 어떤 점은 선 위에, 어떤 점은 선 아래에 놓이지만, 전체로 보면 선이 점들을 대표해요.
이렇게 직선으로 흐름을 나타내기 때문에 선형 회귀라고 부른다. 선만 있으면 점이 없던 자리의 값도 읽어 낼 수 있다.
왼쪽과 오른쪽에서 선이 지날 자리를 하나씩 눌러 보자. 두 곳을 고르면 그 사이로 직선이 그어져요.
선을 하나 그으니 흩어진 점들이 한결 정돈돼 보인다. 이제 가로축에서 아무 시간이나 고르면 선을 따라 올라가 세로축의 점수를 읽을 수 있다. 이것이 예측이에요.
그런데 선을 어디에, 얼마나 기울여 그을지는 아직 우리 마음대로였다. 고른 자리에 따라 선이 달라졌다. 선을 정하는 규칙이 필요하다.
기울기와 절편이 선을 정해요
직선 하나는 숫자 두 개로 완전히 정해진다. 하나는 기울기로, 가로로 한 칸 갈 때 세로로 얼마나 오르는지를 나타낸다. 기울기가 크면 선이 가파르고, 작으면 완만하다.
다른 하나는 y절편으로, 선이 세로축과 만나는 높이다. 이 둘만 정하면 선은 하나로 정해지고, 식으로는 y=ax+b 라고 적어요. 여기서 a가 기울기, b가 절편이다.
기울기(a)와 절편(b)을 증감 버튼으로 바꿔 보자. 선이 가팔라지거나 완만해지고, 위아래로 움직여요.
기울기를 키우면 선이 가팔라지고, 줄이면 눕는다. 절편을 올리면 선 전체가 위로, 내리면 아래로 미끄러진다. 숫자 두 개로 선을 마음대로 옮길 수 있어요.
그렇다면 흩어진 점들에 가장 잘 맞는 기울기(a)와 절편(b)은 어떻게 찾을까? 좋은 선과 나쁜 선을 가르는 기준이 있어야 한다.
어긋남이 가장 작은 선이 좋아요
기준은 간단하다. 점마다 선이 예측한 값과 실제 값이 세로로 얼마나 차이 나는지 본다. 이 차이를 잔차라고 부르고, 차이가 클수록 선이 그 점을 많이 빗나간 것이다.
모든 점의 차이를 더하면 선이 전체적으로 얼마나 어긋났는지 나와요. 이 합이 작을수록 선이 점들에 잘 맞으니, 가장 잘 맞는 선은 어긋남의 합이 가장 작은 선이다. 아래 그림은 차이의 크기를 그대로 더하지만, 보통의 선형 회귀는 차이를 제곱해서 더한 값을 가장 작게 만든다. 이것을 최소제곱법이라고 하며, 크게 빗나간 점을 더 무겁게 따진다.
버튼으로 선을 조금씩 움직여 어긋남의 합을 줄여 보자. 합이 작아질수록 가장 잘 맞는 선에 가까워져요.
어긋남의 합을 줄여 가니 선이 점 구름의 한가운데에 자리를 잡았다. 더는 줄지 않는 자리, 그것이 가장 잘 맞는 선이에요.
사람은 버튼을 눌러 가며 어림으로 찾았지만, 기계는 이 줄이는 일을 수없이 되풀이해 아주 정확하게 찾아낸다. 최소제곱법은 식을 풀어 단번에 답을 구할 수도 있다. 어느 쪽이든 하는 일은 같다. 어긋남을 줄여 가장 잘 맞는 기울기(a)와 절편(b)을 찾는 것이다.
정리
정리하면 이렇다. 짝지어진 점들이 흩어져 있을 때 그 사이로 가장 잘 맞는 직선 하나를 긋는다. 선은 기울기(a)와 절편(b), 숫자 두 개로 정해지고, 점들과의 어긋남이 가장 작도록 고른다. 그 선에 새 입력을 넣으면 결과를 예측해요.
하나만 기억해 두자. 선을 정하는 기울기(a)와 절편(b)은 뒤에서 배울 뉴런에서 가중치와 편향이라는 이름으로 다시 나온다.
핵심을 차례로 눌러 되짚어 보자. (흩어진 점 → 선 긋기 → 기울기(a)와 절편(b) → 어긋남을 줄여 가장 잘 맞는 선 → 가중치와 편향 예고)
이제 흩어진 점들 사이로 선을 긋고, 그 선으로 앞일을 어림할 수 있게 됐다. 숫자 두 개가 예측을 만든다는 이 생각은 앞으로 배울 거의 모든 것의 씨앗이에요.
회귀는 점수처럼 이어지는 숫자를 예측한다. 그런데 스팸인지 아닌지, 고양이인지 개인지처럼 어느 무리에 속하는지를 답해야 할 때도 많다. 그런 문제를 다루는 분류를 다음 레슨에서 살펴본다.