본문 바로가기
카테고리 없음

선형회귀(Linear Regression)는 데이터 분석과 예측 모델링에서 가장 기본적이고 널리 사용되는 통계적 방법 (실습)

by 혜룐 2025. 3. 31.

선형회귀는 입력 변수(독립 변수, X)와 출력 변수(종속 변수, Y) 사이의 선형 관계를 모델링하는 방법이다. 즉, X가 변할 때 Y가 어떻게 변하는지를 직선(또는 고차원에서는 평면)으로 표현하는 것이죠.

Y = β₀ + β₁X₁ + β₂X₂ + ... + βₙXₙ + ε

여기서

  • Y는 예측하려는 값(종속 변수) = 예를 들어 집 가격
  • X₁, X₂, ..., Xₙ은 입력 변수들(독립 변수) = 예를 들어 집의 크기
  • β₀는 y절편(상수항) = Y-절편, 직선이 Y축과 만나는 지점
  • β₁, β₂, ..., βₙ은 각 입력 변수의 계수(기울기) = X가 1단위 증가할 때 Y가 얼마나 증가하는지
  • ε은 오차항

선형회귀의 목표는 데이터에 가장 잘 맞는 선(또는 평면)을 찾는 것입니다. 이를 위해 보통 '최소제곱법'을 사용하여 실제 값과 예측 값 사이의 오차 제곱합을 최소화합니다.

선형회귀는 다음과 같은 상황에서 유용합니다:

  • 변수 간의 관계를 이해하고 싶을 때
  • 한 변수의 변화가 다른 변수에 미치는 영향을 측정하고 싶을 때
  • 미래 값을 예측하고 싶을 때

예를 들어, 집 크기(X)와 가격(Y) 데이터가 있다면, 선형회귀는 이 두 변수 간의 관계를 학습하고 새로운 집 크기에 대한 가격을 예측할 수 있습니다. 여기서 우리는 명확한 입력(X)과 출력(Y)을 가지고 있으므로 지도학습입니다. 주택 가격을 예측하는 모델에서는 집의 크기, 방의 개수, 위치 등이 독립 변수가 되고, 가격이 종속 변수가 됩니다. 선형회귀는 이러한 특성들이 가격에 어떻게 영향을 미치는지 모델링할 수 있습니다.


 

  • 데이터 생성: 집 크기와 가격 사이의 선형 관계를 가진 가상의 데이터셋을 만듭니다.
  • 데이터 시각화: 산점도를 통해 데이터의 분포를 확인합니다.
  • 데이터 분할: 훈련 세트와 테스트 세트로 나눕니다.
  • 모델 훈련: 선형회귀 모델을 생성하고 훈련 데이터로 훈련시킵니다.
  • 모델 평가: RMSE(평균 제곱근 오차)와 R²(결정계수) 같은 지표로 모델 성능을 평가합니다.
  • 시각화: 실제 값과 예측 값을 비교하는 그래프를 그립니다.
  • 새 데이터 예측: 훈련된 모델을 사용해 새로운 집 크기에 대한 가격을 예측합니다.

https://colab.research.google.com/drive/1cUfqb2BDrR-5ADECPzzW89ovC2Xtz2u0

 

Google Colab Notebook

Run, share, and edit Python notebooks

colab.research.google.com

기본 예제이고 예제를 확장해서 아래와같은 것들을 시도해볼수 있다.

  • 다중 선형회귀: 여러 독립 변수(예: 집 크기, 방 수, 지역 등) 사용
  • 다항 회귀: 비선형 관계를 다항식으로 모델링
  • 정규화: Ridge나 Lasso 회귀를 사용하여 과적합 방지

 

기본 예제로 돌려본 모델이 학습한 파라미터를 보면 (원래스케일)

  1. 기울기 (β₁) = 3.5000:
    • 집 크기가 1제곱미터 증가할 때마다, 집 가격은 평균 3.5백만원 증가합니다.
    • 예: 50제곱미터 집과 51제곱미터 집을 비교하면, 평균적으로 3.5백만원 차이가 날 것으로 예상됩니다.
  2. 절편 (β₀) = 49.7448:
    • 이론적으로 크기가 0인 집의 가격입니다 (실제로는 의미가 없을 수 있음).
    • 모델의 시작점으로 생각하면 됩니다.
  3. 예측 방정식: 가격 = 3.50 × 크기 + 49.74
    • 이 공식에 집 크기를 넣으면 예상 가격이 나옵니다.
    • 예: 100제곱미터 집의 예상 가격 = 3.50 × 100 + 49.74 = 399.74백만원

모델 성능지표를 설명해보면

1. RMSE (평균 제곱근 오차)

RMSE는 모델의 예측이 실제 값과 얼마나 차이 나는지를 원래 단위로 보여줍니다.

  • 계산 방법:
    1. 각 데이터 포인트마다 (실제값 - 예측값)²을 계산합니다.
    2. 이 값들의 평균을 구합니다.
    3. 그 결과의 제곱근을 구합니다.
  • 실용적 의미:
    • RMSE = 20.17백만원은 예측된 집 가격이 실제 가격과 평균적으로 약 20백만원 정도 차이가 난다는 의미입니다.
    • 예: 실제 가격이 300백만원인 집에 대해, 모델은 280백만원에서 320백만원 사이의 값을 예측할 가능성이 높습니다.

2. R² (결정계수)

R²은 모델이 데이터의 변동성을 얼마나 잘 설명하는지 나타냅니다.

  • 계산 방법:
    1. 모델이 설명하는 변동성 / 전체 변동성
  • 값의 범위와 의미:
    • 0 ~ 1 사이의 값을 가집니다.
    • 1에 가까울수록 모델이 데이터를 더 잘 설명합니다.
    • 0이면 모델이 데이터를 전혀 설명하지 못합니다.
  • 실용적 의미:
    • R² = 0.99는 모델이 데이터 변동성의 99%를 설명한다는 의미입니다.
    • 즉, 집 크기만으로 집 가격 변동의 99%를 설명할 수 있다는 뜻입니다.
    • 이렇게 높은 R² 값은 매우 좋은 모델임을 의미합니다.

훈련 데이터와 테스트 데이터의 차이

  • 훈련 데이터: 모델을 학습시키는 데 사용된 데이터입니다.
  • 테스트 데이터: 모델이 본 적 없는 새로운 데이터로, 모델의 일반화 능력을 평가합니다.

훈련 데이터와 테스트 데이터의 성능이 비슷하다면 (우리 예제처럼), 모델이 새로운 데이터에도 잘 작동할 것임을 의미합니다. 만약 훈련 데이터에서는 성능이 좋지만 테스트 데이터에서는 성능이 크게 떨어진다면, 이는 모델이 "과적합(overfitting)"되었다는 신호입니다.

실제 예시로 이해하기

예를 들어 다음 집에 대한 가격을 예측해 봅시다:

  • 집 크기: 120제곱미터

모델 예측: 3.50 × 120 + 49.74 = 469.74백만원

이 예측의 불확실성은 RMSE만큼입니다. 즉, 실제 가격은 약 469.74 ± 20백만원 범위 내에 있을 가능성이 높습니다.