-
막상또 모델을 생성하려하니 일전에 햇던게 기억이안난다. 간단하게 다시 알아보자.
선형회귀란 쉽게 말해 종속변수 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:원하는값}))
'2017년 > machine learning' 카테고리의 다른 글
분류 알고리즘 KNN , 로지스틱회귀에 대한 고찰 (0) 2017.08.28 머신런닝에관해 좋은글 (0) 2017.08.21 tensorflow csv file 불러오기 (0) 2017.08.07 텐써플로우 큐 (0) 2017.08.01 머신런닝 기초 (0) 2017.06.27