2017년/machine learning

텐서플로우 선형회귀에 대해 알아보자

위지원 2017. 8. 16. 11:19

막상또 모델을 생성하려하니 일전에 햇던게 기억이안난다. 간단하게 다시 알아보자.

선형회귀란 쉽게 말해 종속변수 y(목표값) 와 한개이상의 독립변수(영향을 미치는..설명변수)x와의 선형 상관관계를 모델링하는 회귀분석 기법

이때 독립변수가 여러개이면 다중선형회귀라고 한다.


알고리즘 선정에 대한 글을 읽었을 때 목적값의 형태가 수치값이면 회귀를 선택하라고 나와있다. (회귀,선형회귀,가중치부여회귀등..)


식으로 나타내면 y=x1w1+x2w2+b 이때 w가 하나의 가중치이다.


코드 출처 https://deeptensorflow.github.io/2017/02/19/what-is-linear-regression-with-tensorflow/ 


우선 종속변수와 독립변수의 데이터를 준비한다.


x=[1,2,3] 독립변수

y=[2,3,6] 종속변수


#다중회귀

x=[[1,2],[2,3]..]

y=[4,5]



종속변수와 독립변수를 담을 일종의 변수 그릇을 선언해서 나중에 값을 전달해서 할 수 도있다.


x=tf.placeholder(tf.float32)

y=tf.placeholder(tf.float32)



위 방정식에서 w,b에 대해 변수를 선언한다.


w=tf.Variable(tf.random_uniform([1],-1.0,1.0))

b=tf.Variable(tf.random_uniform([1],-1.0,1.0))


#다중회귀

w=tf.Variable(tf.random_uniform([3,1],-1,1))



방정식의 모델을 선언한다 (단순회귀기준)


model=w*x+b


#다중회귀

model=tf.matmul(x,w)


cost변수 선언 (비용함수로써 이 함수가 최소화 되는 w값 값을 찾아야한다) https://youtu.be/Hax03rCn3UI ( 코스트 설명 )

코스트 함수는 쉽게 말해서 실제 측정된 값과 예측한 값의 차이를 연산하는 함수를 말한다.


cost=tf.reduce_mean(tf.square(model-y))


gradient descent (경사 하강법) 최적화를 위한 옵티마이저 https://youtu.be/TxIVr-nk1so ( 경사하강법 설명 )

옵티마이저는 최소값을 찾는 알고리즘을 일컫는다.  어떠한 2차방정식그래프에서 한점(w)위체대해서 경사가 아래로 되어있는 부분으로 점을

움직이면서 값을 구하는 것이다.이렇게 반복적으로 w를 움직이다보면 cost값이 작아지는 w위치에서 미분하면 된다(기울기를 구하면 된다)



코스트,경사하강 설명 http://bcho.tistory.com/1139


a=tf.Variable(0.1)

optimizer=tf.train.GradientDescentOptimizer(a)

train=optimizer.minimize(cost)


트레인 전에 변수들을 초기화한다.


init=tf.gloabla_variables_initializer()


텐서의 세션 선언


sess=tf.Session()

sess.run(init)


실제 트레이닝


for step in range(횟수):

sess.run(train,feed_dict={X:x,Y:y})

print(step,sess.run(cost,feed_dict={X,x,Y:y}),sess.run(w),sess.run(b))



예측



print(sess.run(model,feed_dict={x:원하는값}))