표와 그래프(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)

추세선(Trend line)의 매력(2)

선형적합에 가장 널리 사용되는 방법은 OLS(Ordinary Least Sqaures, 최소자승법)이다. 간단히 말하자면, 독립변수의 각 값에서 직선에 의해 예측된 점으로부터 관측점까지의 거리를 제곱하여 더한 값을 최소화(최소자승의 의미)하는 추세선이다.

위 그림은 어떤 음향기기 대리점에서 광고횟수에 따른 음향기기 판매액의 변동을 기록한 것이다. 왼편 상단의 표를 보면, 첫 주에는 2회 광고를 냈고, 50달러의 매출을 올렸다. 둘째 주에는 5회 광고를 냈고, 57달러의 매출을 올렸다. 3주차에는 1회 광고에 41달러, 4주차에는 3회 광고에 54달러의 매출을 올렸다.

위 그림의 오른편에는 이 데이터가 그래프로 표현되어 있다. 이 그래프는 주차는 무시하고 광고횟수와 매출액의 관계를 보여주고 있다. 그래프를 보면 1회 광고를 냈을 때 41달러 매출을 올리기도 하고 38달러 매출을 올리기도 했다. 2회 광고를 냈을 때 50달러를 올리기도 하고 46달러를 올리기도 했다. 3회 광고를 냈을 때는 54달러를 올리기도 했고, 48달러를 올리기도 했다.

엑셀에서 이 그래프에 추세선을 그렸더니 파란색 점선이 나타났다. 수식으로 표현하니  이다. 그냥 눈으로 봐도 이 추세선은 광고횟수(x)와 매출액(y) 사이의 관계를 잘 대표하는 것 같다.

이 추세선으로 예측된 y 값을 구하려면, 위 식에 1, 2, 3, 4, 5를 각각 넣으면 된다. 아래는 그렇게 해서 구한 예측된 매출액, 그리고 그것과 실제 매출액과의 차이인 오차가 제시되어 있다. 그 오차를 제곱하여 더한 값이 오차제곱의 합 75.95(달러)이다.

이 값은 ‘최소자승’의 정의상 자승값 중 최소이기 때문에 다른 어떤 직선을 그려도 오차제곱의 합이 이보다 작을 수는 없다. 이 추세선은 회귀선(regression line)이라고도 불리는데 구하는 과정은 다음과 같다.

오차(error)란, 주어진  값에서 실제로 관찰된  값과,  라는 방정식(직선의 식)을 통해서 추정된 의 값(), 즉,

과의 차이()를 말한다.

아래 그림에서 별로 표시된 것은 관찰값이고 회귀-추세선의 예측값으로부터 거리–중괄호로 표시된 부분–가 편차(오차, deviation, error)이다.

이 오차의 제곱을 모두 더하여 얻어지는 수, 즉, 오차제곱의 합(sum of squared errors, SSE),

를 최소화한다는 기준을 만족시키는 식 (1)의  (절편)와 (기울기)을 구하는 것이다.

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

이 식을 최소화하는 와 를 구하기 위해서는 두 미지수에 대해 편미분을 하고 각각을 0으로 놓고 풀면 된다.

먼저 절편 에 대해 식 (3)을 편미분해 보자.

이 식의 양변을 -2로 나누고 시그마에 관해 정리하면,

여기서 이므로, 그것을 좌변에 놓고, 나머지 항을 우변으로 이항한다.

양변을 으로 나누면,

여기서 는 의 평균 이고, 는 의 평균 이므로, 결국

가 된다.

다음 기울기 에 대해 편미분 하자.

이 식의 양변을 -2로 나누고 괄호를 풀면,

식 (6)을 식 (7)에 대입하고 정리하면 약간의 복잡한 계산을 거쳐서 아래 식을 얻는다.

데이터를 가지면 (8)을 풀 수 있고, 거기서 얻은 기울기 의 값을 (6)에 대입하고 데이터로부터 X의 평균과 Y의 평균을 구해서 대입하면 절편 를 구할 수 있다.

도출 과정에 합성함수의 편미분, 시그마의 편미분이 포함되어 있어 다소 복잡한 수학적 표현이 되었다. 다행히 그 도출과정을 모두 이해하지 못한다고 하더라도 엑셀에서 데이터를 가지고 좌표상에 분포를 표시한 후에 아래 그림처럼 추세선 옵션 창에서 선형 추세선과 ‘수식을 차트에 표시하기’를 선택하면 그것을 손쉽게 구할 수 있다. 만약 선형(직선) 추세선이 데이터를 적절히 요약하지 못한다고 생각되면, 지수, 로그, 다항식, 이동평균 등 다양한 모습의 추세선을 적합할 수 있다.

현실에서 추세선은 주식, 암호화폐, 금, 선물 등의 투자에 널리 활용된다. 그 때 추세선은 해당 상품의 가격 변동의 방향을 의미한다. 근본은 통계학에서의 추세선과 다르지 않지만 개념과 용어가 다르기 때문에 다음 포스팅에서 간략히 소개하겠다.