저번 글에서는 선형회귀 분석을 Python으로 구현을 해보았습니다. (Python 선형회귀 분석 바로가기)
이번엔 비용함수(Cost Function)에 대해 조금 더 자세히 알아가 보도록 하겠습니다.
아래 그림을 한번 보도록 하죠
저희 가설이 H(x) = w*x+b라는것을 알수있습니다. 실제 데이터셋에 맞는 선형회귀모델을 만들기 위해서는 저희 가설이 Y=2*x라는 값과 최대한 같아져야 하죠.
x1, x2, x3 값이 주어 졌을때 H(x)의 값이 y의 값에 가까울 수록 잘 예측한 선형회귀 모델이 되는 것이죠.
아래와 같은 비용함수(Cost Function)을 보시면 x1,x2,x3 ....xn 을 입력하였을때의 가설과 실제 y 값의 차에 대한 평균인것을 알 수 있습니다.
비용함수가 가장 작은 w값이 실제 y값과 가장 유사한 값이라고 생각할 수 있습니다.
그리고 가장 유사한 w값을 찾아가는 과정을 학습(learning)한다고 합니다.
자 그러면 이 부분을 Python을 통해 확인해보도록 하겠습니다.
x = 1,2,3 과 y = 1,2,3에서 W값에 따른 비용함수 값을 확인해보도록 하죠~
y=1*x가 되므로 W=1이 되는 지점이 비용함수가 제일 작게 나와야 합니다.
import tensorflow as tf
X = [1.,2.,3.]
Y = [1.,2.,3.]
m = len(X)
W = tf.placeholder(tf.float32)
hypothesis = tf.multiply(W,X)
cost = tf.reduce_sum(tf.pow(hypothesis-Y,2))/m
import matplotlib.pyplot as plt
plt.plot(W_val,cost_val,'ro') #ro -> red, 'o' makrer
plt.ylabel('Cost', color = 'w')
plt.xlabel('W', color = 'w')
plt.grid()
plt.xticks(fontsize = 14, color = 'w')
plt.yticks(fontsize = 14, color = 'w')
plt.show()
W 는 1이 나오는걸 알 수 있습니다.