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

    2017. 8. 16. 11:19

    by. 위지원

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

    선형회귀란 쉽게 말해 종속변수 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