📈 선형 회귀 개요
- 머신러닝의 입문 단계에서 가장 먼저 배우는 알고리즘 중 하나가 바로 선형 회귀입니다.
- 입력 변수(
x
)와 출력 변수(y
) 사이의 선형 관계를 바탕으로 미래 값을 예측하는 모델로, 예측 모델링의 기초를 다지는 데 꼭 필요한 개념입니다.
1️⃣ 선형 회귀란?
가장 기본적인 선형 회귀 모델은 다음과 같은 일차 함수 형태로 표현됩니다.
y = ax + b
y
: 예측값 (종속 변수)
x
: 입력값 (독립 변수)
a
: 기울기 (가중치, weight)
b
: y절편 (편향, bias)
즉,
x
가 변할 때 y
가 어떻게 변하는지를 a
와 b
를 통해 학습하게 됩니다.2️⃣ 핵심 개념 요약
용어 | 설명 |
가설 함수 (hypothesis) | 입력 x 에 대한 예측값 ŷ 을 구하는 함수 (예: ŷ = wx + b ) |
가중치 (weight) | 입력에 곱해지는 계수 ( w , a ) |
편향 (bias) | 직선의 y절편 역할을 하는 상수 ( b ) |
손실 함수 (loss function) | 실제값과 예측값의 오차를 계산하는 함수 |
옵티마이저 (optimizer) | 손실 함수를 최소화하도록 가중치와 편향을 조정하는 알고리즘 |
3️⃣ 최소제곱법 (Least Squares Method)
선형 회귀의 목표는 오차(실제값 - 예측값)의 제곱합을 최소화하는 것입니다.
📌 오차 제곱합 (RSS, Residual Sum of Squares):
RSS = Σ(yᵢ - ŷᵢ)²
= Σ(yᵢ - (β₀ + β₁x₁ᵢ + β₂x₂ᵢ + ... + βₙxₙᵢ))²
이를 평균으로 바꾼 것이 평균제곱오차(MSE, Mean Squared Error)입니다.
MSE = (1/n) × Σ(yᵢ - ŷᵢ)²
4️⃣ 경사 하강법 (Gradient Descent)
MSE를 최소화하려면, 손실 함수의 기울기를 계산해서 가중치
w
와 편향 b
를 점진적으로 조정해야 합니다. 이때 사용하는 방법이 바로 경사 하강법입니다.📌 가중치 갱신 공식:
w = w - α × ∂L/∂w
α
: 학습률 (learning rate)
∂L/∂w
: 손실 함수에 대한 편미분 값
5️⃣ 다중 선형 회귀 (Multiple Linear Regression)
변수가 2개 이상일 경우, 방정식은 다음과 같이 확장됩니다:
y = w₁x₁ + w₂x₂ + ... + wₙxₙ + b
📊 선형 회귀 그래프 예시
💻 TensorFlow를 이용한 실습 (Google Colab 실행 가능)
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
# 입력 데이터 (공부 시간)
X = np.array([1, 2, 3, 4, 5], dtype=np.float32)
# 정답 데이터 (시험 점수)
y = np.array([10, 20, 30, 40, 50], dtype=np.float32)
# 모델 정의
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=[1])
])
# 컴파일
model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=0.01),
loss='mse')
# 학습
model.fit(X, y, epochs=100, verbose=0)
# 예측
test_input = 6.0
predicted = model.predict([test_input])[0][0]
print(f"{test_input}시간 공부했을 때 예상 점수: {predicted:.2f}점")
# 시각화
plt.scatter(X, y, label='실제 점수')
plt.plot(X, model.predict(X), color='red', label='예측 선')
plt.xlabel('공부 시간')
plt.ylabel('시험 점수')
plt.legend()
plt.show()
✅ 마무리
선형 회귀는 간단하지만 머신러닝의 기초 수학, 손실 함수, 최적화 개념을 학습하는 데 매우 좋은 출발점입니다. 이후의 로지스틱 회귀, 신경망, 딥러닝으로 확장하는 발판이 됩니다.
Share article