선형회귀

이재상·2023년 9월 4일
0

선형 회귀: 데이터 분석과 예측의 핵심


서론

  • 선형 회귀는 기계 학습과 통계 분석에서 핵심적인 역할을 하는 개념 중 하나입니다.
  • 이 블로그 글에서는 선형 회귀의 기본 개념, 작동 원리, 다양한 변형 및 Python을 사용한 예제 코드를 상세히 설명하겠습니다.

선형 회귀란 무엇인가요?

  • 선형 회귀는 종속 변수와 하나 이상의 독립 변수 간의 관계를 모델링하는 통계적 기법입니다.
  • 이러한 관계를 직선적인 모델로 가정하며, 이를 통해 데이터의 패턴을 분석하고 예측하는 데 사용됩니다.
  • 선형 회귀는 머신러닝 및 통계 분석의 기초 중 하나이며, 다양한 분야에서 사용됩니다.

선형 회귀의 작동 원리

선형 회귀는 다음과 같은 기본 가정을 기반으로 합니다:

1. 종속 변수와 독립 변수 간의 선형 관계

종속 변수와 독립 변수 사이의 관계가 직선 형태로 가정됩니다.

2. 잔차의 정규성

잔차(예측값과 실제 값의 차이)는 정규 분포를 따른다고 가정합니다.

3. 잔차의 독립성

잔차는 서로 독립적이며, 이전 예측값에 영향을 미치지 않습니다.

선형 회귀 모델은 주어진 독립 변수와 종속 변수 사이의 관계를 나타내는 회귀 방정식을 학습합니다. 일반적으로 가장 많이 사용되는 형태는 단순 선형 회귀와 다중 선형 회귀입니다.

  • 단순 선형 회귀

    • 단순 선형 회귀는 하나의 독립 변수와 하나의 종속 변수 간의 관계를 모델링합니다. 회귀 방정식은 다음과 같습니다:
    y=b0+b1xy= b0 +b1⋅x
  • 다중 선형 회귀

    • 다중 선형 회귀는 둘 이상의 독립 변수와 하나의 종속 변수 간의 관계를 모델링합니다. 회귀 방정식은 다음과 같습니다:
    y=b0+b1x1+b2x2++bnxny=b0+b 1⋅x 1+b 2⋅x 2+…+b n⋅x n

선형 회귀의 필요성

선형 회귀는 데이터 분석과 예측 모델링에 광범위하게 사용됩니다. 몇 가지 중요한 용도는 다음과 같습니다:

1. 예측

선형 회귀 모델은 주어진 독립 변수 값을 사용하여 종속 변수의 값을 예측하는 데 사용됩니다.

2. 상관 관계 분석

선형 회귀는 변수 간의 상관 관계를 이해하고 각 변수가 종속 변수에 미치는 영향을 분석하는 데 도움이 됩니다.

3. 가설 검정

특정 독립 변수가 종속 변수에 영향을 미치는지 여부를 통계적으로 검정하는 데 사용됩니다.

4. 데이터 시각화

선형 회귀는 데이터를 시각화하고 독립 변수와 종속 변수 간의 관계를 직관적으로 이해하는 데 도움이 됩니다.


선형 회귀의 예제 코드 (Python)

아래는 Python을 사용하여 작성한 간단한 선형 회귀 예제 코드입니다. 코드의 실행 결과는 데이터 포인트와 회귀선을 시각화한 그래프입니다.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 독립 변수 (X)와 종속 변수 (Y)
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
Y = np.array([2, 4, 5, 4, 5])

# 선형 회귀 모델 생성
model = LinearRegression()

# 모델 학습
model.fit(X, Y)

# 회귀 계수 및 절편
coeff = model.coef_
intercept = model.intercept_

# 예측
Y_pred = model.predict(X)

# 데이터와 회귀선 시각화
plt.scatter(X, Y, label='실제 데이터')
plt.plot(X, Y_pred, color='red', label='선형 회귀 예측')
plt.xlabel('독립 변수')
plt.ylabel('종속 변수')
plt.legend()
plt.show()

이제 위 코드 예제를 실행하면 데이터와 회귀선을 포함한 그래프가 생성됩니다.


다중 선형 회귀 예제 코드

이번에는 다중 선형 회귀의 예제 코드를

제공합니다.

import numpy as np
from sklearn.linear_model import LinearRegression

# 예제 데이터 생성
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
Y = np.array([2, 4, 5, 4, 5])

# 다중 선형 회귀 모델 생성
model = LinearRegression()

# 모델 학습
model.fit(X, Y)

# 회귀 계수 및 절편
coeff = model.coef_
intercept = model.intercept_

# 예측
Y_pred = model.predict(X)

다중 선형 회귀는 하나 이상의 독립 변수를 사용하여 종속 변수를 예측하는 데 유용합니다.


정규화된 선형 회귀 (Ridge와 Lasso)

정규화된 선형 회귀는 과적합을 방지하고 모델의 일반화 성능을 향상시키는 데 사용됩니다. 아래에서는 Ridge와 Lasso 회귀의 예제 코드를 제공합니다.

Ridge 회귀

from sklearn.linear_model import Ridge

# Ridge 회귀 모델 생성
ridge_model = Ridge(alpha=1.0)  # alpha는 정규화 강도를 조절하는 매개변수

# 모델 학습
ridge_model.fit(X, Y)

# 예측
Y_ridge_pred = ridge_model.predict(X)

Lasso 회귀

from sklearn.linear_model import Lasso

# Lasso 회귀 모델 생성
lasso_model = Lasso(alpha=1.0)  # alpha는 정규화 강도를 조절하는 매개변수

# 모델 학습
lasso_model.fit(X, Y)

# 예측
Y_lasso_pred = lasso_model.predict(X)

Ridge와 Lasso는 모델 복잡성을 제어하고 예측 성능을 향상시키는데 사용됩니다.


다항 회귀 예제 코드

다항 회귀는 비선형 관계를 모델링할 때 유용한 기법입니다. 아래는 다항 회귀의 예제 코드입니다.

from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline

# 다항 회귀 모델 생성
degree = 2  # 다항식의 차수 설정
polyreg_model = make_pipeline(PolynomialFeatures(degree), LinearRegression())

# 모델 학습
polyreg_model.fit(X, Y)

# 예측
Y_poly_pred = polyreg_model.predict(X)

다항 회귀를 사용하면 독립 변수와 종속 변수 간의 비선형 관계를 더 잘 모델링할 수 있습니다.


선형 회귀 평가

선형 회귀 모델의 성능을 평가하는 중요한 지표로는 평균 제곱 오차(MSE)와 R-squared (R2) 값이 있습니다. MSE는 예측값과 실제 값 사이의 오차를 제곱하여 계산하며, R2는 모델의 설명력을 나타냅니다.

예측 모델 평가를 위한 코드 예제:

from sklearn.metrics import mean_squared_error, r2_score

# MSE 계산
mse = mean_squared_error(Y, Y_pred)

# R-squared 계산
r2 = r2_score(Y, Y_pred)

위 코드는 예측 모델의 성능을 평가하는 방법을 보여줍니다.


결론

어렵다.


profile
방랑하는 개발자

0개의 댓글