Devxplorer - 부업·재테크 자동화 프로젝트

지루한건 로봇에게 시키고 당신은 생각만 하세요.

Devxplorere 자세히보기

IT (IT)🤖🧠/AI

현실세계 다양한 문제해결을 위한 다중회귀

데브엑스플로러 2025. 3. 22. 13:49
728x90
반응형

머신러닝에서 회귀(Regression)는 연속적인 숫자 값을 예측하는 데 사용되는 대표적인 지도학습(Supervised Learning) 방법입니다. 그중 가장 기본이 되는 **선형회귀(Linear Regression)**부터, 이를 확장한 다항회귀(Polynomial Regression), 그리고 입력 변수가 여러 개인 **다중회귀(Multiple Linear Regression)**까지 알아보겠습니다.


📌 선형 회귀 (Linear Regression)

✅ 정의:

선형 회귀는 입력 변수(X)와 출력 변수(y) 사이의 관계가 **직선(선형)**이라고 가정하는 모델입니다. 하나의 독립 변수로 하나의 종속 변수를 예측합니다.

✅ 수식:

y = aX + b
  • a: 기울기 (slope)
  • b: 절편 (intercept)

✅ 예시:

  • 광고비가 증가할수록 판매량이 증가하는 관계

✅ 특징:

  • 해석이 매우 쉬움
  • 과적합 위험이 낮음
  • 단, 입력-출력 관계가 직선일 때만 유효

📈 다항 회귀 (Polynomial Regression)

✅ 정의:

선형 회귀를 확장하여, 입력 변수의 제곱, 세제곱 등 고차항을 추가해 곡선 형태의 데이터도 모델링할 수 있게 한 회귀 방식입니다.

✅ 수식 (2차 다항 회귀):

y = aX^2 + bX + c

✅ 예시:

  • 온도가 너무 낮거나 너무 높을 때 판매량이 줄고, 중간 온도에서 가장 많이 팔리는 아이스크림 판매량 예측

✅ 특징:

  • 비선형 관계를 모델링할 수 있음
  • 차수가 너무 높아지면 과적합(overfitting) 발생 가능

📊 다중 회귀 (Multiple Linear Regression)

✅ 정의:

다중 회귀는 입력 변수가 여러 개인 경우에 사용하는 선형 회귀 방식입니다. 즉, 여러 독립 변수(X1, X2, X3...)가 하나의 종속 변수(y)에 영향을 줄 때 사용됩니다.

✅ 수식:

y = a1X1 + a2X2 + a3X3 + ... + b

✅ 예시:

  • 집값 예측: 면적, 방 개수, 위치, 건축년도 등 여러 요인으로 가격 예측

✅ 특징:

  • 현실 세계의 다양한 문제에 적합
  • 독립 변수 간의 **다중공선성(multicollinearity)**에 주의 필요

❌ 한계점 및 극복 방법:

  1. 다중공선성 문제: 입력 변수들 간에 강한 상관관계가 있을 경우, 계수 추정이 불안정해지고 해석이 어려워질 수 있습니다.
  2. 선형 가정 한계: 변수 간의 관계가 반드시 선형일 필요가 있기 때문에, 비선형적인 관계는 잘 설명하지 못함.
  3. 이상치에 민감: 극단적인 데이터가 모델을 왜곡할 수 있습니다.
  4. 데이터 전처리 중요: 누락값, 범주형 변수 처리 등 사전 작업이 충분히 되어야 모델 성능이 나옵니다.

🛠 극복 방법:

  • 다중공선성 해결: 변수 선택 기법(예: VIF 제거), PCA(주성분 분석) 등을 통해 상관관계 높은 변수를 줄입니다.
  • 비선형 관계 대응: 다중 회귀 대신 다항 회귀나 트리 기반 모델(Random Forest, XGBoost 등) 사용을 고려합니다.
  • 이상치 완화: 이상치를 탐지하여 제거하거나, 로그/루트 변환 등을 통해 완화합니다.
  • 정규화 기법 사용: 릿지 회귀(Ridge), 라쏘 회귀(Lasso)와 같은 정규화 모델을 활용해 과적합과 불안정성을 줄일 수 있습니다.
  • 범주형 변수 처리: 원-핫 인코딩(One-Hot Encoding) 등 적절한 전처리 방식을 사용합니다.** 누락값, 범주형 변수 처리 등 사전 작업이 충분히 되어야 모델 성능이 나옵니다.

💻 다중 회귀 Python 예제 코드

아래는 Python의 scikit-learn을 사용한 간단한 다중 회귀 구현 예제입니다:

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import pandas as pd

# 예시 데이터프레임 생성
data = {
    '면적': [30, 45, 60, 70, 80],
    '방개수': [1, 2, 2, 3, 3],
    '연식': [15, 10, 8, 5, 2],
    '가격': [1.2, 2.0, 2.5, 3.0, 3.8]
}

# 데이터 준비
df = pd.DataFrame(data)
X = df[['면적', '방개수', '연식']]
y = df['가격']

# 학습/테스트 데이터 분리
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)
print(f'MSE: {mse:.2f}')

 


🔍 세 가지 회귀 방식 비교

항목선형 회귀다항 회귀다중 회귀

입력 변수 1개 1개 (단 고차항 포함) 여러 개
출력 변수 1개 1개 1개
관계 형태 직선 곡선 직선 (다차원)
장점 해석 쉬움, 간단 비선형 관계 표현 가능 다양한 변수 반영 가능
단점 비선형 데이터에는 부적합 과적합 위험 다중공선성 주의 필요, 선형 가정 한계

✅ 마무리

  • 선형 회귀는 머신러닝 회귀 모델의 가장 기초이며 직선적인 관계에 적합합니다.
  • 다항 회귀는 이를 확장하여 곡선 관계를 설명합니다.
  • 다중 회귀는 여러 요인이 동시에 결과에 영향을 줄 때 사용하는 현실적인 모델입니다.

각 회귀 모델은 데이터의 형태와 목적에 따라 선택해야 하며, 분석 전에 데이터 시각화와 탐색이 중요합니다.

📢 더 많은 머신러닝 모델과 실습 예제를 알고 싶다면 블로그를 구독하고 함께 공부해요! 🚀

반응형