표와 그래프(7): 행렬로 푸는 최소자승 회귀모형

(2) 선형대수에 다소 익숙한 독자를 위한 설명

다중회귀분석에는 행렬(matrix) 계산이 필요하다. 단순회귀모형에 예측변수나 통제변수가 추가되면 회귀모형의 항(term)이 늘어나고 여러 개의 회귀계수를 추정해야 하기 때문이다. 정규방정식 도출과정에 필요한 값들을 아래와 같이 정의하고 시작하자.

   

잔차 차원의 열벡터, 회귀계수(절편 포함)    차원의 열벡터, 독립변수 차원의 행렬이다. 의 첫 열의 성분이 1인 것은 상수항을 표시하기 위함이다. 끝으로   차원의 열벡터이다.

행렬을 사용하면 잔차제곱합은 식 (1)과 같이 표현된다. 잔차제곱합은 벡터 의 전치행렬(행벡터)과 벡터 (열벡터)의 곱이다.

그런데, 이고, 이므로,

식 (2)를 식 (1)에 대입하면,

그런데 식 (3)에서  의 차원이 이므로 대칭행렬이다. 따라서 그것의 전치행렬인 는 그 자신과 같다. 그런데이므로 로 쓸 수있다.

최소자승법을 적용하려면 식 (3)을 에 관해 미분한 값을 0으로 만드는  값을 구한다.

식 (4)에서 는 가 대칭행렬이므로 이차형식(quatratic form)이다. 이차형식의 미분은 앞 전치 벡터 부분을 2로 바꾸어 주면 되므로  이다.

최소자승의 조건은 식 (5)로 간단히 정리된다.

식 (5)의 첫 항을 우변으로 넘겨서 다시 쓰면,

양변을 2로 나누면,

양변에 의 역행렬을 곱해주면(는 정방행렬이 아니므로 역행렬이 존재하지 않으므로, 의 역행렬을 곱해준다),

그러므로

식 (6)은 유명한(?) 회귀모형의 정규방정식이다. 그것은 최소자승법에 의한 회귀계수 추정값은 X의 대칭행렬(X의 전치행렬과 X 행렬의 곱)의 역행렬에 X의 전치행렬과 Y 벡터를 곱하면 구할 수 있음을 의미한다. 단순회귀모형를 가지고 보면, 식 (6)은  표와 그래프(4): 최소자승 회귀분석에서 나온 식 (7)과 (8)의 정규방정식을 행렬로 표현한 것이다. 그런데  행렬접근을 하면, 대수적 접근과 달리 독립변수가 몇 개든 회귀계수를 구하는 데 이 공식 하나면 충분하다.그것은 행렬이 주는 큰 혜택이다. 데이터를 가지고 이 행렬의 연산을 수행하면 회귀계수 값을 구할 수 있다.

예측변수가 3개 이상이 되면 대수를 사용해 회귀모형을 찾기가 무척 어렵다. 따라서 그 과정에 행렬이 사용되어야 한다.

그런데 회귀모형 계산 과정을 완전히 이해하지 못한다고 현실에서 다중회귀분석을 사용할 수 없는 것은 아니다. 다중회귀모형을 개념적으로 이해하는데 회귀계수의 도출 과정에 대한 이해가 꼭 필요한 것도 아니고, 회귀계수를 계산하는데도 그 과정이나 공식에 대한 이해가 꼭 필요한 것도 아니다. 회귀계수를 찾는 과정을 수학적으로 잘 이해하면 자신이 사용하는 통계기법의 전체를 이해하지 못해 가졌던 찝찝함을 떨쳐 버릴 수 있어 좋기는 하지만 말이다.

또한 행렬 접근은 독립변수의 갯수가 증가하고 표본의 크기가 커지면 부딪치게 되는 소위 ‘차원의 저주’를 이해하는데도 도움이 된다. 독립변수의 갯수가 증가하면 X 벡터의 차원이 증가하며, 표본의 크기가 크게 증가하면 방정식의 갯수(사례수와 같다)도 그만큼 많이 증가한다. 그렇게 되면 아래의 행렬은 엄청나게 커지게 된다.

독립변수(혹은 예측변수)의 갯수(p)가 1천개이고, 표본의 크기(n)가 3천만 개라고 상상해 보라. 1천개의 항을 가진 방정식 3천만 개를 가지고 해를 찾아야 하지 않겠는가. 그 계산은 고성능 PC조차도 크게 힘겹다. 때문에 빅데이터 분석에서 회귀 모형(알고리즘)이 인기가 좋지만 표본의 사례를 모두 써야하는 최소자승법 대신 일부 사례만 가지고도 적합선을 찾을 수 있는 경사하강법이 사용된다.

그렇다고 최소자승 회귀모형이 시대에 뒤떨어진 것이라고 말할 수는 없다. 아직도 그리고 앞으로도 오랫동안 많은 분야에서 최소자승 회귀모형이 사용될 것이다. 대학에서 그것을 공부할만한 가치가 충분하다고 생각된다.

9개 사례로 된 미니 표본을 가지고 행렬로 회귀계수를 구해 보자. 아래 그림을 클릭하면 사례가 담긴 엑셀 파일을 사용할 수 있다.

인구 1천명 당 흑인 수(B)와 하층 인구의 비율(LSTAT)을 가지고 미국의 도시 집값의 중간 가격(MEDV)을 예측하는 모형을 구해보는 사례이다.

1) 계산을 수행하기 전에 먼저 데이터셋에 상수 필드를 추가한다(붉은 색으로 된 필드이다). 절편 열을 독립변수 행렬에 추가하기 위해서이다.

2) 식 (6)을 적용하기 위해 독립변수 행렬 X의 전치행렬을 구한다. 전치한 결과가 들어갈 범위를 선택하고 =TRANSPOSE(A1:C10)를 친 다음 Cntl+Shift+Enter를 누른다.

3) 그렇게 해서 구한 X의 전치행렬과 행렬 X를 곱한다. 곱한 결과가 들어갈 범위를 선택하고, MMULT 함수를 사용하여 결과를 구한다.

4) 그 행렬의 역행렬을 구한다. 역행렬이 들어갈 범위를 선택하고, MINVERSE 함수를 사용하여 결과를 구한다.

5) 그 역행렬에 X의 전치행렬을 곱한다. 곱한 결과가 들어갈 범위를 선택하고, MMULT 함수를 사용하여 결과를 구한다.

6) 그렇게 구한 행렬에 Y 벡터를 곱한다. 들어갈 범위를 선택하고, MMULT 함수를 사용하여 결과를 구한다.

행렬을 이용하면 절편과 회귀계수들이 한번에 구해진다. LSTAT의 회귀계수는 -0.57688, B의 회귀계수는 -0.19531, Y 절편은 110.2711이다. 엑셀의 ‘데이터분석’ 애드인의 회귀분석 기능을 사용하면 동일한 결과를 얻을 수 있을 것이다.

현실에서 이러한 과정으로 회귀모형을 구할 가능성은 없다. 표본의 크기가 20~30만 되도 계산 과정이 너무 번잡해 진다. 정규방정식을 사용하면, 다중회귀모형의 회귀계수 값이 그러한 과정을 거쳐서 계산된다는 점을 이해하는 것으로 충분하다. (2019-12-07)

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.