728x90
반응형
SMALL
1️⃣ 다중 선형 회귀란 무엇인가요?
다중 선형 회귀(Multiple Linear Regression)는 단순 선형 회귀의 확장 개념으로, 두 개 이상의 독립 변수를 사용하여 하나의 종속 변수 YY를 예측하는 회귀 모델입니다.
현실에서는 하나의 원인보다 여러 요인이 함께 작용하는 경우가 많기 때문에, 단순 선형 회귀보다 더 실용적인 분석이 가능합니다.
예를 들어, 주택 가격은 단순히 ‘평수’뿐 아니라 ‘방 개수’, ‘건물 연식’, ‘위치’ 등 다양한 요소의 영향을 받을 수 있습니다. 이처럼 여러 요인이 함께 작용할 때 다중 선형 회귀가 효과적으로 사용됩니다.
2️⃣ 수학적 표현
다중 선형 회귀는 다음과 같은 형태의 방정식으로 표현됩니다:
각 독립 변수의 영향을 선형적으로 조합하여 예측값을 계산하는 방식입니다.
3️⃣ 다중 선형 회귀의 주요 가정
다중 선형 회귀 모델이 신뢰성 있게 작동하려면 다음과 같은 통계적 가정들을 만족하는 것이 좋습니다:
가정 | 설명 |
선형성 (Linearity) | 독립 변수와 종속 변수 사이의 관계는 선형적이어야 합니다. |
독립성 (Independence) | 독립 변수들 간에는 강한 상관관계(다중공선성)가 없어야 합니다. |
등분산성 (Homoscedasticity) | 오차(Residual)는 입력값의 크기에 관계없이 일정한 분포를 가져야 합니다. |
정규성 (Normality) | 오차는 정규 분포를 따라야 하며, 평균이 0이어야 합니다. |
이러한 가정이 충족되지 않으면 모델이 예측한 회귀 계수의 신뢰도가 낮아지거나 해석에 문제가 생길 수 있습니다.
4️⃣ 모델링 과정 요약
다중 선형 회귀 모델을 만들기 위한 일반적인 단계는 다음과 같습니다:
- 데이터 수집 및 전처리
- 결측치 처리, 이상치 제거, 정규화 등 기본 전처리를 진행합니다.
- 특성 선택 및 다중공선성 확인
- 상관 계수 분석이나 VIF(분산 팽창 계수)를 통해 문제 있는 특성을 제거합니다.
- 모델 학습 및 평가
- MSE(평균제곱오차), R²(결정계수) 등의 지표로 모델 성능을 평가합니다.
- 모델 최적화
- 불필요한 특성 제거, 정규화 기법 적용 등으로 성능을 개선할 수 있습니다.
✅ 실습 과제: 다중 선형 회귀 모델 구현해보기
다음은 두 개의 독립 변수(방 개수와 평수)를 가지고 주택 가격을 예측하는 다중 선형 회귀 모델 실습 예제입니다:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
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)
size = 100
X1 = np.random.rand(size, 1) * 10 # 방 개수
X2 = np.random.rand(size, 1) * 100 # 평수
y = 50 + 5 * X1 + 2 * X2 + np.random.randn(size, 1) * 5 # 주택 가격
# 데이터프레임 구성
df = pd.DataFrame(np.hstack([X1, X2, y]), columns=["Rooms", "Size", "Price"])
# 특성과 타깃 분리
X = df[["Rooms", "Size"]]
y = df["Price"]
# 훈련/테스트 분리
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(f"MSE: {mse:.2f}")
print(f"R² Score: {r2:.2f}")
# 결과 시각화
plt.scatter(y_test, y_pred, color="blue")
plt.xlabel("Actual Prices")
plt.ylabel("Predicted Prices")
plt.title("Actual vs Predicted Prices")
plt.grid(True)
plt.show()
🔍 실습 결과 해석
- MSE (평균제곱오차): 예측값과 실제값 간의 평균 제곱 차이. 값이 작을수록 예측 정확도가 높습니다.
- R² Score (결정계수): 전체 변동성 중 모델이 설명할 수 있는 비율. 1에 가까울수록 모델의 설명력이 우수합니다.
- 시각화된 그래프에서 점들이 대각선에 가깝게 위치할수록 예측이 정확하다는 뜻입니다.
728x90
반응형
LIST
'인공지능 (AI) > 머신러닝 (ML)' 카테고리의 다른 글
6 - 숫자부터 문자까지, 분류의 확장: 다중 클래스 분류와 소프트맥스 회귀 (0) | 2025.04.03 |
---|---|
5 - 분류의 시작: 로지스틱 회귀와 시그모이드 함수 (0) | 2025.04.03 |
4 - 회귀 모델 성능, 어떻게 더 좋게 만들 수 있을까? (0) | 2025.04.03 |
2 - 숫자로 미래를 그리다: 선형 회귀 (0) | 2025.04.03 |
1 - 데이터가 스스로 배우는 세상: 머신러닝 개요 (0) | 2025.04.03 |