“선형 회귀(Linear Regression)“와 “다중 회귀(Multiple Regression)“는 데이터 분석과 예측 모델링에서 널리 사용되는 두 가지 회귀 분석 방법이다. 이들의 주요 차이점은 독립 변수(예측 변수)의 수와 그들이 모델에 어떻게 통합되는지에 있다.
선형 회귀(Linear Regression)
- 정의: 선형 회귀는 한 개의 독립 변수와 한 개의 종속 변수 간의 관계를 모델링하는 방법이다.
- 사용: 이 방법은 데이터에서 두 변수 간의 선형 관계를 찾는 데 사용된다.
예를 들어, 집의 방 개수와 집 가격 사이의 관계를 분석할 수 있다. - 수학적 표현
여기서 는 종속 변수, 는 독립 변수
는 절편, 는 기울기(회귀 계수), 은 오차 항이다. - 특징: 모델은 하나의 독립 변수에 대한 단순한 선형 관계를 가정한다.
다중 회귀(Multiple Regression)
- 정의: 다중 회귀는 두 개 이상의 독립 변수와 한 개의 종속 변수 간의 관계를 모델링하는 방법이다.
- 사용: 이 방법은 여러 요인이 결과에 미치는 영향을 동시에 고려할 때 사용된다.
예를 들어, 집 가격을 결정하는 데에 집의 방의 개수, 위치, 연식 등 여러 변수가 영향을 미칠 수 있다. - 수학적 표현
여기서 는 종속 변수, 는 독립 변수
는 절편, 는 변수들의 회귀 계수, 은 오차 항이다. - 특징: 모델은 복잡한 현실 세계에서 여러 변수가 결과에 미치는 영향을 동시에 고려할 수 있다.
주요 차이점
- 변수의 수: 선형 회귀는 한 개의 독립 변수를 사용하는 반면, 다중 회귀는 두 개 이상의 독립 변수를 사용한다.
- 복잡성: 다중 회귀는 더 복잡한 데이터 세트와 현실 세계의 문제를 모델링할 수 있다.
- 적용 범위: 다중 회귀는 변수 간의 상호작용과 같이 더 복잡한 관계를 탐색할 수 있으므로, 선형 회귀보다 넓은 범위의 상황에 적용될 수 있다.
Python 예제 코드
선형 회귀 분석 예제
먼저 Boston Housing Dataset의 RM 변수(방의 수)를 사용하여 주택 가격(MEDV)을 예측하는 선형 회귀 모델을 만들어 보자.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
data = pd.read_csv('./housing_data.csv')
# 선형 회귀: 'RM'을 독립 변수로 사용
X = data['RM']
y = data['MEDV']
X = sm.add_constant(X)
model = sm.OLS(y, X).fit()
# 결과 시각화
plt.scatter(data['RM'], data['MEDV'], alpha=0.5)
plt.plot(data['RM'], model.predict(X), color='red')
plt.title('Linear Regression: House Price vs Number of Rooms')
plt.xlabel('Number of Rooms (RM)')
plt.ylabel('House Price (MEDV)')
plt.show()
# 모델 요약 결과 출력
print(model.summary())
- R-squared(결정 계수): 0.484. 이는 모델이 종속 변수 ‘MEDV’의 변동성의 약 48.4%를 설명한다는 것을 의미한다.
- Coef(계수): ‘RM’(방의 수)의 계수는 9.1021이며, 이는 방의 수가 하나 증가할 때마다 주택 가격이 평균적으로 9.1021만큼 증가한다는 것을 의미한다.
- P>|t|: ‘RM’의 p-값이 매우 낮다(0.000), 이는 ‘RM’이 주택 가격에 유의미한 영향을 미친다는 것을 나타낸다.
다중 회귀 분석 예제
다음으로, RM 뿐만 아니라 다른 변수들도 포함하여 주택 가격을 예측하는 다중 회귀 모델을 만들어보자.
# 다중 회귀: 'RM', 'LSTAT', 'PTRATIO'를 독립 변수로 사용
X = data[['RM', 'LSTAT', 'PTRATIO']]
y = data['MEDV']
X = sm.add_constant(X)
model = sm.OLS(y, X).fit()
# 각 독립 변수와 종속 변수 간의 관계를 개별적으로 시각화
sns.pairplot(data, x_vars=['RM', 'LSTAT', 'PTRATIO'], y_vars='MEDV', height=4, aspect=1, kind='reg')
plt.suptitle('Multiple Regression: Relationship with MEDV')
plt.show()
# 모델 요약 결과 출력
print(model.summary())
- R-squared(결정 계수): 0.679. 이는 모델이 종속 변수 ‘MEDV’의 변동성의 약 67.9%를 설명한다는 것을 의미하며, 선형 회귀 모델보다 높은 것을 볼 수 있다.
- Coef(계수): ‘RM’의 계수는 4.5154, ‘LSTAT’의 계수는 -0.5718, ‘PTRATIO’의 계수는 -0.9307이다. 이는 ‘RM’이 증가하면 주택 가격이 증가하고, ‘LSTAT’과 ‘PTRATIO’가 증가하면 주택 가격이 감소한다는 것을 의미한다.
- P>|t|: 모든 독립 변수의 p-값이 매우 낮아, 이 변수들이 주택 가격에 유의미한 영향을 미친다는 것을 나타낸다.
결론
이 포스트를 통해 선형 회귀와 다중 회귀 분석의 기본 개념과 이들이 데이터 사이언스에서 어떻게 적용되는지에 대해 알아보았다.
선형 회귀는 단순성과 명확한 해석이라는 장점을 가지고 있으며, 다중 회귀는 복잡한 데이터 세트를 보다 정밀하게 분석할 수 있도록 해준다. 이러한 분석 방법은 데이터에서 유의미한 패턴을 찾고, 미래의 결과를 예측하는 데 있어 매우 실용적인 도구이며, 손쉽게 적용해볼 수 있는 방법이니 활용해보도록 하자.