brunch

You can make anything
by writing

C.S.Lewis

by 코딩하는 수학쌤 Aug 16. 2021

30. 선형 회귀 분석과 손실 함수-1

[4악장 - Cadenza] 머신러닝의 알고리즘과 수학

예측에 주로 사용하는 선형 회귀 분석

 우생학을 연구하던 생물학자 프랜시스 골턴(Francis Galton)은 아버지의 키와 아들의 키를 연구하던 중 재미있는 사실을 하나 발견하게 되었습니다. 아버지의 키가 평균보다 크면 아들의 키는 아버지보다 작을 확률이 높고, 아버지의 키가 작은 경우는 아버지보다 클 확률이 높아진다는 것입니다. 따라서 세대가 지나더라도 키의 분포가 거의 일정하게 유지될 수 있었음을 설명했습니다. 이 현상을 보고 골턴은 ‘평균으로의 회귀 현상(regression to the mean)’을 증명하기 위해 ‘회귀분석’이라는 방법을 만들었습니다.

 회귀 분석이란 두 개 이상의 변수 사이의 관계를 알아보고자 할 때 사용하는 분석 방법입니다.  예를 들어 아버지의 키와 아들의 키를 각각 x축, y축으로 설정하고, 각 데이터를 좌표 평면에 나타낸다고 해보겠습니다. 그럴 때 자료들에게서 어느 정도 일정하는 나타나는 추세선이 존재합니다. 대부분의 데이터는 추세선 근처에 분포를 하기 때문에 특정 변수를 다른 변수의 값으로 예측할 수 있습니다. 예를 들면 아버지의 키가 크다면 아들의 키도 클 것이라고 예측할 수 있습니다.


 실제로 데이터 학습에서 많이 사용하는 보스턴 지역의 주택 가격 데이터 셋에 실려있는 주택의 가격의 분포들입니다. 이 자료들을 회귀 분석을 통해 추세선을 그어보면 오른쪽과 같이 구할 수 있습니다. 추세선을 통해 방의 개수에 따라 주택 가격을 예측할 수 있습니다. 방이 6개라면 가격대가 대략 얼마인지를 대략적으로 계산을 할 수 있게 되죠. 또한 방의 개수와 주택 가격에 대한 분포의 추세를 알 수 있기 때문에 “방의 개수에 비해 생각보다 주택 가격이 비싼데?” 와 같이 판단의 기준을 가질 수 있습니다.  이처럼 선형 회귀는 숫자 속성을 가지는 하나, 혹은 그 이상의 값들을 통해 다른 속성의 값을 예측하는데 주로 사용합니다.




선형 회귀 분석을 통해 익혀보는 손실 함수

 잠시 인공지능 수학 교과서에 소개된 예시 하나를 가져와볼게요. 다음의 예시는 미래N 교과서에 소개된 손실 함수의 도입부의 예제입니다.

 어느 기계가 있는데 이 기계는 연료의 양과 그에 따른 작동하는 시간을 조사했더니 왼쪽 표와 같은 결과를 얻었습니다. 대략적으로 연료의 양이 늘어날수록 가동시간이 증가하는 추세를 보이는 것을 볼 수 있습니다. 이를 y=ax라는 형태로 회귀 분석을 통해 예측 모델을 만들려고 합니다.


[문제-1] 그렇게 예측 모델을 의뢰했더니 A 회사와 B회사가 각각 모델을 만들어왔습니다. A회사는 y=(9/8)x 라는 모델을 가져왔고 B 회사는 y=(7/8)x 이라는 모델을 만들어왔는데, 어느 모델이 더 정확할까요?


위의 문제를 풀기 위해서는 '각각의 모델이 실제 값들에 비해 가지는 손실은 얼마인가?'를 수치화하는 도구가 필요합니다. 문제 1번에서 A회사와 B회사의 값들이 차이가 눈에 보일만큼 많이 나면 모르겠지만 슬쩍 보기에는 비슷해 보이거든요. 따라서 직관적인 겉보기의 예측보다는 예측에 따른 손실을 값으로 표현하는 도구가 필요한데 이때 사용하는 함수가 바로 '손실 함수'입니다. 즉 손실 함수는 '모델'의 집합을 정의역으로 합니다. 예를 들면 A회사와 B회사의 모델이 정의역의 원소가 되는거죠. 각 모델들은 x의 값에 대해 y값을 가지는데 이는 실제 데이터와 편차가 존재합니다. 손실함수는 그 편차들을 모두 반영한 하나의 값을 산출해주는데, 이 값이 바로 손실함수의 모델에 대응하는 함숫값이 됩니다.


 만약 손실 함수의 식을 구했는데 그 함수의 모양이 우리가 잘 알고 있는 형태라면 최솟값 혹은 최댓값을 구할 수 있을지도 모릅니다. 우리는 손실을 최소화해야 예측을 잘할 수 있기 있기 때문에 손실 함수의 최솟값을 구하는 것이 중요합니다. 그렇다면 다음과 같은 문제도 살펴볼 수 있죠.


[문제-2] 여러분은 사실 A, B 회사가 아닌 C 회사라고 가정해봅시다. 그렇다면 두 회사의 모델 외에 더 나은 모델은 없을까요?


복잡해 보이지만...

가장 간단한 y=ax라는 형태의 모델을 찾는 선형 회귀는 다음과 같이 차근차근 진행됩니다.

① 데이터가 존재합니다.

② y=ax라는 선형 회귀 분석 모델을 만들고자 합니다. 우리는 가장 손실이 적은 a를 찾고 싶습니다.

③ 모델을 측정하는 하나의 '손실 함수'를 가져옵니다.

이 손실 함수는 a의 값에 영향을 받는다는 것을 알 수 있습니다.

 손실 함수는 a에 관한 함수가 되겠죠? 그렇다면 손실 함수는 a가 얼마일 때 최소일까요?

⑥ a를 찾았군요! 여러분은 가장 좋은 선형 회귀 모델을 찾아냈어요! 손실 함수의 '최적화'에 성공했습니다!


다음 글에서는 대표적인 손실 함수인 '평균 절대 오차(MAE)'와 '평균 제곱 오차(MSE)' 2가지를 소개하고, 최적화에 주로 사용하는 경사하강법(Gradient Descent)에 대해 살펴보도록 하겠습니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari