brunch

You can make anything
by writing

C.S.Lewis

by gimmesilver Apr 10. 2020

회귀 분석의 이해 #3

최소제곱법 

(1편 보기)

(2편 보기)


    본편에 들어가기에 앞서 지금까지의 내용을 정리해 보겠습니다.


    아파트 가격, 직장인 연봉, 대학민국 성인 남녀의 키 등과 같이 어떤 집단에 대한 수치 정보가 있을 때 우리는 보통 전체를 대표하는 값으로 평균을 이용합니다. 그런데 1편에서 예시로 들었던 아파트 가격 사례에서 알 수 있듯이 그냥 전체에 대한 평균을 구할 경우 각 개체가 가진 정보를 잘 대표하지 못할 수 있습니다. 때문에 좀 더 정확한 정보를 제공하기 위해선 전체 집단을 비슷한 조건을 가진 개체들끼리 묶은 후 각 조건별로 평균을 구하는 것이 더 좋을 것입니다. 이를 테면 지역별, 면적별로 아파트들을 묶은 후 각 경우에 대해 평균을 구하는 것이죠. 이런 것을 조건부 평균이라고 부릅니다.


    회귀 분석은 조건부 평균을 직접적으로 구하는 대신 각 조건들의 평균적인 영향력을 이용해서, 아래와 같은 수식으로 조건부 평균을 표현하는 방법입니다 (이것을 회귀식 혹은 회귀모델이라고 부릅니다).


                        회귀식 = 영향력1 * 조건1 + 영향력2 * 조건2 + 영향력3 * 조건3 + ...


     이렇게 평균을 표현하면 1) 모든 조건별 평균값을 일일이 나열할 필요가 없고, 2) 각 조건이 평균에 미치는 영향을 쉽게 확인할 수 있으며, 3) 지금 당장은 관측되지 않은 조건에 대해서도 예상되는 평균값을 추정할 수 있는 장점이 있습니다. 


    한편, 회귀 분석을 할 때는 다음과 같은 점들을 주의해야 합니다.

회귀 분석의 예측치와 실측치 사이의 차이인 잔차의 분포가 최대한 정규 분포에 가까워야 합니다.

잔차는 조건에 따라 편향되지 않고 분산이 일정해야 합니다.

특정 조건에서 잔차값이 크게 튀는 아웃라이어가 없어야 합니다. 

    이런 점을 만족하지 못하더라도 회귀 분석이 불가능한 것은 아니지만, 이렇게 구한 평균값은 전체 데이터를 잘 대표하는 값이 아닐 가능성이 커서 그 결과를 신뢰하기가 힘듭니다.


    자 그럼 지금까지 회귀 분석의 기본적인 개념에 대해 살펴봤으니 이제는 회귀 모형을 구하는 방법에 대해 한번 살펴보도록 하죠. 

    위에서 언급했듯이 회귀 모형은 각 조건 변수와 조건이 평균에 미치는 영향력을 나타내는 가중치를 곱한 값들의 합으로 표현됩니다. 이 가중치값들을 '회귀 계수 (regression coefficient)' 라고 부르는데, 우리가 회귀 분석을 한다는 것은 쉽게 말해 주어진 데이터를 이용해서 회귀 계수를 추정하는 작업이라고 말할 수 있습니다. 회귀 계수를 추정하고 나면 아래 그림과 같이 주어진 데이터들의 평균을 가로지르는 선을 그릴 수 있죠. 그럼 이 회귀 계수(직선의 기울기)는 어떻게 구할 수 있을까요?


    여러 가지 방법이 가능하겠지만 일반적으로 회귀 분석에서 사용하는 방법은 '최소제곱법 (Least Square Method)' 입니다. 이런 이름이 붙은 이유는 이 기법이 잔차의 '제곱의 합이 최소'가 되는 직선 (엄밀히 말하면 직선을 그리는 함수) 을 찾는 방법이기 때문입니다. '잔차의 제곱의 합'을 수식으로 표현하면 다음과 같습니다. 

    이 수식에서 가장 왼쪽에 있는 기호(\sigma)는 '시그마' 라고 부르는데 '이 기호의 오른쪽에 있는 값들을 모두 더해라' 라는 의미입니다.  그리고 y_i 는 평균을 구하는 대상의 실측값들을 의미하고 f(x_i) 는 회귀식을 통해 구한 조건별 평균값들을 의미합니다. 즉, y_i - f(x_i) 는 앞서 얘기했던 잔차를 의미하죠. 결국 위 식을 말로 표현하면 '각각의 잔차값을 먼저 제곱한 후 그 값들을 모두 합한 값' 입니다.  


    그런데 위 수식과 비슷한 걸 어디서 본 적 있지 않나요? 위 수식은 우리가 학교 다닐 때 배웠던 분산 구하는 공식과 매우 비슷하게 생겼습니다. 분산을 구하는 공식은 아래와 같은데, 보다시피 앞에 1/n 을 곱한 것을 제외하면 '잔차의 제곱의 합'과 생김새가 똑같습니다.

    분산은 '각각의 y값들이 평균(u)에서 얼마나 멀리 퍼져 있는지를 측정한 값'입니다. 이와 비슷하게 '잔차의 제곱의 합'은 '각각의 y값들이 f(x_i)에서 얼마나 멀리 퍼져 있는지를 측정한 값'이라고 볼 수 있습니다. 그런데 f(x_i)는 조건부 평균이라고 했었죠? 따라서 이런 관점에서 볼 때 잔차의 제곱의 합이 의미하는 것은 'y에 대한 조건부 분산' 이라고 얘기할 수 있습니다. 결국 최소제곱법을 통해 구하게 되는 직선(즉, 회귀식)은 이 조건부 분산이 최소가 되는 값인 것이죠. 


    그런데 혹시 '왜 분산을 구할 때 평균과의 차이에 제곱을 하는 것일까?' 라는 의문을 가져보신 적 있으신가요? 일단 그냥 평균과의 차이값을 더하게 되면 평균보다 큰 값과 작은 값들의 차이가 모두 상쇄되어 0이 되기 때문에 이렇게 하면 안된다는 것은 쉽게 이해할 수 있습니다. 그러면 각 차이값에 절대값을 취한 후 더하면 어떨까요? 이렇게 절대값을 더하게 되면 0으로 상쇄되는 일이 없을 뿐더러, 평균과의 차이를 측정하려는 원래 의도에 더 적합해 보입니다. 심지어 더 간편해 보이기도 합니다. 그런데 왜 분산을 구할 때 굳이 평균과의 차이에 제곱을 해서 더하는 복잡한 방법을 사용하는 것일까요? 

    그 이유는 '제곱을 해서 합한 값을 최소로 하는 값'이 평균이기 때문입니다. 무슨 말인고 하니 분산을 구하는 수식에서 u 에 임의의 수를 넣고 수식을 계산하면 여러 가지 값이 나올 수 있는데 그렇게 나올 수 있는 모든 경우 중에 가장 작은 값이 나오는 경우는 u가 'y의 평균'일 때 라는 뜻입니다. 

임의의 수치들을 이용해서 테스트를 해보면 평균이 분산을 최소로 하는 값임을 알 수 있습니다.


    정리하자면, 분산을 통해 표현하고 싶은 것은 '각각의 값들과 대표값 사이의 편차를 제곱한 값'의 평균인데, 이 값을 가장 최소로 하는 대표값은 평균(각각의 값들을 합한 후 갯수만큼 나눈 값)인 것이죠. 이건 마치 동전의 양면 혹은 닭과 달걀의 관계와 비슷합니다. 이렇게 분산을 구할 때 제곱을 하는 이유는 평균과 필연적인 관계가 있습니다.  

    마찬가지로 회귀 분석을 할 때 잔차의 단순합이나 절대값의 합이 아닌 제곱의 합을 최소로 하는 식을 찾는 '최소제곱법'을 사용하는 이유는 우리가 구하고자 하는 것이 '조건부 평균' 이기 때문입니다.  


    만약 제곱을 하지 않고 절대값을 취해서 분산을 구하면 어떻게 될까요? 사실 이렇게 절대값을 이용해서 데이터 사이의 편차를 구하는 방법도 있습니다. 절대값을 이용해서 편차를 구한 값을 '평균 절대 편차 (Mean Absolute Deviation, MAD)' 라고 부릅니다 (반면, 앞서 언급했던 분산에 제곱근을 취한 값은 '표준 편차 (Standard Deviation, STD)' 라고 합니다). 그런데 이렇게 하면 '평균 절대 편차'를 최소로 하는 값은 평균이 아니기 때문에 평균을 대표값이라고 부르기가 뭔가 꺼림직합니다. 

    이 때에는 평균과의 차이 대신 '중간값 (median)'과의 차이을 구하는 것이 더 적절합니다. 즉, 중간값은 전체 데이터들과 편차의 절대값이 평균적으로 가장 작은 대표값입니다.  

평균 절대 편차를 구하게 되면 평균(빨간색) 보다는 중간값(파란색)이 더 최소값을 갖습니다.


    그럼 회귀 분석을 할 때 최소제곱법 대신 잔차의 절대값의 합이 최소가 되게 하는 방법 (최소 절대 편차법, Least Absolute Deviation) 을 써서 회귀식을 구하면 어떻게 될까요? 잔차의 제곱의 합이 최소가 되는 회귀식이 조건부 평균을 나타냈듯이 잔차의 절대값의 합이 최소가 되게 하는 회귀식은 조건부 중간값을 의미하게 됩니다. 

    그리고 실제로 이렇게 회귀식을 구하는 방법이 있는데 이것을 '로버스트 회귀 (Robust Regression)' 라고 부릅니다. 왜 이름에 '로버스트 (robust, 강건한)' 라는 이름이 붙었냐하면 중간값은 평균에 비해 아웃라이어에 영향을 덜 받는 '강건한' 특성이 있기 때문입니다. 사실 위 그림에서도 제가 평균과 중간값의 차이를 두드러지게 보여주기 위해 '평균 절대 편차'를 구하는 데이터에 일부러 아웃라이어 값을 넣었습니다 (만약 아웃라이어가 없었다면 두 값의 차이는 그리 크지 않았을 겁니다). 


    '그럼 애초에 그냥 평균 대신 중간값을 사용하면 안되나?' 라는 의문이 들 수 있습니다. 사실 중간값은 정규 분포 형태의 데이터에서는 평균과 거의 차이가 없을 뿐더러 아웃라이어에도 크게 영향을 받지 않는 좋은 성질을 갖고 있기 때문에 평균보다 더 좋은 대표값이라고 생각할 수 있습니다. 그럼에도 불구하고 우리가 중간값 대신 평균을 더 선호하는 이유는 크게 두 가지 이유가 있습니다. 

    첫째, 평균을 구하기가 훨씬 더 쉽습니다. 중간값을 구하기 위해서는 전체 데이터를 정렬한 후 순위를 매겨야지 구할 수 있는 반면, 평균은 전체 데이터의 개수와 합만 알면 쉽게 구할 수 있죠. 회귀 분석에서도 마찬가지입니다. 최소제곱법을 사용해서 회귀 계수를 구할 때에는 여러 가지 수학적인 성질을 활용하면 아주 쉽게 계산할 수 있는 반면, 최소절대편차법을 이용해서 회귀 계수를 구하는 것은 최소제곱법에 비해 더 어렵습니다. 그래서 꼭 중간값을 구해야할 상황이 아니라면 그냥 평균을 구하는 것이죠.

    둘째, 평균은 통계적으로 여러 가지 좋은 특징을 갖고 있습니다. 이중에서 특히, '중심 극한 정리 (Central Limit Theorem, CLT)'라고 부르는 것이 있는데, 이 특성을 이용하면 적은 수의 샘플 데이터만으로도 모집단의 특징을 비교적 정확하게 추정할 수 있죠 (좀 더 자세한 내용은 차후에 설명하겠습니다).

    어쨌든 이렇게 평균이 갖고 있는 장점이 많기 때문에 우리는 중간값보다 평균을 대표값으로 더 많이 사용하고 있습니다. 


    정리하자면, 보통 회귀 분석을 할 때 '최소제곱법'을 사용해서 회귀 계수를 구하는데 그 이유는 우리가 구하려는 것이 조건부 평균이기 때문입니다. 그런데 보통 평균은 아웃라이어에 취약한 단점이 있죠. 이런 문제를 해결하기 위해선 아웃라이어를 무시하는 방법도 있지만, 평균 대신 중간값을 대표값으로 정하는 방법도 있습니다. 회귀 분석에서도 역시 조건부 평균 대신 조건부 중간값을 구함으로써 이런 아웃라이어 문제를 해소할 수 있는데 이럴 때에는 '최소제곱법' 대신 '최소절대편차법'을 사용해서 회귀 모형을 만들면 됩니다.


    지금까지 계속 회귀 분석은 조건부 평균을 구하는 방법이라고 설명해 놓고서 갑자기 조건부 중간값을 구하는 방법도 있다고 하니 뭔가 배신감이 들지도 모르겠네요. 그런데 이건 이론이나 기술이 발전하면서 개념이 확장되는 과정에 생긴 자연스러운 현상이라고 이해하시면 될 것 같습니다. 사실 더 나아가면 앞서 2편에서 소개했던, 회귀 분석을 할 때 고려해야 하는 여러 가지 제약 사항들을 극복하기 위한 다양한 회귀 분석 기법들이 있습니다. 이런 회귀 분석 기법이나 모형 중에는 더 이상 '조건부 평균' 이라고 부르기 어려운 여러 가지 확장된 개념들이 등장합니다. 그렇다 보니 최초에 설명했던 회귀 분석 방법은 갖가지 기법이나 모형을 통칭하는 '회귀' 의 개념에서 아주 작은 부분만 차지하게 되었습니다. 

    그래서 모든 관련 기법을 통칭하는 의미에서의 '회귀'와 최초에 언급했던 회귀 분석 기법을 구분하기 위해서, 처음에 소개한 회귀 분석 기법을 '(특별한 기교를 더하지 않고) 평범한 최소 제곱법을 통해 조건부 평균을 구하는 회귀'라는 의미에서 'Ordinary Least Sqaures (OLS) regression' 이라고 부릅니다. 

    그 외에 여러 가지 회귀 모형에 대해 궁금하신 분들은 '회귀 모델의 종류와 특징' 을 참고하시기 바랍니다. 


(4편에서 계속)

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