[개발자를 위한 실전 선형대수학] 10.1 일반 선형 모델, 10.2 GLM 풀이, 10.3 GLM의 간단한 예, 10.4 QR 분해를 통한 최소제곱법

[chapter10] 일반 선형 모델 및 최소제곱법 : 우주를 이해하기 위한 방법

1. 일반 선형 모델

통계 모델은 예측변수(독립변수, independent variable)를 관측값(종속변수, dependent variable)과 연관시키는 방정식의 집합이다.

일반 선형 모델은 General Linear Model로, GLM이라 부른다.

용어는 아래처럼 정리할 수 있다.

선형대수학 통계 설명
$Ax = b$ $X\beta =y$ 일반 선형 모델(GLM)
A X 설계 행렬(열 = 독립변수, 예측변수, 희귀변수)
x $\beta $ 희귀 계수 또는 베타 매개변수
b y 종속변수, 결과 측정값, 데이터

구축

GLM을 구축하는 과정은 아래와 같다.

  • 독립변수와 종속변수를 연관시킨 방정식을 정의한다
  • 관찰된 데이터를 방정식에 대입한다
  • 일련의 방정식을 행렬 방정식으로 변환한다.
  • 해당 방정식을 푼다.

예를 들어, 개인의 체중과 부모의 키를 기반으로 성인 키를 예측하는 모델이 있다. 방정식은 아래와 같다.

$$ y = \beta_0 + \beta_1w + \beta_2h + \epsilon  $$

y는 개인의 키, w는 개인의 체중, h는 부모의 키(어머니, 아버지의 평균)이다.

$\epsilon$은 오차 항(잔차라고도 한다)으로, 체중과 부모의 키가 개인의 키를 완전히 결정한다고 할 수 없기 때문에 존재한다.

모델이 설명하지 못하는 무수한 요인이 있으며, 체중과 부모의 키에 기인하지 않는 분산이 이 오차 항에 반영된다.

 

아직 각 변수가 얼마나 중요한지 알 수 없으므로 $\beta$항을 입력한다.

$\beta$ 항은 체중과 부모의 키를 어떻게 결합해서 개인의 키를 예측할지를 정하는 계수 또는 가중치이다.

즉, $\beta$가 가중치인 선형 가중 결합이다.

$\beta_0$을 절편(상수)이라고 한다. 이 절편 항은 모두 1로 이루어진 벡터이다. 절편항이 없으면 최적의 선은 강제로 원점을 통과하게 된다.

 

이제 관측된 데이터를 방정식에 대입한다.

책 213p

이 데이터를 통계 모델에 대입하려면 방정식을 4번 복제하고, 매번 변수 y,w,h를 측정값으로 대체해야 한다.

지금 $\epsilon$항은 생략한다.

책 213p

이제 이 방정식을 행렬 방정식으로 변환한다. 이 방정식은 $X\beta = y $로 간결하게 표현될 수 있다.

책 214p

풀이

이제 미지 계수 $\beta$를 구하려면 방정식의 양변에 설계 행렬인 X의 왼쪽 역행렬을 곱하면 된다.

책 214p

여기서 그냥 $X^{-1}$을 안쓰는 이유는, 회귀 문제에서 X는 보통 정사각 + 가역이 아니기 때문이다.

정사각 + 가역이 아닌 행렬이므로 역행렬이 존재하지 않고, 따라서 가장 그럴듯한 역행렬 역할을 하는 것을 곱하는 것이다.

특히 마지막 방정식은 암기가 될 정도로 익혀야 한다.

$$ \beta = (X^TX)^{-1}X^Ty $$

이 방정식은 최소제곱법(least squares solution)이라고 불리며 응용 선형대수학에서 가장 중요한 수학 공식 중 하나이다.

아래처럼 다른 문자가 표시되거나 추가되기도 한다.

$$ b = (H^TWH + \lambda L^TL)^{-1}H^Tx $$

왼쪽 역을 이용한 최소제곱법은 파이썬으로 쉽게 변환할 수 있다.(아래 방법이 수치적으로 가장 안정된 방법은 아니다)

X_leftinv = np.linalg.inv(X.T @ X) @ X.T
beta = X_leftinv @ y

해법의 정확성

$X\beta = y$ 방정식은 y가 설계 행렬 X의 열공간에 있을 때 정확히 풀 수 있다. 

하지만 데이터 벡터가 통계 모델의 열공간에 있다는 것은 대부분 보장되지 않는다.

실제 데이터에는 노이즈와 샘플링 변동성이 포함되어 있으며, 모델은 모든 변동성을 설명하지 못하는 단순화된 모델이기 때문이다.

이 난제를 해결하기 위해서는 모델 예측 데이터와 관측 데이터 간의 불일치를 허용하도록 GLM 방정식을 수정해야 한다.

책 216p

첫 번째 방정식은 $\epsilon$ 가 설계 행렬의 열공간에 적합하도록 데이터 벡터에 추가하는 잔차, 즉 오차 항이라는 것이다.

두 번째 방정식은 잔차 항이 데이터에 완벽하게 적합하도록 설계 행렬을 조정하는 것이다.

세 번째 방정식은 잔차를 모델 예측 데이터와 관측 데이터의 차이로 정의한다는 것이다.

 

요점은 관측된 데이터가 회귀변수가 생성하는 부분공간 내에 있는 경우가 거의 없다는 것이다.

따라서 GLM의 목표는 관찰된 데이터에 최대한 근접하는 회귀변수의 선형 결합을 찾는 것이다.

기하학적 관점

설계 행렬의 열공간인 C(X)이 $R^M$의 부분공간이라고 가정하면, 통계 모델에는 독립변수(열)보다 관측값(행)이 더 많은 경향이 있기 때문에 일반적으로 매우 저차원의 부분공간이다.(N < M)

여기서 문제는 벡터 y가 설계 행렬의 열공간에 있는지 여부와, 그렇지 않다면 설계 행렬의 열공간 내부에서 데이터 벡터에 최대한 가까운 좌표가 무엇인가?의 두 가지 이다.

첫 번째 문제의 답은 '아니오'이나, 두 번째 질문은 애매하다.

책 217p

그림을 보면 $X\beta$가 $\epsilon$만큼의 오차를 가지고 y와 떨어져있는 것을 볼 수 있다.

따라서 우리의 목적은 데이터 벡터 y와의 거리를 최소화하는 X의 열에 가중치를 부여하는 계수 $\beta$의 집합을 찾는 것이다. 투영 벡터는 $\epsilon$이라 부른다. 

벡터 $\epsilon$과 계수 $\beta$를 구하기 위해서는 직교벡터 투영을 사용한다. 

여기서 핵심은 y와 X 사이의 최단 거리는 X와 직각으로 만나는 투영 벡터 $y - X\beta$가 된다.

즉, 열공간 C(X)와 y 사이의 최단 거리 = 직교 이므로, 그 투영벡터가 $\epsilon$이 되고, 따라서 $\epsilon$은 C(X)와 직교한다. 즉 아래와 같다.

$$ \epsilon = X\beta - y $$

방정식을 풀면 아까 그 방정식이 나온다.

책 218p

 

최소제곱법

최소제곱법에서 '제곱'은 예측된 데이터와 관측된 데이터 간의 제곱 오차를 나타낸다.

예측된 i번째 데이터 점마다 오차 항이 있고, 이 오차 항은 $\epsilon_i = X_i\beta - y_i$로 정의된다.

이 때 각 데이터 점은 동일한 계수 집합, 즉 설계 행렬의 독립변수를 결합할 때 동일한 가중치를 사용하여 예측된다.

따라서 아래 식처럼 모든 오차를 하나의 벡터에 담을 수 있다.

$$ \epsilon = X\beta - y $$

모델이 데이터에 잘 적합하면 오차가 작아지기 때문에, 모델 적합의 목적은 $\epsilon$의 원소를 최소화하는 $\beta$의 원소를 선택하는 것이라 말할 수 있다.

하지만 오차를 최소화하는 방식만 사용하면 모델이 음의 무한대를 향한 값을 예측하게 되므로, 예측 오차 자체의 양/음에 관계없이 데이터 y에 대한 기하학적 제곱 거리에 해당하는 제곱 오차를 최소화한다.

이는 오차의 제곱 노름을 최소화하는 것과 같으므로 아래와 같은 식이 된다.

$$  \left\| e\right\|^2 = \left\| X\beta - y\right\|^2 $$

이 식을 최적화하기 위해 미분을 0으로 설정하고 미적분과 대수를 적용하면 아래와 같은 과정의 식이 된다.

책 219p

2. QR 분해를 통한 최소제곱법

왼쪽 역 방식은 일부에 대해 행렬 역행렬을 계산해야 하기 때문에 수치적으로 불안정할 수 있다.

또 $X^TX$, 행렬에 전치를 곱하면 노름 및 조건수와 같은 속성에 영향을 미친다.

여기서 QR 분해는 최소제곱 문제를 더 안정적으로 풀 수 있는 방법을 제공한다.

책 224p

여기서 R은 상삼각 행렬이므로 N행만 0이 아니고 행 N+1 부터 M까지는 결과에 아무런 영향을 주지 않는다. 

따라서 이러한 행은 R과 $Q^Ty$에서 제거할 수 있다.

다음으로 행 교환을 사용해 수치 안정성이 올라갈 수 있다.

이 방정식의 가장 큰 장점은 행렬이 상삼각 행렬이므로 역치환(마지막행부터 대입해서 해 구하기)을 통해 해를 구할 수 있으므로 R의 역을 구할 필요가 없다는 것이다.

계수 행렬을 상수로 증상하고 행을 축소해 RREF를 구한 다음 증강된 행렬의 마지막 열에서 해를 추출하는 방식이다.

이처럼 QR 분해는 $X^TX$를 제곱하지 않고 또 명시적으로 행렬의 역을 계산하지 않고도 최소제곱 문제를 해결한다는 장점이 있다.

수치 불안정성의 주된 위험은 Q를 계산할 때 발생하지만, 하우스홀더 변환을 통해 구현할 때는 안정적이다.