오차제곱합 최소화와 회귀 분석
회귀 분석(regression analysis)은 주어진 데이터 집합에 대해 어떤 함수를 적합시켜, 미지의 입력값에 대해 예측할 수 있도록 하는 기법이다. 가장 많이 사용되는 방법 중 하나가 최소제곱법(least squares)이다. 최소제곱법은 모델 함수를 구성하고, 이 모델에 관측된 데이터를 대입했을 때 발생하는 오차들의 제곱합을 최소화하는 방식으로 계수를 추정한다. 이 과정을 상세히 살펴보기 전에, 먼저 오차제곱합을 어떻게 정의하고 최소화하는지에서부터 시작한다.
선형 모델에서의 오차제곱합
오차제곱합(sum of squared errors)은 모델과 데이터 간의 편차를 측정하기 위해 쓰인다. 예를 들어, 독립변수값이 $x_i$이고 종속변수값이 $y_i$로 주어진 $n$개의 데이터가 있다고 할 때, 데이터가 다음과 같은 선형 모델을 따른다고 가정해 보자.
여기에서 $a$와 $b$는 추정해야 할 계수이다. 주어진 데이터 $(x_i, y_i)$와 모델 $\hat{y}_i$ 사이의 오차를 $e_i = y_i - \hat{y}_i$라고 할 때, 이들의 제곱합 $S(a,b)$을 정의하면
회귀 분석의 주요 목적은 $S(a, b)$를 최소화하는 $a$와 $b$를 찾는 것이다.
오차제곱합 최소화 조건
$S(a, b)$를 $a$와 $b$에 대해 편미분하여 각각 $0$이 되도록 설정하면, 최소값을 주는 계수 쌍 $(a, b)$를 구할 수 있다.
이를 전개하면
이 편미분을 구체적으로 정리하면 다음과 같은 두 식을 얻는다.
위 식을 간단히 정리하면
이 두 식을 풀어서 해 $(a, b)$를 구할 수 있다. 이는 단일 독립변수를 갖는 단순선형회귀의 모형이다.
행렬 표현과 일반화
독립변수가 여러 개인 경우 또는 고차원 데이터에 대해서는 행렬로 표현하면 더 간결하게 다룰 수 있다. 보통 다음과 같은 일반 형태의 선형 모델을 가정한다.
여기에서 $\mathbf{y} \in \mathbb{R}^n$ 은 종속변수값들의 벡터, $\mathbf{X} \in \mathbb{R}^{n \times m}$ 은 독립변수(또는 디자인 행렬이라 부름), $\boldsymbol{\beta} \in \mathbb{R}^m$ 은 추정해야 할 계수 벡터, $\boldsymbol{\varepsilon} \in \mathbb{R}^n$ 은 오차항을 나타낸다.
최소제곱법 관점에서 $\boldsymbol{\varepsilon}^\top \boldsymbol{\varepsilon}$을 최소화하고자 하는 문제는
와 동일하다. 이를 해석하면, 관측치 $\mathbf{y}$에 대해서 $\mathbf{X}\boldsymbol{\beta}$가 얼마나 가깝게 근사하는지를 오차제곱합으로 표현한 뒤, 그 값을 최소화하는 $\boldsymbol{\beta}$를 찾는 과정이다.
정규방정식(Normal Equation)
행렬 미분을 이용하면, 오차제곱합 $|\mathbf{y} - \mathbf{X}\boldsymbol{\beta}|^2$에 대한 편미분을 $\boldsymbol{\beta}$에 대해 $0$으로 두어 최적해를 구할 수 있다. 흔히 정규방정식(normal equation)이라 불리는 식은 다음과 같다.
만일 $\mathbf{X}^\top \mathbf{X}$가 역행렬을 갖는다면,
이렇게 해서 $\boldsymbol{\beta}$를 직접 구할 수 있다. 이 해가 바로 최소제곱 해(ordinary least squares estimate)라고 한다.
과적합과 모델 복잡도
선형 모형뿐 아니라 고차 다항(polynomial) 모형이나 비선형 모형으로 확장할 때 모델 복잡도가 증가한다. 예를 들어, $(x_i, y_i)$에 대한 $k$차 다항식을 가정하면
와 같은 형태로 볼 수 있다. 이 경우 디자인 행렬 $\mathbf{X}$에 $x^0, x^1, x^2, \dots, x^k$ 항이 각각 추가되므로 차원이 커진다. 다항 차수가 높아지면 복잡한 패턴을 더 잘 추적할 수 있지만, 데이터가 충분치 않거나 노이즈가 큰 상황에서 과적합(overfitting)이 발생할 수도 있다. 오차제곱합을 최소화한다는 관점에서 직관적으로는 모델의 복잡도를 키울수록 학습데이터에 대한 오차는 작아지지만, 실제 예측 성능은 오히려 나빠질 수 있다.
수치적 안정성과 조건수
정규방정식 $\mathbf{X}^\top \mathbf{X} \boldsymbol{\beta} = \mathbf{X}^\top \mathbf{y}$를 이용해 직접 계수를 구할 때, $\mathbf{X}^\top \mathbf{X}$의 조건수(condition number)가 매우 클 경우 수치적 불안정성(numerical instability)이 발생하기 쉽다. 이는 수치해석에서 중요한 문제이며, 행렬의 고유값 분해나 특이값 분해(SVD)를 이용하여 개선된 해법을 구하거나, 데이터 스케일링 및 정규화(regularization)를 통해 문제를 완화할 수 있다.
특히 $\mathbf{X}^\top \mathbf{X}$가 $\mathbf{I}$에 가까울수록(대칭 양의정부 호조건 행렬) 역행렬 계산에서 오차가 작아지므로 안정적이다. 반면, 다항 차수가 매우 높아지거나 설명변수들이 서로 상관관계가 클 경우, $\mathbf{X}^\top \mathbf{X}$는 거의 특이(singular)하거나 수치적으로 퇴화(degenerate)될 수 있다. 따라서 다항 회귀 문제를 풀 때는 모델 선택과 정규화를 종합적으로 고려해야 한다.
가중 최소제곱법과 잡음 분산
오차항이 서로 다른 분산을 가진다고 가정될 때, 단순히 모든 오차에 같은 가중을 두고 계수를 추정하는 것은 적절치 않을 수 있다. 예를 들어, 관측값마다 측정 정밀도가 다르거나, 특정 구간에서 오차 분산이 더 커지는 상황이 발생할 수 있다. 이럴 때는 개별 관측값마다 서로 다른 가중을 두어, 오차제곱합을 다음과 같이 정의하고 최소화할 수 있다.
여기에서 $w_i > 0$는 개별 측정에 할당된 가중값이다. 수학적으로는
형태로 나타낼 수 있다. $\mathbf{W}$는 대각원소가 $w_i$인 대각행렬이다. 이를 최소화하기 위한 정상방정식은
로 주어진다. 역행렬이 존재한다면
와 같은 형태로 해를 구할 수 있다. 이를 가중 최소제곱법(weighted least squares)이라 한다. 관측값들마다 측정 분산이 상이하거나, 특정 관측에 더 높은 중요도를 부여하고 싶을 때 효과적이다. 그러나 $w_i$를 적절히 선택하는 것은 도메인 지식이나 추가적인 통계적 분석이 필요하므로, 임의로 선택하기보다는 모형에서 추정하거나, 미리 알려진 정보를 적극적으로 활용해야 한다.
오차항의 확률적 가정과 BLUE
회귀 해석에서 자주 가정하는 고전적 선형 회귀 모형은 오차항 $\boldsymbol{\varepsilon}$가 다음과 같은 특성을 지닌다고 가정한다.
이는 오차가 서로 독립이고, 등분산성(homoscedasticity)을 가진다는 의미다. 이런 가정 아래 최소제곱해(ordinary least squares)는 BLUE(Best Linear Unbiased Estimator)를 만족한다는 유명한 가우스-마르코프 정리를 얻을 수 있다.
만약 오차항이 등분산이 아니거나, 서로 상관되어 있다면(heteroscedasticity, autocorrelation 등), 일반화 선형 회귀 모형 혹은 가중 최소제곱법을 통해 더 나은 추정을 할 수 있다. 예를 들어, $\mathrm{Cov}(\boldsymbol{\varepsilon}) = \Sigma$인 경우, 최적 추정량은
형태가 된다. 여기에서 $\Sigma$는 오차항의 공분산 행렬을 나타낸다.
잔차 분석과 모형 진단
회귀분석에서는 최소제곱법으로 계수를 구한 뒤, 잔차(residual)를 분석하여 모형의 적합성을 평가한다. 잔차 벡터는
로 정의된다. 잔차가 계(systematic)적으로 분포한다면, 오차항에 대한 기본 가정들이 위배되었을 가능성이 있다. 예를 들어, 독립성 위배(시계열 데이터에서 자기상관), 등분산성 위배(잔차의 분산이 입력값이나 예측값에 따라 달라짐), 정규성 위배(오차가 비대칭적이거나 극단값이 많음) 등이 발생할 수 있다. 모형이 적절한지 판단하기 위해서는 잔차를 플롯으로 시각화하거나, 표준화 잔차(standardized residual), 예측값과 잔차 관계 등을 면밀히 살핀다.
결정계수와 예측력 평가
회귀분석의 적합 정도를 평가하는 방법 중 하나로 결정계수($R^2$)가 자주 쓰인다. $R^2$는 기본적으로 전체 변동 중에 모형이 설명하는 비율을 나타낸다. 표준적 정의는
와 같은 형태이다. 여기에서 $\hat{y}_i = \mathbf{x}_i^\top \boldsymbol{\beta}$는 회귀 모형의 예측값, $\bar{y}$는 종속변수 $y_i$의 평균값이다. $R^2$가 1에 가까울수록 모형이 관측데이터의 변동을 잘 설명한다. 다만 독립변수가 많아질수록 $R^2$가 단순히 증가하기도 하므로, 변수가 늘어날 때 발생하는 과적합 위험을 고려하기 위해 조정된 결정계수(adjusted $R^2$) 등을 함께 살펴보기도 한다.
예시: Octave 코드
데이터가 $(x_i, y_i)$ 형태로 주어졌다고 하고, 단순선형회귀를 최소제곱법으로 수행하는 예시 코드를 Octave 언어로 작성하면 다음과 같은 흐름으로 구성할 수 있다.
beta의 첫 번째 항이 상수항(절편) $b$, 두 번째 항이 기울기 $a$에 해당한다. 이 추정값으로부터 주어진 데이터를 가장 잘 근사하는 선형모형
을 얻을 수 있다.
직관적 해석과 한계
최소제곱법으로 구한 계수는 주어진 기준(오차제곱합)에서 최적화된 해로, 데이터의 분포에 따라 상대적으로 영향을 많이 받는 구간이 달라질 수 있다. 예를 들어, 이상치(outlier)가 존재하면 전체적인 적합선이 크게 왜곡될 수 있다. 또한 $R^2$나 잔차분석에서 확인되지 않는 잠재적 문제나, 변수 선택 과정에서 발생하는 다중공선성(multicollinearity) 문제 등이 있을 수 있다. 따라서 회귀 해석에는 통계적, 수치적 진단이 모두 필요하다. 예측력과 해석력을 함께 고려해, 모형의 구조와 적용 범위를 명확히 하는 것이 중요하다.
정규화(Regularization)와 Ridge Regression
일반적인 최소제곱회귀에서는 오차제곱합 $|\mathbf{y} - \mathbf{X}\boldsymbol{\beta}|^2$을 최소화하는 해를 찾는다. 그런데 데이터 차원에 비해 관측치가 매우 적거나, 설명변수들 간 상관관계가 높은 경우(다중공선성), $\mathbf{X}^\top \mathbf{X}$가 수치적으로 불안정하거나(조건수가 매우 큼) 역행렬이 존재하지 않을 수도 있다. 이런 상황을 극복하기 위해 정규화(regularization) 기법을 도입할 수 있다.
가장 대표적인 방식 중 하나가 릿지 회귀(Ridge Regression)이며, 이는 최소화 대상에 $\ell_2$ 페널티 항을 추가한다. 즉, 최적화 문제를
형태로 정의한다. 스칼라 $\lambda \ge 0$는 정규화 파라미터로, $\lambda$가 클수록 계수 벡터 $\boldsymbol{\beta}$의 크기가 더 강하게 억제된다. 이렇게 하면 과도하게 큰 계수가 형성되는 것을 억누를 수 있으며, $\mathbf{X}^\top \mathbf{X}$가 특이해도 해가 고유하게 정의되는 장점이 있다.
편미분을 통해 $\boldsymbol{\beta}$에 대한 최적 조건을 구하면 정규방정식은 다음과 같은 형태가 된다.
역행렬이 존재한다면
이 때 $\lambda \mathbf{I}$ 항이 들어감으로써, $\mathbf{X}^\top \mathbf{X}$가 거의 특이(singular)하거나 매우 큰 조건수를 가질 경우에도 수치적으로 안정된 역행렬이 만들어진다.
릿지 회귀의 계수 벡터는 축소(shrinkage) 효과를 갖게 되므로, 다중공선성 문제를 완화하고, 예측의 분산을 줄여서 일반화 성능을 높일 수 있다. 하지만 모든 계수에 대해 균일한 수준의 축소가 작용하여, 어떤 계수는 완전히 $0$으로 만들지 못한다. 계수마다 중요도를 구분할 필요가 있고, 희소성(sparsity)을 얻고자 한다면 다음에 설명할 라소(Lasso)를 사용할 수 있다.
Lasso(Least Absolute Shrinkage and Selection Operator)
라소 회귀에서는 오차제곱합에 $\ell_1$ 노름을 추가하여 페널티를 가한다. 최적화 문제는
형태가 된다. 여기에서 $|\boldsymbol{\beta}|_1 = \sum_j |\beta_j|$이다. 라소는 일부 계수를 실제로 $0$으로 만들어버리는 특성이 있어, 변수 선택(variable selection) 기능을 갖는다. 높은 차원에서 유용한 도구이며, 스파스(sparse)한 해를 얻고자 할 때 사용된다.
다만 $\ell_1$ 노름은 미분이 불가능한 지점(계수가 0인 위치)을 갖기 때문에, 해석적 공식을 통해 간단히 해를 구하기가 어렵다. 일반적으로는 좌표축 강하법(coordinate descent)이나 프로시전 알고리즘(proximal gradient methods) 등 수치적 방법으로 해를 찾는다. 라소를 통해서도 다중공선성과 과적합을 완화할 수 있으며, 중요한 변수를 자동으로 골라내는 효과를 기대할 수 있다.
엘라스틱넷(Elastic Net)
릿지 회귀와 라소 회귀를 혼합한 엘라스틱넷(Elastic Net)은 $\ell_1$과 $\ell_2$ 페널티를 동시에 부여한다. 최적화 문제는
같은 형태로 정의되며, $\alpha \in [0,1]$를 조절하여 라소와 릿지 사이에서 절충안을 모색한다. 예를 들어, $\alpha = 1$이면 라소가 되고, $\alpha = 0$이면 릿지가 된다. 실제 데이터에 대해 변수 선택과 계수 안정성(variance 축소) 사이에서 균형점을 찾을 수 있다.
다항 회귀와 정규화
고차 다항식으로 확장할 때, 모형이 과하게 복잡해지면 과적합 위험이 커질 수 있다. 예를 들어
와 같이 $k$차 다항식을 가정하면, $\mathbf{X}$ 행렬의 열이 $[,1,; x,; x^2,; \dots,; x^k,]$로 구성된다. $k$가 커질수록 $\mathbf{X}^\top \mathbf{X}$는 고차항들 간 상관성 때문에 수치적으로 불안정해질 가능성이 높다. 이를 완화하기 위해서는 리지나 라소 같은 정규화 기법을 적용할 수 있다.
릿지 회귀의 관점에서 다항회귀 계수 $\boldsymbol{\beta}$에 대해 $|\boldsymbol{\beta}|^2$ 페널티를 주면, 높은 차수의 항들이 과도하게 커지는 것을 억누른다. 만약 어떤 항이 굳이 필요하지 않다면 라소가 해당 계수를 0으로 만드는 식으로 변수 선택을 유도할 수도 있다. 실제 분석에서는 크로스밸리데이션(cross-validation)을 통해 $\lambda$와 $k$를 함께 결정하기도 한다.
수치해석적 알고리즘과 QR 분해
정규방정식 $\mathbf{X}^\top \mathbf{X} \boldsymbol{\beta} = \mathbf{X}^\top \mathbf{y}$를 직접 푸는 것은, $\mathbf{X}^\top \mathbf{X}$가 매우 큰 조건수를 갖거나 고차원 문제에서 계산 비용이 클 때 비효율적일 수 있다. 수치적으로 더 안정적인 방법으로는 QR 분해를 활용하거나, 특이값 분해(SVD, Singular Value Decomposition)를 활용하는 것이 일반적이다.
QR 분해를 예로 들면, $\mathbf{X}$가 풀랭크일 때
로 분해할 수 있으며, 여기에서 $\mathbf{Q}$는 직교행렬, $\mathbf{R}$은 상삼각행렬이다. 최소제곱 해를 구하는 과정은
와 같이 바뀌며, 결국 상삼각방정식을 푸는 형태가 되어 계산이 간단하고 수치적 안정성이 개선된다. 실제로는 SVD 방식을 통해서도 유사한 접근이 가능하며, 특히 $\mathbf{X}$가 풀랭크가 아닐 때나 노이즈가 많은 상황에서도 유용하다.
Python 코드 예시: Ridge Regression
릿지 회귀를 간단히 시연하는 Python 코드를 예시로 들어 보면 다음과 같은 형태가 될 수 있다.
여기서는 $(\mathbf{X}^\top \mathbf{X} + \lambda \mathbf{I})^{-1}$를 직접 구했지만, 실제 응용에서는 정규분해(Cholesky 분해 등)나 라이브러리 함수를 통해 수치적으로 더 안전하게 해를 구한다.
로버스트 회귀(Robust Regression)
최소제곱법은 잔차제곱합을 최소화하기 때문에, 관측값 중 극단치(outlier)가 존재하면 전체 추정 결과가 크게 왜곡될 수 있다. 로버스트 회귀(robust regression)는 이상치나 분포 가정의 위배에도 비교적 안정적인 추정을 제공하기 위해 고안된 기법이다. 대표적인 예로 M-추정(M-estimation)이 있다. 이 접근에서는 일반적인 최소제곱법의 손실함수(오차제곱)에 특정 가중이나 절댓값·완화된 제곱 등의 형태로 변형을 가하여 이상치에 덜 민감하게 만든다.
M-추정(M-estimation)
M-추정에서는 일반화된 잔차 $r_i = \frac{y_i - \hat{y}_i}{\sigma}$를 정의하고, 특정한 $\rho$ 함수를 사용하여 총합
이 최소가 되도록 $\boldsymbol{\beta}$를 추정한다. 예를 들어 전통적 최소제곱법은 $\rho(r) = r^2$를 사용하는 반면, Huber 함수, Tukey 함수 등은 큰 잔차에 대해서는 완만하게 증가함으로써 이상치의 영향력을 줄인다. Huber 함수를 예로 들면,
와 같은 형태를 취한다. 작은 잔차 구간에서는 제곱 손실로 동작하지만, $|r|$이 $\delta$보다 커지면 선형적으로 증가하는 절댓값 손실 형태로 전환된다.
반복 가중최소제곱(IRLS)
M-추정을 수치적으로 푸는 한 가지 방법으로 반복 가중최소제곱(Iteratively Reweighted Least Squares, IRLS)을 들 수 있다. 각 잔차에 대응되는 가중을 설정하고, 그 가중으로 최소제곱 문제를 푼 뒤, 업데이트된 잔차에 따라 가중을 갱신하는 과정을 반복한다. 예를 들어, Huber 함수를 사용할 때 편미분을 통해 도출되는 가중 $w_i$는 잔차 $r_i$의 크기에 따라 다른 값을 갖게 된다. 이렇게 해서, 이상치로 의심되는 관측값의 잔차에 대해서는 더 작은 가중이 부여되어, 최종 추정에 미치는 영향이 줄어든다.
비선형 회귀(Nonlinear Regression)
현재까지는 선형 혹은 다항 형태로 모델을 가정한 뒤, 계수 추정 문제를 최소제곱의 틀에서 다루었다. 하지만 실험적·이론적 측면에서 모수가 비선형으로 관계하는 경우,
와 같이 파라미터 $\boldsymbol{\theta}$가 직접 비선형 함수를 통해 종속변수 $y$를 결정할 수 있다. 예를 들어 로지스틱 곡선, 지수함수, 시그모이드 함수 등을 가정하는 경우가 많다. 이런 모형들은 단순히 정규방정식을 통해 해를 구하기 어려우므로, 일반적인 비선형 최적화 기법을 이용한 반복적 접근이 요구된다.
예: 가우스-뉴턴(Gauss-Newton) 방법
비선형 최소제곱 문제에서 자주 사용하는 알고리즘으로 가우스-뉴턴(Gauss-Newton) 방법이 있다. 오차 벡터를
라 하면, 이의 이차노름(제곱합)을 최소화하는 문제를 다음과 같이 정의한다.
가우스-뉴턴은 테일러 전개를 통해 야코비(Jacobian) 행렬 $\mathbf{J}(\boldsymbol{\theta})$를 근사적으로 사용하여 파라미터를 반복적으로 업데이트한다. 뉴턴 방법에 비해 해essian(Hessian)을 직접 계산하지 않고, 잔차 벡터의 1차 미분만 활용하므로 계산량이 상대적으로 적고, 비선형 회귀에서 널리 쓰이는 알고리즘이다.
초기값 선택과 국소해
비선형 회귀 문제는 선형회귀와 달리, 잔차제곱합이 비볼록(non-convex) 형태가 될 수 있어서 국소최소(local minimum)에 수렴할 위험이 있다. 알고리즘의 초깃값을 어떻게 주는지가 해석과 수렴성에 큰 영향을 미친다. 따라서 도메인 지식을 활용하거나, 여러 개의 초깃값으로 시작해 전역적 관점에서 최적해를 탐색하는 전략을 쓰기도 한다.
범주형 종속변수와 로지스틱 회귀
종속변수가 이진값(예: 0과 1)으로 구성되어 있을 때, 선형회귀를 직접 적용하는 것은 적절하지 않을 수 있다. 이때 로지스틱 함수를 통해 확률을 모형화하는 로지스틱 회귀(logistic regression)가 많이 사용된다. 이 기법은 최소제곱 대신 최대우도추정(MLE)을 사용하지만, 수치해석적으로는 IRLS로도 구할 수 있어 회귀 분석의 확장판으로 볼 수 있다.
로지스틱 모델
이진분류 문제에서,
형태로 가정하고, $\sigma(t) = \frac{1}{1+e^{-t}}$ 함수를 로짓(logit) 변환의 역함수로 쓴다. 우도함수를 최대화하는 문제는 해석적 공식이 존재하지 않으므로, 뉴턴-랩슨(Newton-Raphson) 알고리즘이나 IRLS를 통해 수치적 해법으로 푼다.
IRLS 관점
로지스틱 회귀의 로그우도함수를 이차 근사하면, 그 형태가 가중 최소제곱문제와 유사해진다. 따라서 잔차와 가중을 정의한 뒤, 반복적으로 최소제곱해를 구하는 절차를 거치게 되며, 이를 통해 계수 추정이 이루어진다. 회귀해가 수렴한 뒤에는 예측 확률이 필요한 곳에
같은 식으로 대입해 사용한다. 계수가 과도하게 커지거나 다중공선성이 발생하는 경우에는, 릿지나 라소와 같은 정규화 항을 추가한 로지스틱 회귀(regularized logistic regression) 형태로 확장하기도 한다.
대규모 차원 문제와 확장
회귀분석은 빅데이터, 온라인 학습, 스트리밍 환경 등에서 더욱 복잡한 양상을 띤다. 고차원 데이터나 매우 큰 $n$에 대해서는, 고전적인 정규방정식 접근이 사실상 불가능하거나 매우 비효율적이다. 이때 확률적 경사 하강법(SGD, Stochastic Gradient Descent)이나 미니배치 경사 하강법(mini-batch GD) 등 반복 업데이트 방식이 널리 쓰인다. 계산 자원을 절약하면서도 근사 해를 빠르게 얻을 수 있으며, 적절한 초기값과 학습률(learning rate)을 설정해 안정적으로 수렴시키는 것이 중요하다.
다이어그램으로 표현하는 회귀 분석 순서도
아래는 회귀 분석 전반 흐름을 단순화한 순서도이다. 데이터가 주어졌을 때, 모델을 선정하고 최소제곱법 혹은 변형/정규화를 적용하는 흐름을 요약해볼 수 있다.
실제 문제 설정이나 수학적 세부사항, 구현 알고리즘은 상황에 따라 훨씬 복잡해질 수 있다. 적절한 가정과 단순화로 출발하여, 필요하면 더 정교한 모델과 수치해석 기법을 적용하는 것이 일반적이다.
교차검증(Cross-Validation)과 모델 선택
회귀 모형을 학습한 뒤, 이를 얼마나 일반화할 수 있는지를 평가하기 위해 교차검증 기법을 자주 사용한다. 교차검증은 데이터를 여러 부분으로 나누어, 일부는 학습(train)용으로, 일부는 검증(validation)용으로 사용하는 과정을 반복함으로써 모델이 새로운 데이터에 대해서도 잘 작동하는지를 객관적으로 점검한다. 모델의 복잡도가 커질수록 학습데이터에 대한 오차는 줄어들지만, 실제 예측 성능(검증데이터)은 향상되지 않거나 오히려 나빠질 수 있다. 따라서 교차검증을 통해 과적합을 방지하고, 최적의 모델(차수, 정규화 파라미터 등)을 선택하는 것이 중요하다.
k-겹 교차검증(k-fold CV)
자주 사용하는 방법으로 k-겹 교차검증이 있다. 데이터를 무작위로 k개 구간(fold)으로 나누고, 그 중 하나를 검증세트로 삼고 나머지 k-1개를 학습에 사용한다. 그 뒤 검증세트에 대해 모델이 얼마나 잘 예측하는지 계산한다. 이를 k번 반복하여 얻은 성능평가값을 평균낸 결과를 모델 성능 지표로 삼는다. 이렇게 하면, 모든 데이터가 한 번씩은 검증세트로 활용되므로, 데이터가 적은 상황에서도 최대한 효율적으로 평가할 수 있다.
정규화 파라미터 선정
릿지나 라소 회귀처럼 정규화 파라미터 $\lambda$가 포함된 모델에서, $\lambda$를 얼마나 크게 혹은 작게 둘지가 모델 복잡도와 예측 성능을 좌우한다. 이때 교차검증을 통해 여러 후보 $\lambda$ 값을 시도해본 뒤, 가장 평균 검증오차가 작은 값을 채택한다. 이를 통해 적절한 수준의 페널티를 부과하여 과적합을 방지함과 동시에 예측 정확도를 높이는 해를 찾을 수 있다.
정보 기준(AIC, BIC)과 모델 비교
통계학적 관점에서 회귀모형을 비교·평가할 때 정보 기준(information criterion)을 활용하기도 한다. 대표적인 예로 AIC(Akaike Information Criterion)와 BIC(Bayesian Information Criterion)가 있다. 이들은 모형의 적합도와 모형 복잡도(계수 개수)에 대한 페널티를 함께 고려한 스코어를 계산한다.
AIC는
로 정의된다. 여기에서 $k$는 추정 파라미터의 개수, $\hat{L}$은 모형이 갖는 최대우도값이다. BIC는
로 정의되며, 샘플 크기 $n$에 따라 페널티가 달라진다. AIC와 BIC가 작을수록 더 좋은 모형이라 간주한다. 이를 통해 차수가 다른 다항회귀 모형 혹은 변수가 서로 다른 여러 회귀 모형 중 어느 것이 적합한지 비교할 수 있다.
회귀 계수의 신뢰구간과 가설검정
고전적 선형회귀에서 오차항이 정규성을 가진다고 가정하면, 추정된 계수에 대한 분산을 계산하고 가설검정을 수행할 수 있다. 예를 들어, 단순선형회귀에서 기울기 $a$가 0인지 여부를 검정하려면
와 같은 형식으로 설정한 뒤, 계수의 표준오차와 t-분포 등을 이용하여 p-값을 구해 유의수준 하에서 귀무가설 기각 여부를 결정한다. 이는 $\boldsymbol{\beta}$ 전체에 대해 확장 가능하며, 동시에 여러 계수가 유의한지 판단하기 위해서는 F-검정 등을 활용한다. 추정 계수에 대한 신뢰구간 역시 공분산 행렬의 대각원소(분산)를 이용해 구할 수 있다. 예측 구간(prediction interval)이나 평균응답구간(confidence interval for the mean response)을 계산하는 것도 이와 유사하다.
베이지안 회귀(Bayesian Regression)
회귀모형의 계수를 확률변수로 간주하고 사전분포(prior)를 설정한 뒤, 관측데이터로부터 사후분포(posterior)를 갱신하는 접근을 베이지안 회귀라고 한다. 예를 들어
같은 정규 사전분포를 두면, 이는 자연스럽게 릿지 회귀 형태와 연결된다. 사후분포도 정규분포가 되고, 사후분포의 공분산 행렬을 통해 불확실성을 정량화할 수 있다. 보다 일반적으로 비정규 사전분포, 스파스 사전, 계층 베이지안(hierarchical Bayesian) 모델 등을 설정해 문제를 확장할 수도 있다. 베이지안 프레임워크에서는 $\lambda$도 하이퍼파라미터로 간주하여 샘플링(MCMC 등) 기법으로 추정하거나, 사후예측분포(posterior predictive distribution)를 얻어 예측 불확실성을 평가하는 것이 가능하다.
고차원 Sparse 모델과 압축센싱
변수 개수가 방대하고, 실제로 유의한 변수는 소수일 것으로 기대되는 상황에서는 라소나 엘라스틱넷 등이 특히 효과적이다. 라소의 $\ell_1$ 페널티로 인해 많은 계수가 0이 되고, 이는 차원을 자동으로 축소한다. 압축센싱(compressed sensing) 분야에서도 유사한 $\ell_1$ 최적화가 중요하며, 적은 수의 샘플로부터 희소구조를 재구성하는 문제에서 활발히 연구된다.
제한된 메모리 환경과 SGD
빅데이터나 스트리밍 데이터에서는 한 번에 전체 데이터를 메모리에 적재하기 어렵기 때문에, SGD(확률적 경사하강법)를 활용하여 점진적으로 계수를 업데이트한다. 학습률(learning rate)을 적절히 조절하면, 반복할수록 점근적으로 최소제곱해에 수렴하는 결과를 얻을 수 있다. 라소나 릿지 회귀도 SGD 형태로 구현할 수 있는데, 페널티 항에 대한 경사 계산을 함께 고려하거나, 라소의 경우에는 soft-thresholding 기법이 사용된다.
예시: C++에서 SGD 기반 릿지 회귀
C++로 간단히 SGD 기반 릿지 회귀를 구현하는 예를 들면 다음과 같은 흐름이 될 수 있다.
이 코드는 간단한 예시 형태로, 각 배치 크기(batch size)를 1로 두는 순수 SGD 방식을 보여준다. 실무에서는 미니배치 크기를 늘리거나, 학습률 스케줄링을 달리하거나, 모멘텀/Adam/Adagrad 등 다양한 변형 알고리즘을 적용해 수렴속도와 안정성을 높인다.
추가 논의: 다중공선성과 PCA
설명변수들 간의 상관관계가 매우 크면, 다중공선성(multicollinearity)으로 인해 $\mathbf{X}^\top \mathbf{X}$가 퇴화(degenerate)하거나 계수 추정량의 분산이 크게 증가할 수 있다. 이 문제를 해결하기 위해 주성분분석(PCA, Principal Component Analysis)을 적용하여 상관관계를 제거한 주성분 공간으로 변환한 뒤에 회귀를 수행하기도 한다. 이를 PCA 회귀라고 부르며, 고차원 문제에서 자주 시도된다.
PCA 회귀는 보통 $\mathbf{X}$ 행렬을 특이값 분해(SVD) 또는 고유값 분해로 분해하고, 중요한 주성분(고유값이 큰 순으로 일정 개수)만을 사용해서 차원을 줄인 뒤, 축소된 공간에서 최소제곱법을 적용한다. 이렇게 하면 잡음에 취약한 방향(작은 고유값에 대응하는 주성분)을 제거하여 모델 안정성을 확보할 수 있다.
부분최소제곱 회귀(Partial Least Squares Regression)
주성분회귀(PCR)가 설명변수 공간을 먼저 주성분분석(PCA)으로 축소한 뒤, 그 축소된 주성분들에 대해 최소제곱법을 수행한다면, 부분최소제곱 회귀(PLS, Partial Least Squares)는 종속변수와 설명변수 간의 공분산을 최대화하는 방향으로 축소를 진행한다. 이 점에서 PLS는 단순히 $\mathbf{X}$만을 보고 차원을 축소하는 PCR과 달리, $\mathbf{y}$ 정보까지 활용하여 주성분(혹은 잠재요인)을 찾는다.
예를 들어 $(\mathbf{X} \in \mathbb{R}^{n\times m}, \mathbf{y} \in \mathbb{R}^{n})$라 할 때, PLS는 반복적으로 직교 성분을 추출하여
등을 구한 뒤, 잔차를 갱신하면서 새로운 축을 차례로 찾아낸다. 이렇게 얻은 소수의 잠재 요인(latent variables)을 이용해 다중공선성을 줄이고, 적절히 일반화된 모델을 얻는다. 화학 분광학, 생물통계 분야 등에서 널리 사용되며, $m \gg n$인 고차원 데이터에서도 유효하다.
부분최소제곱 회귀는 해석적으로는 PCR과 유사하나, $\mathbf{y}$와 관련이 높은 방향을 우선적으로 찾아 투영한다는 점에서 예측 정확도가 더 높게 나올 가능성이 있다. 또한 숨겨진 구조를 찾는 데 유리하기 때문에, 변수 간 상관관계가 복잡하거나 노이즈가 많은 데이터에서 쓰임새가 크다.
일반화 선형모델(GLM)
지금까지는 잔차제곱합 또는 그 변형을 최소화하는 의미에서의 회귀를 다뤄 왔다. 반면, 일반화 선형모델(GLM, Generalized Linear Model)은 종속변수의 분포가 정규분포 이외의 지수족(exponential family) 분포를 따른다고 가정하고, 적절한 링크 함수(link function)를 통해 선형예측자(linear predictor)를 설정한다. 대표적인 예가 로지스틱 회귀(이항분포 + 로짓링크), 포아송 회귀(포아송분포 + 로짓 혹은 로그링크) 등이다.
예를 들어 포아송 회귀(Poisson regression)는 count data(사건 발생 횟수 등)에 자주 쓰이며,
형태로 가정한다. 로그링크를 사용하면
와 같이 표현할 수 있다. 최대우도추정(MLE)나 IRLS 기법을 통해 계수를 추정하며, 잔차분석과 분산분석, 적합도 검정 등을 수행한다.
커널 회귀와 가우시안 프로세스
비선형 관계를 다루는 또 다른 관점으로는 커널 함수를 활용하는 기법들이 있다. 예를 들어, 커널 리지 회귀(kernel ridge regression)는
를 최소화하는 문제로 볼 수 있으며, $K$는 커널행렬(kernel matrix)이다. RBF(가우시안) 커널, 폴리널 커널 등을 사용하여, 고차원의(혹은 무한차원의) 피처 공간에서 선형회귀를 수행하는 것과 동등한 효과를 낸다. 보다 확률적인 접근법으로는 가우시안 프로세스 회귀(Gaussian Process Regression, GPR)가 있는데, 함숫값 전체를 다변량정규분포로 모형화하고, 공분산 함수(커널)로부터 예측구간까지 추정한다. 가우시안 프로세스 회귀는 예측값뿐 아니라 예측의 불확실성에 대한 정교한 추정을 제공한다는 이점이 있다.
앙상블 회귀(회귀트리, 랜덤포레스트, 부스팅 등)
선형 혹은 커널 기반이 아닌 트리 기반 방법을 확장하여, 회귀 문제에도 적용할 수 있다. 회귀트리는 Gini 계수가 아니라 평균제곱오차(MSE) 혹은 평균절댓값오차(MAE) 기준으로 분할 규칙을 찾는다. 결정트리는 단순하고 직관적이지만, 단독 사용 시 편향이 높고(underfitting) 예측 안정성이 떨어질 수 있다.
이를 보완하기 위해 앙상블 기법(ensemble methods)들이 널리 쓰인다. 배깅(Bagging) 기반의 랜덤포레스트 회귀(Random Forest Regressor)는 여러 회귀트리를 무작위 서브샘플링해 구성하고, 예측값을 평균하여 편향과 분산을 절충한다. 그래디언트 부스팅(GBM), XGBoost, LightGBM 등은 잔차를 단계적으로 줄이는 방향으로 트리를 순차적으로 추가하여 높은 예측 정확도를 달성한다.
해석 가능성과 모델 설명
복합적인 회귀모델(예: 앙상블, 딥러닝 등)을 사용할수록 해석력이 떨어질 수 있다. 실무에서 중요한 변수가 무엇이며, 각 독립변수가 종속변수에 어떤 방식으로 영향을 주는지 설명해야 할 때, 다양한 해석 기법을 동원한다. 부분종속도(Partial Dependence) 플롯, 개별 관측에 대한 기여도를 측정하는 SHAP(SHapley Additive exPlanations), LIME(Local Interpretable Model-agnostic Explanations) 등을 활용하면 모델의 국소적·전역적 거동을 시각화하고 해석할 수 있다.
리소스 분산 환경과 대규모 병렬처리
데이터 규모가 매우 큰 상황에서 행렬 차원도 방대하다면, 단일 머신에서의 선형대수 연산이 한계에 부딪힐 수 있다. 이러한 대규모 문제에 대해서는 Spark MLlib 같은 분산 환경에서 회귀분석을 수행하거나, 메시지 패싱 인터페이스(MPI)를 통한 병렬 연산, 블록 분해(block decomposition) 기법, 압축된 행렬 연산 등을 고려한다. 반복적 최적화 알고리즘(확률적 경사하강법, ADMM 등)을 분산 처리로 확장하여, 대용량 데이터를 여러 워커(worker)가 나누어 처리한 뒤, 주기적으로 파라미터를 동기화하는 방식을 쓴다.
추가 연구 방향
회귀분석은 통계학, 기계학습, 수치해석이 종합된 분야로, 불확실성 정량화(UQ)나 베이지안 계층모형, 딥러닝 기반의 회귀(MLP, CNN, RNN 등), 그래프상에서의 회귀분석(그래프신호처리) 등으로 계속 확장되고 있다. 컴퓨팅 자원의 발달과 더불어, 이론적 해석과 함께 대규모 실험도 가능해져, 다양한 분야에서 새로운 응용이 지속적으로 나타나고 있다.
Last updated