다중 선형 회귀
📋 문서 버전
이 문서는 2개의 버전이 있습니다. 현재 최신 버전을 보고 있습니다.
다중 선형 회귀
다중 선형 회귀(Multiple Linear Regression)는 하나의 종속 변수(dependent variable)와 두 개 이상의 독립 변수(independent variables) 간의 선형 관계를 모델링하는 통계적 기법이다. 머신러닝과 통계학에서 널리 사용되며, 특히 수치 예측 문제(regression problems)에서 기본이 되는 모델로 자리 잡고 있다. 이 문서에서는 다중 선형 회귀의 개념, 수학적 원리, 가정 조건, 활용 사례 및 구현 방법에 대해 설명한다.
개요
다중 선형 회귀는 단순 선형 회귀의 확장된 형태로, 여러 변수가 종속 변수에 미치는 영향을 동시에 분석할 수 있게 해준다. 예를 들어, 집값을 예측할 때 방의 수, 면적, 위치, 연식 등 여러 요인이 영향을 미친다면, 이들 독립 변수를 동시에 고려하여 보다 정확한 예측 모델을 구축할 수 있다.
이 모델은 다음과 같은 형태의 방정식으로 표현된다:
[ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_n x_n + \epsilon ]
- ( y ): 종속 변수 (예: 집값)
- ( x_1, x_2, \dots, x_n ): 독립 변수 (예: 면적, 방의 수 등)
- ( \beta_0 ): 절편 (intercept)
- ( \beta_1, \beta_2, \dots, \beta_n ): 각 독립 변수의 회귀 계수
- ( \epsilon ): 오차 항 (error term), 잡음 또는 모델이 설명하지 못하는 부분
모델의 수학적 원리
1. 최소제곱법 (Ordinary Least Squares, OLS)
다중 선형 회귀의 계수는 일반적으로 최소제곱법(OLS)을 통해 추정된다. 이 방법은 관측값과 모델의 예측값 사이의 제곱 오차의 합을 최소화하는 계수를 찾는다.
수식으로 표현하면:
[ \min_{\beta} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 ]
여기서 ( \hat{y}i = \beta_0 + \beta_1 x{i1} + \cdots + \beta_k x_{ik} )는 예측값이다.
행렬 형태로 표현하면 다음과 같다:
[ \hat{\beta} = (X^T X)^{-1} X^T y ]
- ( X ): 독립 변수들의 설계 행렬 (design matrix)
- ( y ): 종속 변수 벡터
- ( \hat{\beta} ): 추정된 회귀 계수 벡터
이 식은 ( X^T X )가 역행렬을 가질 수 있을 때만 적용 가능하다. 만약 독립 변수들 사이에 완전한 다중공선성(multicollinearity)이 존재하면, 역행렬 계산이 불가능해진다.
다중 선형 회귀의 가정 조건
다중 선형 회귀 모델이 유효하려면 다음과 같은 통계적 가정을 만족해야 한다. 이를 고전적 회귀 가정(classical linear regression assumptions)이라고 한다.
- 선형성(Linearity): 종속 변수와 독립 변수 간의 관계는 선형이다.
- 오차의 정규성(Normality of errors): 오차 항 ( \epsilon )은 정규분포를 따른다.
- 등분산성(Homoscedasticity): 오차의 분산은 모든 관측치에 대해 일정하다.
- 오차의 독립성(Independence): 오차 항들은 서로 독립적이다 (자기상관 없음).
- 다중공선성의 부재(No multicollinearity): 독립 변수들 사이에 완전한 선형 관계가 없다.
이 가정들이 위반되면 회귀 계수의 추정이 편향되거나 신뢰구간이 부정확해질 수 있다.
활용 사례
다중 선형 회귀는 다양한 분야에서 활용된다.
- 부동산: 집값 예측 (면적, 위치, 연식, 방의 수 등)
- 의학: 환자의 혈압을 나이, 체중, 흡연 여부 등으로 예측
- 경제학: GDP 성장률 예측 (투자, 소비, 수출 등 변수 활용)
- 마케팅: 광고비 투자 대비 매출 예측 (TV, 온라인, 인쇄 광고 등)
장점과 한계
장점
- 해석이 직관적이고 쉬움 (각 계수는 해당 변수의 영향도를 의미)
- 계산이 간단하고 빠름
- 기반 이론이 잘 확립되어 있음
한계
- 비선형 관계를 포착하지 못함
- 이상치(outliers)에 민감함
- 독립 변수가 많을 경우 과적합(overfitting) 발생 가능
- 다중공선성 문제에 취약함
구현 예시 (Python)
다음은 Python의 <a href="/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4/scikit-learn" class="wiki-link">scikit-learn</a> 라이브러리를 사용한 간단한 다중 선형 회귀 구현 예시이다.
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 가상 데이터 생성
np.random.seed(42)
X = np.random.rand(100, 3) # 3개의 독립 변수
y = 3 + 2*X[:,0] + 5*X[:,1] + 1.5*X[:,2] + np.random.randn(100)*0.1 # 종속 변수
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 모델 학습
model = LinearRegression()
model.fit(X_train, y_train)
# 예측
y_pred = model.predict(X_test)
# 평가
print("R² 점수:", r2_score(y_test, y_pred))
print("MSE:", mean_squared_error(y_test, y_pred))
print("계수:", model.coef_)
print("절편:", model.intercept_)
관련 기법
다중 선형 회귀의 한계를 보완하기 위해 다음과 같은 확장 모델이 개발되었다:
- 릿지 회귀(Ridge Regression): L2 정규화를 통해 다중공선성 문제 완화
- 라쏘 회귀(Lasso Regression): L1 정규화로 변수 선택 기능 제공
- 엘라스틱넷(Elastic Net): 릿지와 라쏘의 혼합 모델
참고 자료 및 관련 문서
- [1] James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An Introduction to Statistical Learning. Springer.
- [2] Kutner, M. H., et al. (2005). Applied Linear Statistical Models. McGraw-Hill.
- 관련 문서:
- 단순 선형 회귀
- 정규화 회귀
- 회귀 분석의 가정 검정
다중 선형 회귀는 머신러닝의 기초이자 강력한 도구로, 데이터 기반 의사결정의 핵심 역할을 한다. 적절한 전처리와 가정 검토를 통해 신뢰할 수 있는 결과를 도출할 수 있다.
모델 평가 지표
모델의 성능을 평가하기 위해 결정계수를 사용하며, 특히 변수가 여러 개인 다중 회귀에서는 수정된 결정계수를 함께 고려해야 한다.
$R^2$ (결정계수)
결정계수는 모델이 종속 변수의 전체 분산 중 얼마만큼을 설명하는지를 나타내는 지표이다. 0에서 1 사이의 값을 가지며, 1에 가까울수록 모델의 설명력이 높다고 판단한다.
Adjusted $R^2$ (수정된 결정계수)
일반 $R^2$는 실제로는 종속 변수와 관계없는 무의미한 변수가 추가되더라도 수학적 특성상 값이 유지되거나 증가하는 경향이 있다. 이는 모델이 복잡해짐에 따라 발생하는 과적합(Overfitting) 문제를 반영하지 못한다.
수정된 결정계수는 독립 변수의 개수를 고려하여 페널티를 부여함으로써, 변수 증가가 실제로 모델의 설명력을 유의미하게 향상시켰는지를 평가한다. 만약 변수를 추가했는데 $R^2$는 증가하지만 Adjusted $R^2$가 감소한다면, 해당 변수는 모델에 도움이 되지 않는 불필요한 변수일 가능성이 높다.
다중공선성 진단 및 해결
다중공선성이란 독립 변수들 사이에 강한 상관관계가 존재하여 회귀 계수 추정치의 분산이 커지고 모델의 신뢰성이 떨어지는 현상을 말한다.
진단 방법
- 상관계수 행렬(Correlation Matrix): 변수 간의 피어슨 상관계수를 계산하여 0.8~0.9 이상의 높은 값을 보이는 변수 쌍을 확인한다.
- VIF (Variance Inflation Factor, 분산 팽창 지수): 특정 독립 변수를 다른 독립 변수들로 회귀 분석했을 때의 결정계수를 이용하여 계산한다. [ \text{VIF}_i = \frac{1}{1 - R_i^2} ]
- VIF < 5: 다중공선성 문제가 거의 없음
- 5 $\le$ VIF < 10: 주의가 필요함 (약한 다중공선성)
- VIF $\ge$ 10: 심각한 다중공선성 존재 $\rightarrow$ 해당 변수 제거 또는 처리 필요
해결 방안
- 변수 제거: VIF가 가장 높은 변수를 하나씩 제거하며 모델을 재구축한다.
- 변수 결합: 상관관계가 높은 두 변수를 합쳐 새로운 지표(예: 평균, 합계)를 생성하거나 주성분 분석(PCA)을 통해 차원을 축소한다.
- 정규화 회귀: 릿지(Ridge)나 라쏘(Lasso) 회귀를 사용하여 계수의 크기를 제한한다.
가정 조건 검증 방법
모델의 신뢰성을 확보하기 위해 다음과 같은 시각적·통계적 방법으로 가정을 검증한다.
잔차 분석 Plot 해석
- 선형성 및 등분산성: '예측값 vs 잔차 Plot'을 그렸을 때, 잔차가 0을 중심으로 무작위하게 흩어져 있어야 한다. 만약 특정 패턴(곡선 형태나 깔때기 모양)이 나타나면 선형성 가정이 위배되었거나 등분산성이 깨진 것으로 해석한다.
- 정규성: 'Q-Q Plot'에서 점들이 직선 위에 놓여 있으면 오차가 정규분포를 따른다고 판단한다.
통계적 검정
- 독립성: Durbin-Watson 검정을 통해 자기상관을 확인한다. 수치가 2에 가까우면 독립적이며, 0이나 4에 가까우면 강한 자기상관이 있다고 본다.
상호작용 효과 (Interaction Effect)
기본 다중 선형 회귀 모델은 각 독립 변수가 종속 변수에 독립적으로 영향을 미친다고 가정한다. 하지만 실제로는 한 변수의 효과가 다른 변수의 수준에 따라 달라지는 상호작용 효과가 존재할 수 있다.
추가 방법 및 예시
상호작용 항은 두 독립 변수의 곱($x_1 \times x_2$)을 새로운 변수로 추가하여 모델링한다. [ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 (x_1 \times x_2) + \epsilon ]
예시: '광고비'와 '제품 가격'이 '매출'에 미치는 영향을 분석할 때, 광고비의 효과가 제품 가격이 낮을 때 더 크게 나타난다면 두 변수 사이에 상호작용이 있다고 볼 수 있다. 이때 $(광고비 \times 가격)$ 항을 추가하여 이 시너지 또는 상쇄 효과를 정량화할 수 있다.
통계적 유의성 확인 (Python)
scikit-learn은 예측 성능에 집중하는 반면, <a href="/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Python/statsmodels" class="wiki-link wiki-link-missing">statsmodels</a> 라이브러리는 각 변수의 통계적 유의성을 상세히 분석하는 요약 보고서를 제공한다.
import statsmodels.api as sm
# statsmodels는 절편(intercept)을 자동으로 추가하지 않으므로 직접 추가해야 함
X_train_sm = sm.add_constant(X_train)
# OLS 모델 학습
model_sm = sm.OLS(y_train, X_train_sm).fit()
# 요약 보고서 출력
print(model_sm.summary())
보고서 해석 포인트: - P-value ($P > |t|$): 일반적으로 0.05 미만일 때 해당 독립 변수가 종속 변수에 통계적으로 유의미한 영향을 미친다고 판단한다. - Confidence Interval [0.025, 0.975]: 회귀 계수의 95% 신뢰구간이다. 이 구간에 0이 포함되어 있다면 해당 변수는 유의미하지 않을 가능성이 높다.
이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.