선형회귀는 머신러닝의 가장 기본적이면서도 강력한 알고리즘 중 하나입니다. 종속변수라 불리는 예측하고자 하는 값 y, 독립변수라 불리는 입력 특성인 x, 가중치(기울기) w, 편향(bias) b로 수학적 표현을 나타냅니다.
작동 원리는 데이터 포인트들을 가장 잘 표현하는 직선을 찾는 것이 목표이고, 실제 값과 예측 값의 차이(오차)를 최소화하는 방향으로 학습합니다.

[Fig 1] 선형 회귀 예시
그림과 같이 데이터 포인트들을 가장 잘 표현하는 최적의 직선을 찾아 오차를 줄여가는 방법으로 학습합니다. 경사 하강법(Gradient Descent)를 통해 최적의 파라미터(가중치, 편향)을 찾고 학습률을 설정하여 파라미터 업데이트 속도를 조절합니다. 후에, 반복적으로 활용된 비용 함수를 최소화하는 방향으로 파라미터를 조정합니다.
from sklearn.linear_model import LinearRegression
import numpy as np
# 데이터 준비
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 4, 6, 8, 10])
# 모델 생성
model = LinearRegression()
# 모델 학습
model.fit(X, y)
# 예측
predictions = model.predict([[6]])
print(f"가중치(w): {model.coef_[0]}")
print(f"편향(b): {model.intercept_}")
print(f"예측값: {predictions[0]}")
단순한 코드로 구현하는 방식은 이렇습니다. 추후 실제 데이터세트를 가지고 활용하는 코드를 게시하겠습니다.
해석은 다음 예시와 같이 할 수 있습니다.
(예시) 공부시간과 시험점수 관계
가중치(w,coef): 5
편향(b,y) : 40
예측값: 90
공부시간이 1시간 증가할때마다 점수가 5점씩 증가합니다. "공부를 1시간 더 하면 평균 5점이 상승합니다."
공부를 전혀 하지 않았을때의 기본 점수가 40점입니다. "아무리 공부를 안해도 기본 점수는 40점"
10시간 공부하게 되면 예상 점수는 90점입니다. "(5*10)+40=90"
이와 같이 해석이 가능합니다.
3가지의 변수로 다음과 같은 수식으로 활용합니다.
기본 개념은 비용 함수의 최솟값을 찾는 것이 목표입니다. 함수의 기울기를 계산하고 기울기가 가리키는 반대 방향으로 이동합니다. 이 과정을 지속적으로 반복하여 비용 함수의 최솟값에 도달할 수 있도록 합니다.
학습률(α)가 너무 크게 되면 최솟값을 지나쳐버리게 되는 오버슈팅 문제가 생깁니다. 반대로, 학습률이 너무 낮게 되면 학습이 매우 느려저 적절한 학습률 설정이 매우 중요합니다.
배치 경사 하강법(Batch Gradient Descent)
전체 데이터세트를 활용하여 기울기를 계산하는 방법입니다. 정확하지만 계산 비용이 크다는 단점이 있습니다.
확률적 경사 하강법(Stochastic Gradient Descent, SGD)
데이터 포인트를 하나씩 사용합니다. 전체 데이터세트를 활용하는 배치 경사하강법보다는 빠르지만, 노이즈가 많이 생긴다는 단점이 있습니다.
미니 배치 경사 하강법(Mini-batch Gradient Desent)
데이터의 일부분을 사용합니다. 위의 2가지 방식의 장점을 결합한 방법입니다.
활용할 수 있는 코드의 예시는 다음과 같습니다.
def gradient_descent(x, y, learning_rate=0.01, n_iterations=1000):
# 초기 파라미터
w = 0
b = 0
for i in range(n_iterations):
# 예측값
y_pred = w * x + b
# 기울기 계산
dw = -(2/len(x)) * sum(x * (y - y_pred))
db = -(2/len(x)) * sum(y - y_pred)
# 파라미터 업데이트
w = w - learning_rate * dw
b = b - learning_rate * db
return w, b
경사하강법은 딥러닝을 포함한 대부분의 머신러닝 알고리즘의 학습 과정에서 핵심적인 역할을 하는 중요한 요소이기에, 추후에 다른 챕터로 자세히 다루겠습니다.
위에 나타나는 선형 회귀 분석은 단일(단순) 회귀 분석이라 표현합니다.
다중 선형 회귀 분석은 여러개의 독립변수를 활용합니다. 아래의 수식과 같이 표현하고, 더 복잡한 관계도 모델링이 가능합니다.
여기까지 기초 머신러닝인 선형 회귀분석에 대하여 알아봤습니다.
지속적으로 머신러닝 기법들을 포스팅하겠습니다. 읽어주셔서 감사합니다.