<최소제곱법 (Least Square Method)>
1. 당신은 이미 알고 있다.
가끔은 내가 가지고 있지 않은 정보가 필요할 때가 있다. 예를 들어 밥통을 새로 바꾼 경우를 생각해보자. 새 밥통에는 어느 정도 물을 맞춰야 윤기가 좔좔 흐르는 맛난 밥이 되는지 아직 경험이 없다. 그러니 우리는 대충 눈대중으로 밥 짓기를 시도해볼 수 밖에다. 어제 밥을 할 때 물을 200ml 넣었더니 밥이 질었다. 그래서 오늘은 100 ml을 넣고 밥을 해보니 그만 된밥이 되고 말았다. 그럼 어느 정도 물을 넣어야 윤기가 좔좔 흐르는 맛난 밥이 될지 우리는 경험적으로 대충 짐작을 해볼 수 있다. 분명히 100ml보다는 많고 200ml보다는 적은 양이될 것이다. 그럼 이제 우리가 할 일은? 150ml 정도 물을 넣고 다시 시도를 해보는 것이다. 완벽한 밥맛이 아닐 수는 있지만 어제나 오늘보다는 더 맛난 밥을 먹을 것이라는 것을 예상해볼 수 있다.
여기서 150ml를 찾아가는 과정이 보간이다. 두 데이터 사이의 값을 짐작해냈으니 내삽(interpolation)을 한 것이다. 만약 100ml 해보니까 된밥이고 125ml 해봤더니 어제 보다는 좀 나으니 150ml를 선택한 경우에는 이미 가진 두 가지 정보 100ml, 125ml 너머의 값을 짐작했으므로 외삽(extrapolation)을 하는 것이다.
이렇게 우리는 이미 경험적으로 이미 보간과 회귀를 하고 있는데 여러분이 찾고 있는 것은 이것을 좀 더 구체적으로 정량화해서 계산을 해보는 것뿐이다. 그럼 보간과 회귀의 차이는 무엇일까?
2. 보간과 회귀의 차이
보간(interpolation)과 회귀(regression)는 엄밀한 의미는 차이가 있지만 그 의미를 혼용하여 사용하는 경우가 많다. 하지만 그 의미의 차이를 정확하게 알고 있지 않으면 우리의 목적에 부합하게 사용하지 못하게 될 수가 있다. 보간을 하는 것이 좋을 때가 있고 회귀를 사용하는 것이 좋을 때가 있기 때문이다. 그러니 간단하게 그 차이에 대해 알아보자.
보간은 우리가 알고 있는 정보를 참값이라고 믿고 그 주위의 값을 짐작해 보는 것이다. 가장 쉬운 방법은 두 점 사이에 직선을 그어서 직선의 방정식을 만들고 원하는 값을 계산하는 것이다. 이것을 선형 보간법(linear interpolation)이라고 한다.
회귀는 우리가 알고 있는 정보가 정확한 값이 아닐 수 있다고 생각하는 데서 출발한다. 우리가 취급하는 데이터 세트가 오차를 포함하고 있다면 단순히 직선을 그어서는 그럴 듯한 값을 짐작해 내기 어려울 수 있다.
다시 밥 짓기의 예로 돌아가 보자. 사실 밥 짓기의 예는 보간보다는 회귀가 더 잘 어울린다. 왜냐하면 오늘 교수님께 꾸지람을 듣고 오면 밥맛이 떨어질 수 있기 때문이다. 그러니까 오늘 본 밥맛의 기준이 어제랑 조금 다를 수가 있다는 것이다. 따라서 밥을 몇 번 더 지어보면 실제로는 그림 2처럼 그려질 가능성이 크다. 만약 그림 2의 측정점을 직선으로 잇는다면 일관된 선형 그래프가 아닌 꺾은선 그래프가 될 것이다. 그럼 우리는 이 데이터가 잘 못 되었다고 생각하고 포기해야 할까? 아니다. 이럴 때는 회귀 분석을 이용하면 그 추세를 확인할 수 있다. 그림 2에 그려진 직선이 바로 그 추세선이다. 이것이 선형 회귀(linear regression)이다.
3. 언제 보간을 사용하고 언제 회귀를 사용해야 할까
그림1과 그림 2에 그려진 직선을 어떤 현상을 표현하는 메타모델(metamodel)이라고 한다. 그냥 모델이 아니고 메타모델인 이유는 더 엄밀한 지배 방정식이 있겠지만 그건 모르겠고 대충 우리가 설정한 직선이라는 모델로 단순화하여 만들어본 것이기 때문이다. 그러니까 어떤 모델에 대한 모델이다. 다른 말로는 대리 모델(surrogation model)이라고도 하고 반응 표면 모델(response surface model)이라고도 한다. 다 필요 없고 그냥 그럴듯하게 만든 모델이니까 근사 모델(approximation model)이라고 하면 맞다. 경우에 따라서 직선보다 이차함수가 잘 맞을 수도 있고 지수함수가 잘 맞을 수도 있다. 이 모델을 얼마나 잘 만드느냐에 따라 우리는 미지의 상태를 더 정확하게 예측할 수 있게 되는 것이다.
그림 1과 그림 2를 잘 관찰해 보자. 그림 1의 직선은 데이터의 점을 정확하게 지나가고 그림 2의 직선은 지나가지 않는 것을 알 수 있다. 왜냐하면 그림 1에서는 각 데이터를 참값으로 생각해서 모델이 그 참값을 포함하도록 했고 그림 2에서는 오차를 포함한 값으로 생각해서 그 점 주위 어딘가에 참값이 있을 것이라고 추정해 만든 모델이기 때문이다.
중요한 것은 오차를 인정하느냐 마느냐이다. 보간은 오차가 없거나 의미 없다고 생각할 때 사용한다. 다시 말해 내가 가지고 있는 정보가 있는 그대로 참값이므로 이때에는 모델이 참값을 포함하는 편이 나을 것이다. 반면에 내가 가진 정보에 오차가 있을 수 있다면 굳이 그 데이터를 정확하게 표현하는 모델보다 전체적인 추세를 잘 나타내는 것이 좋을 수 있다.
컴퓨터 시뮬레이션을 이용해 세 가지 입력에 대해 계산한 결과를 얻었다고 생각해보자. 만약 이미 가진 결과 외에 다른 입력에 대한 결과를 얻고자 한다면 굳이 시간이 오래 걸리는 시뮬레이션을 매번 돌리지 않고 보간법을 이용해서 결과를 추정해볼 수 있다. 컴퓨터 시뮬레이션은 10번을 돌려도 100번을 돌려도 같은 입력에 대해 같은 값을 줄 것이기 때문에 그 결과로 만드는 모델에는 오차가 의미 없다고 생각된다. 반면 직접 시험을 해서 측정하는 경우에는 다르다. 교수님께 꾸지람을 들어서 마음이 싱숭생숭해 오차가 크게 나올 수도 있고 그날따라 센서가 어제보다 조금 오프셋 된 결과를 줄 수도 있다. 이런 센서 자체의 오차 뿐만 아니라 시험 환경의 잡음이 반영될 수 있기 때문에 이런 경우에는 회귀 모델을 사용하는 것이 바람직하다.
4. 보간 모델과 회귀 모델의 예
위에서는 간단하게 선형의 예를 보였지만 실제는 비선형인 경우가 많다. 단순히 선형으로 데이터 사이사이를 보간을 하는 모델이 가장 간편하지만 주위의 경향을 고려해서 보간하거나 회귀 모델을 만드는 방법들도 있다. 보간 모델로는 Radial basis function, Kriging interpolation 방법 등을 많이 사용한다. 특히 비선형 문제를 취급할 때 Kriging interpolation을 사용하면 좋은데 전체적인 추세 모델을 만들고 최대우도추정(Maximum likelihood)을 이용해 얻은 국부적인 편차를 더해 데이터를 반드시 지나도록 맞추는 것이다. 그렇지만 시간도 오래 걸리고 쉬운 방법은 아니다.
보통 회귀 모델을 사용해야 하는 문제들이 더 많을 것이다. 회귀 모델은 주로 최소제곱법(Least square method)을 이용한 다항식 근사(Polynomial regression)를 가장 많이 쓰고 국부적인 맞춤을 위해 방법을 이리저리 수정한 방법인 가중최소제곱법(Weighted least square method), 이동최소제곱법(Moving least square method) 등을 적용한다.
대체로 데이터의 비선형성이 아주 크지 않다면 회귀 모델의 차수를 높여서 데이터에 더 근접하게 만들면 보간 모델과 얼추 비슷하게 된다. 실무에서는 보간 모델을 만드는 것보다 그냥 회귀 모델을 만들어서 쓰는 것이 훨씬 편하기 때문에 대부분 크게 신경 쓰지 않고 회귀 모델을 만들어 쓰는 경우가 많다.
<최소제곱법 (Least Square Method)>
최근댓글