선형 회귀와 경사 하강법의 핵심 원리 및 예측 구현

데이터의 패턴을 찾는 과정: 선형 회귀

머신러닝은 수많은 데이터 속에 숨겨진 규칙성을 수학적 모델로 찾아내는 과정입니다. 예를 들어, 2차원 평면에 흩어져 있는 점들을 가장 잘 설명할 수 있는 직선을 찾는 문제를 생각해 보겠습니다. 이 직선이 곧 데이터의 흐름을 대변하는 '모델'이 됩니다.

우리는 흔히 다음과 같은 1차 함수 식으로 모델을 정의합니다.

y = wx + b

여기서 w는 가중치(Weight), b는 편향(Bias)을 의미합니다. 최적의 모델을 찾는다는 것은 데이터와 모델 사이의 오차를 최소화하는 최적의 wb를 찾아내는 과정입니다.

손실 함수(Loss Function)와 최소제곱법

모델이 데이터를 얼마나 잘 설명하는지 측정하기 위한 지표가 필요합니다. 이를 '손실 함수' 또는 '비용 함수'라고 부릅니다. 가장 대표적인 방법은 최소제곱법(Least Squares Method)입니다.

예측값과 실제값의 차이를 제곱하여 모두 더한 값으로, 수식은 다음과 같습니다.

SE=(ypred-ytrue)2

차이를 제곱하는 이유는 음수 값을 제거하고, 오차가 클수록 더 큰 페널티를 부여하기 위함입니다. 이 값이 작을수록 모델의 정확도는 높아집니다.

최적화를 위한 경사 하강법(Gradient Descent)

손실 함수의 값을 최소로 만드는 가중치를 찾기 위해 경사 하강법을 사용합니다. 이는 함수의 기울기(미분값)를 따라 점진적으로 최저점을 찾아가는 알고리즘입니다.

안개가 낀 산에서 하산할 때, 현재 발밑의 경사가 가장 가파른 곳으로 한 걸음씩 내딛는 전략과 비슷합니다. 가중치를 업데이트하는 식은 다음과 같습니다.

새로운 가중치 = 현재 가중치 - (학습률 * 기울기)

학습률(Learning Rate)의 중요성

경사 하강법에서 한 번에 이동하는 거리를 학습률이라고 합니다. 이는 개발자가 직접 설정해야 하는 하이퍼파라미터(Hyperparameter)입니다.

  • 너무 작은 학습률: 최저점에 도달하기까지 너무 많은 시간이 걸립니다.
  • 너무 큰 학습률: 최저점을 지나쳐 버리거나 값이 발산하여 학습이 제대로 이루어지지 않습니다.
  • 적절한 학습률: 안정적이고 빠르게 최적의 해에 수렴합니다.

파이썬을 활용한 선형 회귀 구현

간단한 데이터를 생성하고 선형 회귀 모델을 학습시키는 예제 코드입니다.

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

# 1. 데이터 생성
np.random.seed(10)
features = 2 * np.random.rand(20, 1)
labels = 5 + 4 * features + np.random.randn(20, 1)

# 2. 모델 생성 및 학습
model = LinearRegression()
model.fit(features, labels)

# 3. 새로운 데이터에 대한 예측
test_points = np.array([[0.5], [1.5], [2.5]])
predictions = model.predict(test_points)

# 4. 결과 시각화
plt.scatter(features, labels, color='blue', label='Actual Data')
plt.plot(features, model.predict(features), color='red', label='Regression Line')
plt.scatter(test_points, predictions, color='green', marker='X', s=100, label='Predictions')
plt.xlabel('X (Feature)')
plt.ylabel('y (Label)')
plt.legend()
plt.show()

print(f"가중치(w): {model.coef_[0][0]:.2f}")
print(f"편향(b): {model.intercept_[0]:.2f}")

주요 회귀 기법 정리

데이터의 특성과 목적에 따라 다양한 회귀 기법이 사용됩니다.

기법명 핵심 특징 수식/특징 요약
선형 회귀 (Linear) 독립 변수와 종속 변수 간의 선형 관계 모델링 y = wx + b
로지스틱 회귀 (Logistic) 이진 분류 문제 해결에 사용되는 확률 모델 시그모이드 함수 활용
릿지 회귀 (Ridge) L2 규제를 사용하여 과적합 방지 MSE + α * Σw²
라쏘 회귀 (Lasso) L1 규제를 사용하여 불필요한 특성 제거 MSE + α * Σ|w|
엘라스틱 넷 (ElasticNet) 릿지와 라쏘의 장점을 결합한 형태 L1 + L2 규제 혼합

태그: machine learning Linear Regression Gradient Descent scikit-learn Optimization

5월 27일 14:38에 게시됨