노는게 제일 좋습니다.

tensorflow 6 : multi-variable Linear Regression 본문

Python/통계 및 데이터관련

tensorflow 6 : multi-variable Linear Regression

노는게 제일 좋습니다. 2017. 1. 15. 23:11

https://www.youtube.com/watch?v=UYWJkyYln2s&feature=youtu.be

https://www.inflearn.com/course-status-2/

이곳을 보고 공부하고, 이해한 내용을 바탕으로 정리한 것


multi : 여러개

variable(또는 feature) : 변수(특징) --- x값을 말합니다.

Linear Regression : 우리가 아는 그 리니어 리그레션


multi-variable Linear Regression : 여러 개의 입력을 받는 리그레션


1.

기존에 사용하던 hypothesis(가설)은 H(x) = Wx+b와 같은 형태였다.

그런데, 여기서 x1,x2와 같이 여러 개의 변수를 둘 수도 있다. 그 예는 다음과 같다.

특징(feature) x가 늘어나면 그에 따라 W(가중치)도 늘어나게 된다.

cost함수는 기존과 동일하다.


2.

위의 H(x1,x2)와 같이 식을 적다보면 식이 너무 길어지는 문제가 있다. (쓰기 힘들고 보기 힘들다)

그래서 행렬(Matrix)이라는 개념을 사용하여 식을 간단하게 만들어준다.


다시 H(x)=Wx+b라는 식을 세워보자. W1~3을 담은 행렬을 W에 대입하고, x1~3을 담은 행렬을 x에 대입하면 된다.

우리가 원래 알던 Linear Regression의 가설로, multi-variable Linear Regression의 가설을 표현할 수 있게 된 것이다.


3.

H(x)=Wx+b 라고 식을 줄였지만, 여전히 b가 거슬린다.

그럴 땐 행렬에 b까지 넣어버리면 된다.



4.

행렬에는 Transpose라는 개념이 있다. 행렬 오른쪽위에 지수 쓰듯이 T를 붙이면 된다.

어.. 그냥 그렇다고 한다.

http://www.wikihow.com/Transpose-a-Matrix


5.

x_data = [[1,1,1,1,1],
          [1.,0.,3.,0.,5.],
           [0.,2.,0.,4.,0.]]
y_data = [1,2,3,4,5]

feature(학습데이터의 x들)를 2개 넣어주고 싶다면 다음과 같이 학습데이터를 정의할 수 있다.

x_data[0]부분에 1111이라고 되어있는데.. b를 hypothesis에 쓰지 않기 위해 넣은 것이다. 3번항목 참조.


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

이 구문에서는 W를 3개 선언하는 것 처럼 나와있지만. 사실 1개는 b로, 2개는 W의 용도로 사용한다.


6.

numpy라는 패키지를 통해 보다 편안하게 파이썬으로 학습데이터를 불러올 수 있다.


7.

tf.matmul(W,X)와 tf.matmul(X,W)는 다르다.

W가 1*3행렬, X가 3*1행렬이라면 W*X는 가능하지만, X*W는 불가능하다.

a*b행렬과 m*n행렬을 곱하는 경우, b와 m이 같아야만 행렬곱셈이 가능하다. 

Comments