용어부터 정리하고 넘어가겠습니다.
회귀는 독립변수(independant variable)를 통해 종속변수(dependant variable)의 값을 예측하는 행위를 말합니다. 쉽게 말하자면, 숫자를 예측하는 것을 말합니다. 일기예보에서 내일의 기온과 강수량을 예측하는 것도, 기업에서 다음 분기 매출액을 예상하는 것도 모두 회귀에 해당하는 셈이죠.
여기서 기온, 강수량, 매출액 등 예상할 값을 종속변수라 하고, 이를 추론하기 위한 다양한 정보들(작년 기온과 강수량, 제품 생산에 필요한 원자재 가격 등)을 독립변수라 합니다.
또한 회귀를 위해선 독립변수와 종속변수 사이에 유의미한 연관성이 있어야 하는데, 이 연관성을 찾는 분석과정을 회귀분석(Regression Analysis)이라고 합니다. 종속변수 하나와 독립변수 하나의 연관성을 분석한다면 단일 회귀 분석(Simple Regression Analysis), 종속변수 하나와 독립변수 여러 개의 연관성을 분석한다면 다중 회귀 분석(Multiple Regression Analysis)이라고 하죠.
회귀를 완벽하게 해내는 것은 불가능하죠. 아무리 과학기술이 발달한들 내일 오후 3시 12분 서울시청 옥상의 기온을 정확히 아는 것은 먼 미래에도 어려우리라 생각합니다. 그렇기에 당연히 회귀 과정에서는 오차가 발생하게 됩니다. 아래의 그림을 보시면,
어떤 두 변수 간의 예상된 관계를 푸른색 직선으로, 실제 예측한 데이터를 붉은색 점으로 표현했습니다. 이렇게 예측 결과를 직선의 형태로 표현할 경우 선형 회귀라 하고, 여기서 예측치와 회귀 모델 사이의 오차는 붉은색 점과 푸른색 직선 사이의 수직방향(y축 방향) 거리입니다.
기계학습과정에서는 여러 번의 계산을 통해 오차를 측정하고, 이 오차를 줄이는 방향으로 모델이 계속 업데이트 됩니다. 회귀 모델이 데이터의 전체적인 경향성을 대표할 수 있을 때까지요.
그러나 오차를 계산할 때에도 데이터의 분포 특징을 고려해야 합니다.
가령 두 교실의 키(cm)를 비교하는 상황을 가정해봅시다.
반 | 학생1 | 학생2 | 학생3 | 학생4 |
---|---|---|---|---|
A | 170 | 174 | 168 | 176 |
B | 172 | 172 | 171 | 173 |
두 반의 평균 신장은 172cm로 동일합니다. 그러나 오차를 계산하는 상황에서 오차의 값을 그대로 사용하지 않고, 값들에 절댓값을 적용할 경우 두 반에서 측정한 오차는 다음과 같겠지요.
반 | 학생1 | 학생2 | 학생3 | 학생4 |
---|---|---|---|---|
A | 2 | 2 | 4 | 4 |
B | 0 | 0 | 1 | 1 |
이렇게 될 경우 "A 반이 평균에서 거리가 더 멀다"는 결론을 내리게 될 수 있기에 상황에 따라 오차를 선택하는 기준이 달라질 수 있습니다.
즉, 오차 함수란, 얼마만큼의 오차를 어떻게 계산할 지에 대한 다양한 접근법이라 보면 될 듯 합니다. 오차를 합리적으로 계산할 경우, 회귀 모델이 데이터를 잘 대표할 수 있는 셈이죠.
를 설명하기에 앞서 각 변수들이 무엇을 의미하는지 말하자면,
= 전체 데이터의 수
= 전체 데이터 중 임의의 값()
= 모델을 통해 예상된 값 / 평균
= 실제 데이터 값/관측치
= 오차
모든 오차의 제곱값에 대한 평균을 낸 지표입니다.
모든 오차에 절댓값을 취하여 평균을 낸 지표입니다.
MSE에 근호(Root)를 씌운 지표입니다
RMSE에 로그를 취한 지표입니다.
오차를 실제값으로 나눈 후 평균치를 구하여 백분율로 환산합니다(???).
설명이 조금 복잡하지만 천천히 의미를 따져보면
1. 오차를 실제값으로 나눔: 실제값에 비해 오차가 갖는 힘을 측정합니다. 값이 작을 수록 오차의 영향력이 작고, 모델이 좋다고 할 수 있죠.
2. 평균치를 구함: 말 그대로 수많은 오차/실제값들의 평균을 내는 과정입니다.
3. 백분율로 환산: [0, 1]의 범위로 표현된 값들을 백분율로 표현합니다. 직관적 표현을 위한 도구인 셈이죠.
나중에 시계열 데이터를 다룰 때 구체적으로 설명하도록 하겠습니다.