Swimmer

[선형대수] 일반선형모델 및 최소제곱법 본문

개념공부/선형대수

[선형대수] 일반선형모델 및 최소제곱법

Zach Choi 2024. 1. 15. 22:45

 본 글에서는 일반선형모델, 최소제곱법을 설명한다. 일반선형모델은 독립변수가 스칼라 곱셈과 덧셈으로만 이루어진 모델이다. 최소제곱법은 일반선형모델의 계수 값을 계산하기 위한 방법이다. 그리고 마지막으로 앞서 공부한 QR분해를 사용해 일반선형모델을 푸는 좀 더 수치 안정적인 방법을 소개한다.


일반 선형 모델 (General Linear Model)

일반 선형 모델은 예측변수(독립변수)를 관측값(종속변수)와 스칼라 곱셈 및 덧셈으로만 연관시킨 방정식의 집합이다. 일반 선형모델을 구축하는 과정은 아래와 같다.

  1. 독립변수와 종속변수를 연관시킨 방정식을 정의한다. (ex/  1차 다항식, n차 다항식)
  2. 관측된 데이터를 방정식에 대입한다.
  3. 관측된 데이터 수만큼의 방정식을 행렬 방정식으로 변환한다.
  4. 행렬 방정식을 푼다.

본 과정의 예시는 아래와 같다.

일반 선형 모델은 독립변수와 종속변수를 연관시킨 방정식인 1번이다. 본 과정의 결과로 얻은 행렬 방정식을 풀어서 모델의 계수 값을 대입하면 최종적으로 모델을 구축하게 된다.


최소제곱법 (Least Squares solution)

 최소 제곱법은 위와 같은 행렬 방정식을 푸는 방법이다. 풀이는 다음과 같다.

행렬 방정식의 X를 X전치와 곱한수 역행렬을 계산한다. 이를 X의 전치 및 벡터와 곱하여 모델의 계수인 beta 값을 계산하는 것이다. 우선, 위와 같이 최소제곱법의 공식을 먼저 작성하였다. 최소제곱법의 위 식을 유도하는 방법은 기하학적인 관점도 있고, 아래와 같은 관점으로도 유도할 수 있다.

 

 먼저 일반 선형 모델로 예측한 값과 관측 값과의 오차를 정의한다. 일반 선형 모델 구축의 목표는 오차의 총합을 최소화 하는 것이다. 오차는 부호를 가지므로, 부호를 없애기 위해 오차의 제곱 값을 최소화하는 일반 선형 모델 게수를 구하는 문제로 정의할 수 있다. 이를 미적분을 정의하면 다음과 같이 정리된다.

 즉, 최소제곱법은 예측 데이터와 관측 데이터의 오차를 최소화하는 선형모델의 계수를 찾는 것이다.


QR분해 및 역치환를 통한 최소제곱법

최소제곱법은 역함수를 계산해야 하므로 수치적으로 불안정할 수 있다. 또한 X의 전치와 X를 곱하는 것도 수치 불안정을 유발할 수 있다. 둘을 곱함으로서 X의 조건수에 영향을 주게 되고, 일반적으로 조건수가 높을 수록 역함수 계산 시 수치적으로 불안정하기 때문이다.

 

 이를 개선하기 위해 QR분해를 사용할 수 있다.

행렬 X를 QR 분해한다. 이때 Q의 역행렬은 Q의 전치와 같기 때문에 수치적으로 문제 없이 계산 가능하다. 그러면 R의 역함수를 계산해야하는 문제가 남는다. 하지만 R의 경우 상삼각행렬이기 때문에 역치환을 이용해 바로 beta 계수를 계산할 수 있다. 즉, 3번항에서 R의 행렬의 가장 마지막 행 및 가장 마지막 열 요소만 0이 아닌 값을 가지므로 beta의 가장 마지막 값을 계산할 수 있다. 이후 행을 하나씩 올라오면서 나머지 계수들을 계산할 수 있다.

 

 이와 같이 QR분해를 이용하면 역행렬을 계산하지 않기 때문에 상대적으로 수치 안정적인 선형모델 계수 계산이 가능하다.


 

일반선형모델은 선형대수의 꽃이라고 한다. 실제로 현업에서도 최소제곱법은 많이 쓰이는데, 나의 경우는 n차 Polynomial 피팅에 자주 사용했다. 즉, 여러개의 포인트가 있을 때 이를 가장  n차 Polynomial로 근사하는 것이다. n차 Polynomial은 일반선형모델이기 때문에 최소제곱법을 이용해 근사함수를 구할 수 있다.

Comments