선형 회귀란 간단하게 선을 통한 값의 예측이라고 볼 수 있다. 선형 회귀 모델은 아래와 같은 형태를 가지고 있다.
$$ y = w\times x + b $$
이 때 학습에 사용되는 성능 측정 지표는 RMSE(혹은 MSE)이다.
이는 Mean Square Error으로 평균 제곱 오차라고도 불린다. 수식은 다음과 같다.
$$ MSE(X,h_\theta)=\frac{1}{m}\sum^m_{i=1}(\theta^Tx_i-y_i)^2 $$
간단한 mse를 통한 GD는 위의 pdf 파일을 확인하자.
Cost function을 최소화하는 값을 찾기 위한 방법이다. 수식은 $\hat\theta=(X^TX)^{-1}X^Ty$ 이며 $\hat\theta$ 는 cost function을 최소화하는 $\theta$ 값이며, $y$ 의 형태는 벡터의 형태이다. 실습을 진행해보자.
import numpy as np
import matplotlib.pyplot as plt
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
plt.plot(X, y, ".")
plt.xlabel("X")
plt.ylabel("y", rotation=0)
plt.show()

위와 같이 랜덤한 데이터가 생성되었다.
다음으로 정규방정식을 통해 $\hat\theta$ 값을 계산해보자.
X_b = np.c_[np.ones((100, 1)), X]
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
print(theta_best)
>> [[3.82999468]
[2.92780504]]
앞서 생성한 임의의 weight와 bias의 값은 각각 4와 3이었다. 정규방정식을 통해 계산한 weight와 bias의 값은 약 3.8과 2.9로 꽤 근사하게 값이 계산된 것을 확인할 수 있다. 하지만 노이즈가 들어감으로 완전한 값을 예측할 수 없었다.