개요
선형 회귀(Linear Regression)는 두 개 이상의 변수 간의 관계를 모델링하는 통계적 방법입니다. 이 방법은 독립 변수와 종속 변수 사이의 직선적 관계를 추정하는 데 사용됩니다. 가장 간단한 형태인 단순 선형 회귀(Simple Linear Regression)에서는 하나의 독립 변수와 하나의 종속 변수가 있으며, 다중 선형 회귀(Multiple Linear Regression)에서는 여러 독립 변수를 사용하여 종속 변수를 예측합니다.
선형 회귀의 기본 개념
선형 회귀의 기본 개념은 다음과 같습니다:
- 독립 변수(Independent Variable, X): 예측에 사용되는 변수입니다.
- 종속 변수(Dependent Variable, Y): 예측하려는 대상 변수입니다.
- 회귀 직선(Regression Line): 데이터의 경향을 가장 잘 나타내는 직선입니다. 회귀 직선의 방정식은 다음과 같습니다:
Y = β0 + β1X + ε
- Y: 종속 변수
- X: 독립 변수
- β0: 절편(intercept)
- β1: 기울기(slope)
- ε: 오차(term)
단순 선형 회귀(Simple Linear Regression)
단순 선형 회귀는 하나의 독립 변수와 하나의 종속 변수 사이의 관계를 모델링합니다. 회귀 직선의 기울기와 절편을 구하기 위해 최소 제곱법(Least Squares Method)을 사용합니다. 최소 제곱법은 데이터 포인트와 회귀 직선 사이의 거리(오차)의 제곱 합을 최소화하는 값을 찾는 방법입니다.
다중 선형 회귀(Multiple Linear Regression)
다중 선형 회귀는 여러 개의 독립 변수를 사용하여 종속 변수를 예측합니다. 회귀 방정식은 다음과 같습니다:
Y = β0 + β1X1 + β2X2 + ... + βnXn + ε
여기서 X1, X2, ..., Xn은 독립 변수들이며, β1, β2, ..., βn은 각 독립 변수에 대한 회귀 계수입니다.
선형 회귀의 가정
선형 회귀는 다음과 같은 몇 가지 가정에 기반합니다:
- 선형성(Linearity): 독립 변수와 종속 변수 간의 관계가 선형적입니다.
- 독립성(Independence): 관측치들이 서로 독립적입니다.
- 등분산성(Homoscedasticity): 오차의 분산이 일정합니다.
- 정규성(Normality): 오차 항이 정규 분포를 따릅니다.
선형 회귀 모델의 평가
선형 회귀 모델의 성능을 평가하기 위해 다음과 같은 지표를 사용합니다:
- 결정 계수(R-squared, R²): 모델이 종속 변수의 변동성을 얼마나 설명하는지를 나타냅니다. R² 값이 1에 가까울수록 모델의 설명력이 높습니다.
- 평균 제곱 오차(Mean Squared Error, MSE): 관측 값과 예측 값 사이의 오차 제곱 합의 평균입니다.
- 평균 절대 오차(Mean Absolute Error, MAE): 관측 값과 예측 값 사이의 절대 오차의 평균입니다.
선형 회귀의 구현
선형 회귀는 다양한 프로그래밍 언어와 라이브러리를 사용하여 쉽게 구현할 수 있습니다. 다음은 파이썬(Python)과 사이킷런(scikit-learn)을 사용한 간단한 구현 예제입니다:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
# 데이터 생성
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 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)
# 모델 평가
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print("Mean Squared Error:", mse)
print("R-squared:", r2)
# 시각화
plt.scatter(X_test, y_test, color='black', label='Actual')
plt.plot(X_test, y_pred, color='blue', linewidth=3, label='Predicted')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Linear Regression')
plt.legend()
plt.show()
선형 회귀의 확장
선형 회귀는 기본적인 형태 외에도 다양한 확장이 가능합니다:
- 다항 회귀(Polynomial Regression): 독립 변수의 다항식을 사용하여 비선형 관계를 모델링합니다.
- 릿지 회귀(Ridge Regression): 회귀 계수의 크기를 제한하여 과적합(overfitting)을 방지하는 정규화 기법입니다.
- 라쏘 회귀(Lasso Regression): 일부 회귀 계수를 0으로 만들어 변수 선택이 가능하게 하는 정규화 기법입니다.
선형 회귀의 응용
선형 회귀는 다양한 분야에서 널리 사용됩니다. 예를 들어:
- 경제학: 변수 간의 관계를 분석하여 경제 지표를 예측합니다.
- 공학: 실험 데이터를 분석하여 시스템의 성능을 예측하고 최적화합니다.
- 의학: 환자의 건강 지표와 치료 결과 간의 관계를 분석하여 예측 모델을 구축합니다.
- 사회 과학: 사회 현상 간의 관계를 분석하여 정책 결정을 지원합니다.