티스토리 뷰

안녕하세요, 여러분! 오늘은 경사하강법(Gradient Descent)을 사용하여 간단한 선형회귀(Linear Regression) 문제를 풀어볼까요? 파이썬 코드를 이용하여 쉽게 이해하고 구현할 수 있습니다.

Andrew Ng의 Machine Learning lecture note를 참조했습니다.  https://drive.google.com/file/d/10L-uvv2y6VI0Bgtv3-egqnR4JGcBTrlQ/view

먼저 필요한 라이브러리를 불러옵니다.

import numpy as np
import matplotlib.pyplot as plt

다음과 같은 5개의 샘플 데이터를 사용하겠습니다.

X = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4.2, 5.7, 8.4, 9.5])

이제 경사 하강법을 설정해야 합니다. 학습률(alpha)을 0.01로 설정하고, 반복 횟수(iterations)는 1000으로 설정합니다. 또한, 데이터의 개수(m)를 구합니다.

alpha = 0.01
iterations = 1000
m = len(y)

가중치(W)와 절편(b)의 초기값은 0.0으로 설정합니다.

W = 0.0
b = 0.0

이제 경사하강법을 이용하여 선형 회귀를 수행합니다. 반복문을 이용하여 오차(loss)를 계산하고, 가중치(W)와 절편(b)를 업데이트합니다.

for i in range(iterations):
    y_pred = W * X + b
    loss = (1 / (2 * m)) * np.sum((y_pred - y) ** 2)
    dW = (1 / m) * np.sum((y_pred - y) * X)
    db = (1 / m) * np.sum(y_pred - y)

    W = W - alpha * dW
    b = b - alpha * db

새로운 데이터를 이용하여 예측을 수행합니다.

X_new = np.array([1.5, 3.4, 6])
y_new = W * X_new + b

마지막으로 결과를 그래프로 시각화합니다.

plt.scatter(X, y, color='blue', label='Actual data')
plt.plot(X, W * X + b, color='red', label='Fitted line')
plt.scatter(X_new, y_new, color='green', marker='o', label='New predictions')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.title('Linear Regression with Gradient Descent')
plt.show()

위 코드를 실행하면, 실제 데이터(파란색 점), 선형 회귀 결과(빨간색 선) 및 새로운 데이터에 대한 예측(녹색 점)이 그래프로 나타납니다. 이렇게 경사하강법을 사용한 선형 회귀를 통해 데이터에 최적화된 직선을 찾을 수 있습니다.

 

 

728x90
반응형
댓글
250x250
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함
공지사항