Top 48 텐서 플로우 다중 회귀 분석 40 Most Correct Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 텐서 플로우 다중 회귀 분석 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: 텐서 플로우 다중 회귀 분석 텐서플로우 2.0 다중 회귀 분석, 텐서플로우 2.0 선형 회귀 예제, Tensorflow 2.0 다중 선형 회귀, 텐서플로우 선형 회귀 예제, 딥러닝 회귀분석 예제, Tensorflow 다중 선형 회귀, TensorFlow 비선형 회귀, 파이썬 다중회귀분석 예제


SPSS 다중 회귀분석 방법 / 중다 회귀분석 / 입력, 단계 선택, 후진, 전진 / 비표준화 계수 / Multiple linear regression analysis /논쓰남
SPSS 다중 회귀분석 방법 / 중다 회귀분석 / 입력, 단계 선택, 후진, 전진 / 비표준화 계수 / Multiple linear regression analysis /논쓰남


TensorFlow를 이용한 다중선형회귀분석 | Big Ben’s Log

  • Article author: rphabet.github.io
  • Reviews from users: 40551 ⭐ Ratings
  • Top rated: 3.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about TensorFlow를 이용한 다중선형회귀분석 | Big Ben’s Log 이렇게 생긴 데이터 셋을 갖고 회귀분석을 하게 된다면 다중회귀분석을 하게 … name=’weight’) # 나중에 값을 바꿀 수 있는 텐서플로우만의 변수. …
  • Most searched keywords: Whether you are looking for TensorFlow를 이용한 다중선형회귀분석 | Big Ben’s Log 이렇게 생긴 데이터 셋을 갖고 회귀분석을 하게 된다면 다중회귀분석을 하게 … name=’weight’) # 나중에 값을 바꿀 수 있는 텐서플로우만의 변수. BigBen’s Log, BBlog
  • Table of Contents:
TensorFlow를 이용한 다중선형회귀분석 | Big Ben's Log
TensorFlow를 이용한 다중선형회귀분석 | Big Ben’s Log

Read More

[텐서플로우] 다중회귀분석 (Multi-variable Linear Regression) 파이썬 코드

  • Article author: diane-space.tistory.com
  • Reviews from users: 41849 ⭐ Ratings
  • Top rated: 3.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [텐서플로우] 다중회귀분석 (Multi-variable Linear Regression) 파이썬 코드 [텐서플로우] 다중회귀분석 (Multi-variable Linear Regression) 파이썬 코드. Diane_ 2020. 4. 17. 09:40. ☆실행 환경 … …
  • Most searched keywords: Whether you are looking for [텐서플로우] 다중회귀분석 (Multi-variable Linear Regression) 파이썬 코드 [텐서플로우] 다중회귀분석 (Multi-variable Linear Regression) 파이썬 코드. Diane_ 2020. 4. 17. 09:40. ☆실행 환경 … ★실행 환경 tensorboard                        1.15.0 tensorflow                         1.15.0 tensorflow-estimator               1…creative collage portfolio : Analysis & skills
  • Table of Contents:
[텐서플로우]  다중회귀분석 (Multi-variable Linear Regression) 파이썬 코드
[텐서플로우] 다중회귀분석 (Multi-variable Linear Regression) 파이썬 코드

Read More

[TensorFlow] 다중 선형 회귀분석 multi-value linear regression :: 마이자몽

  • Article author: myjamong.tistory.com
  • Reviews from users: 36936 ⭐ Ratings
  • Top rated: 3.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [TensorFlow] 다중 선형 회귀분석 multi-value linear regression :: 마이자몽 X, Y 데이터의 변수를 지정해줄때 shape 인자를 각 Tensor에 맞게 넣어준다. None은 아무 숫자나 들어올 수 있다는 뜻이다. X는 독립변수가 3개이므로 N * … …
  • Most searched keywords: Whether you are looking for [TensorFlow] 다중 선형 회귀분석 multi-value linear regression :: 마이자몽 X, Y 데이터의 변수를 지정해줄때 shape 인자를 각 Tensor에 맞게 넣어준다. None은 아무 숫자나 들어올 수 있다는 뜻이다. X는 독립변수가 3개이므로 N * … 출처 : https://www.tensorflow.org 다중 선형 회귀(Multi-Value Linear Regression) 단순 선형 회귀분석에서는 하나의 독립변수 x값에 대해 하나의 종속변수 y값을 찾는 작업을 했었다. 하지만, 실제로 사용하..
  • Table of Contents:

태그

관련글

댓글0

최근글

인기글

티스토리툴바

[TensorFlow] 다중 선형 회귀분석 multi-value linear regression :: 마이자몽
[TensorFlow] 다중 선형 회귀분석 multi-value linear regression :: 마이자몽

Read More

2. 텐서플로우 선형 회귀분석 – First Contact with TensorFlow | 텐서 플로우 블로그 (Tensor ≈ Blog)

  • Article author: tensorflow.blog
  • Reviews from users: 38462 ⭐ Ratings
  • Top rated: 4.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 2. 텐서플로우 선형 회귀분석 – First Contact with TensorFlow | 텐서 플로우 블로그 (Tensor ≈ Blog) 목록으로가기 이 챕터에서 텐서플로우로 간단한 선형 회귀분석(Linear … 관계일 경우 단순 회귀분석이라고 하며 여러개의 변수를 다루는 다중 회귀분석이 있습니다. …
  • Most searched keywords: Whether you are looking for 2. 텐서플로우 선형 회귀분석 – First Contact with TensorFlow | 텐서 플로우 블로그 (Tensor ≈ Blog) 목록으로가기 이 챕터에서 텐서플로우로 간단한 선형 회귀분석(Linear … 관계일 경우 단순 회귀분석이라고 하며 여러개의 변수를 다루는 다중 회귀분석이 있습니다. 이 글은 스페인 카탈루냐 공과대학의 Jordi Torres 교수가 텐서플로우를 소개하는 책 ‘First Contack with TensorFlow’을 번역한 것입니다. 이 글은 원 도서의 라이센스(CC BY-NC-SA 3.0)와 동일한 라이센스를 따릅니다. 파이썬 3  notebook으로 작성한 이 섹션의 코드는 여기에서 보실 수 있습니다. 목록으로가기   이 챕터에서 텐서플로우로 간단한 선형 회귀분석(Linear Regression) 모델을 만들어 보겠습니다. 예제를 통해서 기본적인 코드를 살펴보는 것과 동시에…
  • Table of Contents:

머신러닝(Machine Learning) 딥러닝(Deep Learning) 그리고 텐서(Tensor) 또 파이썬(Python)

변수간의 관계를 모델로

코스트 함수(Cost Function)와 그래디언트 디센트(Gradient Descent) 알고리즘

알고리즘 실행

“2 텐서플로우 선형 회귀분석 – First Contact with TensorFlow”에 대한 10개의 생각

2. 텐서플로우 선형 회귀분석 – First Contact with TensorFlow | 텐서 플로우 블로그 (Tensor ≈ Blog)
2. 텐서플로우 선형 회귀분석 – First Contact with TensorFlow | 텐서 플로우 블로그 (Tensor ≈ Blog)

Read More

[Tensorflow] 다중 선형회귀분석이 뭐야?

  • Article author: hangjastar.tistory.com
  • Reviews from users: 18280 ⭐ Ratings
  • Top rated: 4.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Tensorflow] 다중 선형회귀분석이 뭐야? 네이버 지식백과에서 다중 선형 회귀분석은 독립 변수가 두 개 이상인 경우에 사용하는 선형 … 텐서플로우로 시작하는 딥러닝 기초 강의 – edwith. …
  • Most searched keywords: Whether you are looking for [Tensorflow] 다중 선형회귀분석이 뭐야? 네이버 지식백과에서 다중 선형 회귀분석은 독립 변수가 두 개 이상인 경우에 사용하는 선형 … 텐서플로우로 시작하는 딥러닝 기초 강의 – edwith. 네이버 지식백과에서 다중 선형 회귀분석은 독립 변수가 두 개 이상인 경우에 사용하는 선형 회귀분석이라고 설명합니다. 다중 선형 회귀분석과 선형 회귀의 다른 부분은 무엇인지 알아보고 Tensorflow를 이용하여..
  • Table of Contents:

‘Artificial IntelligenceTensorflow’ Related Articles

티스토리툴바

[Tensorflow] 다중 선형회귀분석이 뭐야?
[Tensorflow] 다중 선형회귀분석이 뭐야?

Read More

[Tensorflow] 다중 선형회귀분석이 뭐야?

  • Article author: medium.com
  • Reviews from users: 39770 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Tensorflow] 다중 선형회귀분석이 뭐야? 본 포스팅은 다중 선형 회귀 분석 기본 포스팅에 이어 직접 텐서플로를 활용하여 다중 선형 회귀를 구현해보는 포스팅입니다. …
  • Most searched keywords: Whether you are looking for [Tensorflow] 다중 선형회귀분석이 뭐야? 본 포스팅은 다중 선형 회귀 분석 기본 포스팅에 이어 직접 텐서플로를 활용하여 다중 선형 회귀를 구현해보는 포스팅입니다. 네이버 지식백과에서 다중 선형 회귀분석은 독립 변수가 두 개 이상인 경우에 사용하는 선형 회귀분석이라고 설명합니다. 다중 선형 회귀분석과 선형 회귀의 다른 부분은 무엇인지 알아보고 Tensorflow를 이용하여..
  • Table of Contents:

‘Artificial IntelligenceTensorflow’ Related Articles

티스토리툴바

[Tensorflow] 다중 선형회귀분석이 뭐야?
[Tensorflow] 다중 선형회귀분석이 뭐야?

Read More

2. Tensorflow 디딤돌 다지기! 선형 회귀 분석 : 네이버 블로그

  • Article author: m.blog.naver.com
  • Reviews from users: 41847 ⭐ Ratings
  • Top rated: 4.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 2. Tensorflow 디딤돌 다지기! 선형 회귀 분석 : 네이버 블로그 선형 회귀 분석(Linear Regression)은 Machine Learning의 기초로서, … 위의 수식을 텐서플로우 코드로 표현한 것입니다. …
  • Most searched keywords: Whether you are looking for 2. Tensorflow 디딤돌 다지기! 선형 회귀 분석 : 네이버 블로그 선형 회귀 분석(Linear Regression)은 Machine Learning의 기초로서, … 위의 수식을 텐서플로우 코드로 표현한 것입니다.
  • Table of Contents:

카테고리 이동

라온피플(주)

이 블로그 
TensorFlow
 카테고리 글

카테고리

이 블로그 
TensorFlow
 카테고리 글

2. Tensorflow 디딤돌 다지기! 선형 회귀 분석 : 네이버 블로그
2. Tensorflow 디딤돌 다지기! 선형 회귀 분석 : 네이버 블로그

Read More

TensorFlow – Multi Variable Linear Regression(다중 선형회귀)

  • Article author: kslee7746.tistory.com
  • Reviews from users: 49690 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about TensorFlow – Multi Variable Linear Regression(다중 선형회귀) markdown # Multi Variable Linear Regression(다중 선형회귀) ____ – 두 개 이상의 독립 변수들과 하나의 종속변수의 관계를 분석하는 기법(단순 … …
  • Most searched keywords: Whether you are looking for TensorFlow – Multi Variable Linear Regression(다중 선형회귀) markdown # Multi Variable Linear Regression(다중 선형회귀) ____ – 두 개 이상의 독립 변수들과 하나의 종속변수의 관계를 분석하는 기법(단순 … @markdown # Multi Variable Linear Regression(다중 선형회귀) ____ – 두 개 이상의 독립 변수들과 하나의 종속변수의 관계를 분석하는 기법(단순 회귀의 확장) – 기존의 선형회귀 식에서 `X`가 앞으로 온 것이..
  • Table of Contents:

태그

‘Deep Learning’ Related Articles

공지사항

최근 포스트

태그

검색

전체 방문자

티스토리툴바

TensorFlow - Multi Variable Linear Regression(다중 선형회귀)
TensorFlow – Multi Variable Linear Regression(다중 선형회귀)

Read More


See more articles in the same category here: 114+ tips for you.

TensorFlow를 이용한 다중선형회귀분석

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

######### 1. 실제 독립변수 (X) 와 종속변수 (T) 를 추가하기 위한 node 생성 X = tf . placeholder ( shape = [ None , 3 ], dtype = tf . float32 ) # 컬럼의 개수는 고정. 들어오는 행의 개수는 상관하지 않는다. # -1 의 의미를 가진 None 이란 keyword를 사용. # None의 뜻은 없다가 아님. don’t care임. 마음대로 넣어라 임. # 즉 “row는 주는대로 받겠다.” 이소리임 T = tf . placeholder ( shape = [ None , 1 ], dtype = tf . float32 ) ######### 2. W and b 설정 W = tf . Variable ( tf . random . normal ([ 3 , 1 ]), name = ‘weight’ ) # 나중에 값을 바꿀 수 있는 텐서플로우만의 변수. # 독립 변수(X)의 열의 크기와 W행의 크기가 같아야함. # 이름은 굳이 안줘도 됨. 하지만 저렇게 이름을 주면 저 이름으로 사용가능. # tf.random 텐서플로가 갖고 있는 랜덤중에서도 normal이라는 정규분포 속성을 이용. # np.random과 똑같음 b = tf . Variable ( tf . random . normal ([ 1 ]), name = ‘bias’ ) ######### 3. hypothesis 설정 H = tf . matmul ( X , W ) + b ######### 4. loss function 설정 loss = tf . reduce_mean ( tf_square ( H – T )) # H – T (예측 데이터 – 실제 데이터) 제곱. 그리고 그거에 대한 평균값 ######### 5. Gradient Descent Algorithm을 통한 학습으로 W, b 재설정 train = tf . train . GradientDescentOptimizer ( learning_rate = 1e-4 ). minimize ( loss ) # 현재 W와 b에서 편미분을 통해 조금더 나아진 W와 b를 구하는 작업을 해주는 node임 # 러닝 레이트를 알려줘서 편미분해서 옵티마이즈 하라고 지시 # 또 뒤에 minimize(loss) 를 붙여주므로써 로스값을 최소화 ######### 6. session & 초기화 sess = tf . Session () sess . run ( tf . global_variables_initializer ()) # Variable 사용시 초기화 함수가 꼭 나와야 작동을 한다. ######### 7. 학습노드를 이용하여 반복학습을 진행하자! for step in range ( 300000 ): tmp , loss_val = sess . run ([ train , loss ], feed_dict = { X : x_data , T : t_data }) # 노드를 실행하면 노드가 가진 값이 나옴. 그래서 tmp로 그 값을 배정 # 노드 두개를 실행. 각각 따로따로 실행하는거임. # train 값은 중요한게 아님, W, b, loss 가 중요! 여기선 loss값만 나온다. if step % 30000 == 0 : print ( “loss: {}” . format ( loss_val ))

[TensorFlow] 다중 선형 회귀분석 multi-value linear regression :: 마이자몽

출처 : https://www.tensorflow.org

다중 선형 회귀(Multi-Value Linear Regression)

단순 선형 회귀분석에서는 하나의 독립변수 x값에 대해 하나의 종속변수 y값을 찾는 작업을 했었다. 하지만, 실제로 사용하는 데이터에서 독립변수가 하나인 경우는 매우 드물다. 예를 들어 총 4번의 시험을 보는데 1, 2, 3번째 시험점수를 기반으로 4번째 시험점수를 예측해볼 수 있는 것 처럼 여러개의 독립변수로 결과값을 예측하기 위해 다중 선형회귀를 사용해보자.

단순 선형 회귀에서 사용하던 가설에 x값을 여러개 추가하여 위와 같은 식으로 가설을 세울수 있다.

독립변수가 추가되어 변경된 가설을 사용하면 cost function식 또한 위와같이 가술 부분만 변경된다.

tensorflow 코드

이번 실습에서는 3개의 시험 결과와 최종시험의 점수를 학습데이터로 다중 선형 회귀를 구현해볼것이다.

학습데이터

시험1 시험2 시험3 최종시험 73 80 75 72 93 88 93 88 89 91 90 92 96 98 100 100 73 66 70 71

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 import tensorflow as tf # 데이터 x1_data = [ 73. , 93. , 89. , 96. , 73. ] x2_data = [ 80. , 88. , 91. , 98. , 66. ] x3_data = [ 75. , 93. , 90. , 100. , 70. ] y_data = [ 72. , 88. , 92. , 100. , 71. ] # 변수 x1 = tf.placeholder(tf.float32) x2 = tf.placeholder(tf.float32) x3 = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32) w1 = tf.Variable(tf.random_normal([ 1 ]), name = ‘weight1’ ) w2 = tf.Variable(tf.random_normal([ 1 ]), name = ‘weight2’ ) w3 = tf.Variable(tf.random_normal([ 1 ]), name = ‘weight3’ ) b = tf.Variable(tf.random_normal([ 1 ]), name = ‘bias’ ) # 가설 hypothesis = x1 * w1 + x2 * w2 + x3 * w3 + b # cost/loss function cost = tf.reduce_mean(tf.square(hypothesis – Y)) # cost function 최소화 optimizer = tf.train.GradientDescentOptimizer(learning_rate = 1e – 5 ) train = optimizer.minimize(cost) # 세션 생성 with tf.Session() as sess: # 사용할 변수 선언 sess.run(tf.global_variables_initializer()) for step in range ( 2001 ): cost_val, hy_val, _ = sess.run([cost, hypothesis, train], feed_dict = {x1: x1_data, x2: x2_data, x3: x3_data, Y: y_data}) if step % 10 = = 0 : print (step, “Cost: ” , cost_val, ”

Prediction:

” , hy_val) cs

단순 선형회귀를 tensorflow로 구현했을때의 코드와 크게 다른 부분은 없다.

변수들이 추가되고, 가설 부분의 식만 변경된다.

2000번 정도의 학습 후 cost function 값은 8 정도의 수치가 나왔고, 학습데이터의 결과와 유사한 Y값이 출력되었다.

독립변수의 개수가 위 예제와 같이 적은 경우 변수들을 나열해서 코드를 작성해도 상관없지만, 고려해야할 독립변수가 많아지면 코드상으로 관리를 편하게 하기 위해서 매트릭스 구조를 사용하여 작업을 진행 해준다.

매트릭스(Matrix)를 사용한 다중 선형 회귀

가설을 매트릭스 곱셈 연산으로 표현을 한다.

using matrix in tensorflow 코드 학습데이터 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import tensorflow as tf # 데이터 x_data = [ [ 73. , 80. , 75. ], [ 93. , 88. , 93. ], [ 89. , 91. , 90. ], [ 96. , 98. , 100. ], [ 73. , 66. , 70. ] ] y_data = [ [ 72. ], [ 88. ], [ 92. ], [ 100. ], [ 71. ] ] cs 매트릭스 형태로 데이터 구조를 변경해준다.

변수

1 2 3 4 5 # 변수 X = tf.placeholder(tf.float32, shape = [None, 3 ]) Y = tf.placeholder(tf.float32, shape = [None, 1 ]) W = tf.Variable(tf.random_normal([ 3 , 1 ]), name = ‘weight’ ) b = tf.Variable(tf.random_normal([ 1 ]), name = ‘bias’ ) cs

사용할 변수를 지정해주는 작업이다. 이전에 Tensor의 Shape가 중요하다는 얘기를 했었는데, 바로 매트릭스를 사용하면서 그 이유를 알 수 있다.

X, Y 데이터의 변수를 지정해줄때 shape 인자를 각 Tensor에 맞게 넣어준다. None은 아무 숫자나 들어올 수 있다는 뜻이다.

X는 독립변수가 3개이므로 N * 3 모양이고, Y 종속 변수는 1개이므로 N * 1 형태의 모형을 갖추고 있다.

매트릭스를 사용할때 가장 중요한 부분은 W의 모형이다.

H(X) = XW의 식에서 매트릭스의 곱셈 연산으로 풀었을때 Y(N * 1) = X(N * 3) * W(3 * 1)

W의 모형이 어떻게 되는지 꼭 파악하고 W변수를 만들어준다.

가설

1 2 # 가설 hypothesis = tf.matmul(X, W) + b cs

가설은 matmul 함수를 이용해서 매트릭스 곱셈연산을 한다.

cost function & 실행

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # cost function cost = tf.reduce_mean(tf.square(hypothesis – Y)) # cost function 최소화 optimizer = tf.train.GradientDescentOptimizer(learning_rate = 1e – 5 ) train = optimizer.minimize(cost) # 세션 생성 with tf.Session() as sess: # 사용할 변수 선언 sess.run(tf.global_variables_initializer()) for step in range ( 2001 ): cost_val, hy_val, _ = sess.run( [cost, hypothesis, train], feed_dict = {X: x_data, Y: y_data} ) if step % 10 = = 0 : print (step, “Cost: ” , cost_val, ”

Predict:

” , hy_val) cs

cost function을 똑같이 구해주고 세션을 생셩하여 실행해준다.

최종 시험의 값을 매트릭스 형태로 반환한다.

전체 코드

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 import tensorflow as tf # 데이터 x_data = [ [ 73. , 80. , 75. ], [ 93. , 88. , 93. ], [ 89. , 91. , 90. ], [ 96. , 98. , 100. ], [ 73. , 66. , 70. ] ] y_data = [ [ 72. ], [ 88. ], [ 92. ], [ 100. ], [ 71. ] ] # 변수 X = tf.placeholder(tf.float32, shape = [None, 3 ]) Y = tf.placeholder(tf.float32, shape = [None, 1 ]) W = tf.Variable(tf.random_normal([ 3 , 1 ]), name = ‘weight’ ) b = tf.Variable(tf.random_normal([ 1 ]), name = ‘bias’ ) # 가설 hypothesis = tf.matmul(X, W) + b # cost function cost = tf.reduce_mean(tf.square(hypothesis – Y)) # cost function 최소화 optimizer = tf.train.GradientDescentOptimizer(learning_rate = 1e – 5 ) train = optimizer.minimize(cost) # 세션 생성 with tf.Session() as sess: # 사용할 변수 선언 sess.run(tf.global_variables_initializer()) for step in range ( 2001 ): cost_val, hy_val, _ = sess.run( [cost, hypothesis, train], feed_dict = {X: x_data, Y: y_data} ) if step % 10 = = 0 : print (step, “Cost: ” , cost_val, ”

Predict:

” , hy_val) cs

2. 텐서플로우 선형 회귀분석 – First Contact with TensorFlow

이 글은 스페인 카탈루냐 공과대학의 Jordi Torres 교수가 텐서플로우를 소개하는 책 ‘First Contack with TensorFlow‘을 번역한 것입니다. 이 글은 원 도서의 라이센스(CC BY-NC-SA 3.0)와 동일한 라이센스를 따릅니다. 파이썬 3 notebook으로 작성한 이 섹션의 코드는 여기에서 보실 수 있습니다.

목록으로가기

이 챕터에서 텐서플로우로 간단한 선형 회귀분석(Linear Regression) 모델을 만들어 보겠습니다. 예제를 통해서 기본적인 코드를 살펴보는 것과 동시에 코스트 함수(Cost function)와 그래디언트 디센트(Gradient Descent) 같은 머신러닝 학습에 있어서 중요한 콤포넌트들을 어떻게 사용하는지 알아보도록 하겠습니다.

변수간의 관계를 모델로

선형 회귀분석은 변수들 사이의 관계를 분석하는 데 사용하는 통계학적 방법입니다. 이 방법의 장점은 알고리즘의 개념이 복잡하지 않고 다양한 문제에 폭 넓게 적용할 수 있다는 것입니다. 이런 이유로 텐서플로우를 배우기 시작하는 데 선형 회귀분석의 예를 이용하는 것이 좋을 것 같습니다.

선형 회귀분석은 독립변수 , 상수항 (random term) 와 종속변수(역주: 결과 값, 즉 y) 사이의 관계를 모델화 하는 것으로 두 변수 사이의 관계일 경우 단순 회귀분석이라고 하며 여러개의 변수를 다루는 다중 회귀분석이 있습니다.

이번 장에서 텐서플로우가 어떻게 동작하는 지 설명하기 위해 형태의 간단한 선형 회귀분석 모델을 만들 것 입니다. 그러기 위해 이차원 좌표계에 데이터를 생성할 파이썬 프로그램을 만들고 이 샘플 데이터에 들어맞는 최적의 직선을 텐서플로우로 찾도록 하겠습니다.

첫번째 할 일은 좌표값들을 생성하기 위해 numpy 패키지를 임포트하는 것입니다. 코드는 아래와 같습니다.

import numpy as np num_points = 1000 vectors_set = [] for i in xrange ( num_points ): x1 = np . random . normal ( 0.0 , 0.55 ) y1 = x1 * 0.1 + 0.3 + np . random . normal ( 0.0 , 0.03 ) vectors_set . append ([ x1 , y1 ]) x_data = [ v [ 0 ] for v in vectors_set ] y_data = [ v [ 1 ] for v in vectors_set ]

위 코드에서 볼 수 있듯이 관계를 가지는 데이터를 생성했습니다. 하지만 정규분포(normal distribution)를 따라 약간의 편차를 두어 완전히 직선에 일치하지 않는 리얼리틱한 예를 만들었습니다.

결과 데이터 포인트의 그래프는 아래와 같습니다.

이 그래프를 그리기 위해서는 다음 코드를 참고하세요.(그래프를 그리기 위해서는 matplotlib 패키지가 필요한데 pip install matplotlib 명령을 통해 설치할 수 있습니다)

import matplotlib . pyplot as plt plt . plot ( x_data , y_data , ‘ro’ , label = ‘Original data’ ) plt . legend () plt . show ()

이 데이터는 모델을 만들기 위한 학습 데이터로 사용될 것입니다.

코스트 함수(Cost Function)와 그래디언트 디센트(Gradient Descent) 알고리즘

다음 단계는 입력 데이터 x_data로 부터 출력 값 y를 예측할 수 있는 학습 알고리즘을 훈련시키는 것입니다. 우리는 이미 이 모델이 선형회귀라는 것을 알고 있으므로 두개의 파라메타 W와 b로 모델을 표현할 수 있습니다.

입력데이터 x_data를 이용해 출력 데이터 y_data를 만들 수 있는 최적의 파라메타 W와 b를 찾도록 텐서플로우 코드를 만드는 것이 목적이며 이것은 와 같은 직선으로 나타납니다. 독자는 W가 0.1, b가 0.3에 근사한 값이어야 한다는 걸 알지만 텐서플로우는 모르고 있어 스스로 찾아내야 합니다.

이런 문제를 푸는 기본 방법은 데이터 셋의 값들을 반복하여 적용하면서 매번 더 정확한 결과를 얻기 위해 W와 b 파라메타를 수정하는 것 입니다. 반복이 일어날 때 마다 개선되고 있는지 확인하기 위해 얼마나 좋은 직선인지를 측정하는(사실은 나쁜 정도를 측정함) 코스트 함수(혹은 에러 함수)를 정의할 것 입니다.

이 함수는 W와 b를 파라메타로 받아 직선이 얼마나 데이터에 잘 맞는지를 기초로 하여 에러 값을 리턴합니다. 이 예제에서는 코스트 함수로 평균제곱오차(mean square error)를 사용합니다. 평균제곱오차는 실제 값과 알고리즘이 반복마다 추측한 값 사이의 거리를 에러로 하는 값의 평균입니다.

나중에 코스트 함수와 다른 방법에 대해서 조금 더 자세히 다루겠습니다만 여기서는 평균제곱오차를 이용해 예제를 차례대로 진행하는 것에 중점을 두겠습니다.

이제 설명했던 모든 것들을 텐서플로우를 사용해 프로그래밍할 시간입니다. 먼저 아래 코드처럼 세개의 변수를 만듭니다.

W = tf . Variable ( tf . random_uniform ([ 1 ], – 1.0 , 1.0 )) b = tf . Variable ( tf . zeros ([ 1 ])) y = W * x_data + b

Variable 메소드를 호출하면 텐서플로우 내부의 그래프 데이터 구조에 만들어질 하나의 변수를 정의하게 된다고 이해합시다. 나중에 이 메소드의 파라메타에 대해 더 자세히 보도록 하겠습니다. 지금은 예제를 완성하기 위해 다음 단계로 넘어 가겠습니다.

이 변수들을 이용해서 앞서 이야기 했던대로 실제 값과 로 계산된 값 간의 거리를 기반으로 코스트 함수를 만듭니다. 그런 다음 제곱을 하고 모두 더하여 평균을 냅니다. 텐서플로우에서는 이 코스트 함수를 아래와 같이 나타냅니다.

loss = tf . reduce_mean ( tf . square ( y – y_data ))

이 코드는 우리가 이미 알고 있는 값 y_data 와 입력 데이터 x_data로 계산된 y 값 사이의 거리를 제곱한 것의 평균을 계산합니다.

어쩌면 벌써 샘플 데이터에 가장 잘 맞는 직선은 작은 에러 값을 갖는 직선이라는 걸 눈치 챈 독자가 있을 지 모르겠습니다. 우리가 에러 함수를 최소화하면 데이터에 가장 최적의 모델을 얻은 것 입니다.

너무 자세히 들어가지 않겠지만 이것이 함수 값을 최소화하는 최적화 알고리즘인 그래디언트 디센트가 하는 역할입니다. 이론적으로 보면 그래디언트 디센트는 일련의 파라메타로 된 함수가 주어지면 초기 시작점에서 함수의 값이 최소화 되는 방향으로 파라메타를 변경하는 것을 반복적으로 수행하는 알고리즘입니다. 함수의 기울기가 음의 방향인 쪽으로 진행하면서 반복적으로 최적화를 수행합니다. 보통 양의 값을 만들기 위해 거리 값을 제곱하는 것이고 기울기를 계산해야 하므로 에러 함수는 미분 가능해야 합니다.

알고리즘은 파라메타(W와 b)의 초기 값에서 시작해서 위 방법으로 W와 b를 수정해가며 결국에는 에러 함수를 최소화하는 변수 값을 얻을 수 있습니다.

이 알고리즘을 텐서플로우에서 사용하기 위해서는 아래 두 문장을 실행해야 합니다.

optimizer = tf . train . GradientDescentOptimizer ( 0.5 ) train = optimizer . minimize ( loss )

이제 텐서플로우가 내부 데이터 구조에 관련 데이터를 생성한다는 것을 알아 보았고 코스트함수를 등록하여 그래디언트 디센트 알고리즘 옵티마이저(optimizer) train을 구현했습니다. 나중에 학습 속도(learning rate) 파라메타에 대해 이야기 하겠습니다.(여기서는 0.5로 지정했습니다)

알고리즘 실행

여기까지는 텐서플로우 라이브러리를 호출하는 코드는 단지 내부 그래프 구조에 정보를 추가시킨 것일 뿐 텐서플로우의 실행 모듈은 아직 아무런 알고리즘도 실행하지 않았습니다. 그러므로 이전 챕터에서와 같이 session을 생성하고 run 메소드를 train 파라메타와 함께 호출해야 합니다. 또한 변수를 선언했으므로 아래와 같은 명령으로 초기화해야 합니다.

init = tf .global_variables_ initializer () sess = tf . Session () sess . run ( init )

이제 입력 데이터에 최적화 된 직선의 W와 b를 찾기 위해 반복적인 프로세스를 실행합니다. 훈련 과정은 목표 정확도에 다다를 때까지 계속됩니다. 이 예에서는 8번의 반복이면 충분할 것 같다고 생각하여 아래와 같이 쓸 수 있습니다.

for step in xrange ( 8 ): sess . run ( train ) print step , sess . run ( W ), sess . run ( b )

코드가 실행된 결과는 우리가 이미 알고 있는 값과 가까운 W와 b를 보여 줍니다. 제가 실행했을 때 출력된 결과는 아래와 같습니다.

( array ([ 0.09150752 ], dtype = float32 ), array ([ 0.30007562 ], dtype = float32 ))

그리고 그래프로 결과를 보고 싶다면 아래 코드를 참고하세요.

plt . plot ( x_data , y_data , ‘ro’ ) plt . plot ( x_data , sess . run ( W ) * x_data + sess . run ( b )) plt . legend () plt . show ()

8번의 반복으로 얻은 W = 0.0854, b = 0.299 인 직선을 그래프에서 볼 수 있습니다.

간한하게 설명하기 위해 8번만 반복 했었는데 더 진행한다면 좀 더 원래 값과 가까운 파라메타를 얻을 수 있습니다. 아래 문장으로 W와 b를 출력해 봅니다.(역주: 별다른 언급이 없지만 아래 문장은 for 문 안에 작성해야합니다)

print ( step , sess . run ( W ), sess . run ( b ))

출력 결과는 아래와 같습니다.

( 0 , array ([- 0.04841119 ], dtype = float32 ), array ([ 0.29720169 ], dtype = float32 )) ( 1 , array ([- 0.00449257 ], dtype = float32 ), array ([ 0.29804006 ], dtype = float32 )) ( 2 , array ([ 0.02618564 ], dtype = float32 ), array ([ 0.29869056 ], dtype = float32 )) ( 3 , array ([ 0.04761609 ], dtype = float32 ), array ([ 0.29914495 ], dtype = float32 )) ( 4 , array ([ 0.06258646 ], dtype = float32 ), array ([ 0.29946238 ], dtype = float32 )) ( 5 , array ([ 0.07304412 ], dtype = float32 ), array ([ 0.29968411 ], dtype = float32 )) ( 6 , array ([ 0.08034936 ], dtype = float32 ), array ([ 0.29983902 ], dtype = float32 )) ( 7 , array ([ 0.08545248 ], dtype = float32 ), array ([ 0.29994723 ], dtype = float32 ))

알고리즘이 초기 값은 W=-0.0484, b=0.2972 로 시작해서 코스트 함수를 최소화하도록 파라메타를 조정해 갔음을 관찰할 수 있습니다.

아래 코드로 코스트 함수가 감소하는 것을 확인할 수 있습니다.

print ( step , sess . run ( loss ))

출력 결과는 아래와 같습니다.

(0, 0.015878126) (1, 0.0079048825) (2, 0.0041520335) (3, 0.0023856456) (4, 0.0015542418) (5, 0.001162916) (6, 0.00097872759) (7, 0.00089203351)

알고리즘이 어떻게 파라메타를 조정하는 지 눈으로 확인하려면 매 반복마다 그래프를 그려보는 것이 좋습니다. 8번의 스냅샷 이미지는 아래와 같습니다.

눈으로 확인할 수 있듯이 알고리즘은 반복하면서 점차 데이터에 더 적합한 직선을 만듭니다. 어떻게 그래디언트 디센트 알고리즘은 코스트 함수를 최소화하는 파라메타를 찾아가는 걸까요?

예제의 에러 함수로 두개의 파라메타(W 와 b)로 구성되어 있어서 우리는 2차원 공간에 표현할 수 있습니다.(역주: W와 b를 x, y로 하는 2차원 좌표계를 생각하면 됩니다) 이 2차원 공간의 각 점은 하나의 직선을 나타냅니다.(역주: 한쌍의 W와 b는 한 직선을 나타내므로) 각 점에서 에러 함수의 높이는 직선에 대한 에러입니다.(역주: W, b 그리고 에러 함수를 x, y, z 로 하는 3차원 좌표계를 생각하면 됩니다) 어떤 직선들은 다른 직선보다 더 작은 에러를 가집니다. 텐서플로우가 그래디언트 디센트 알고리즘을 수행할 때 이 평면의 한 지점(W=-0.04841119, b=0.29720169)에서 시작하여 더 작은 에러를 갖는 직선을 찾아 이동합니다.

그래디언트 디센트 알고리즘을 수행하기 위해 텐서플로우는 이 에러 함수의 기울기를 계산합니다. 기울기는 나침판 같은 역할을 하게 되어 에러가 낮은 곳의 방향을 가르킵니다. 기울기를 계산하기 위해 텐서플로우는 에러 함수를 미분합니다. 이 예제에서는 반복이 일어날 때마다 움직일 방향을 알아내기 위해 W와 b에 대해 편미분 방정식 계산이 필요합니다.

이전에 언급한 학습 속도는 텐서플로우가 각 반복 때마다 얼마나 크게 이동할 것인가를 제어합니다. 학습속도를 너무 크게 하면 최소값을 지나쳐 버릴 수 있습니다. 하지만 학습속도를 너무 작게 하면 최소값에 다다르는데 많은 반복(역주: 즉 오랜 시간)이 필요하게 됩니다. 그러므로 적절한 학습속도를 선택하는 것이 중요합니다. 학습속도를 적응시킬 수 있는 여러 테크닉들이 있지만 이 입문서의 범위를 벗어 납니다. 그래디언트 디센트 알고리즘이 제대로 작동하는 지 확인하는 좋은 방법은 매 반복 마다 에러가 줄어드는지를 보는 것 입니다.

이 장의 코드를 테스트 하려면 이 책의 깃허브 레파지토리에서 regression.py 파일을 다운 받을 수 있습니다. 한 눈에 보기 쉽게 아래에 코드를 합쳐 놓았습니다.(역주: 이 코드는 파이썬 2.7 버전을 기준으로 작성된 것입니다. 파이썬 3 notebook으로 작성한 이 섹션의 코드는 여기에서 보실 수 있습니다.)

import numpy as np num_points = 1000 vectors_set = [] for i in xrange ( num_points ): x1 = np . random . normal ( 0.0 , 0.55 ) y1 = x1 * 0.1 + 0.3 + np . random . normal ( 0.0 , 0.03 ) vectors_set . append ([ x1 , y1 ]) x_data = [ v [ 0 ] for v in vectors_set ] y_data = [ v [ 1 ] for v in vectors_set ] import matplotlib . pyplot as plt #Graphic display plt . plot ( x_data , y_data , ‘ro’ ) plt . legend () plt . show () import tensorflow as tf W = tf . Variable ( tf . random_uniform ([ 1 ], – 1.0 , 1.0 )) b = tf . Variable ( tf . zeros ([ 1 ])) y = W * x_data + b loss = tf . reduce_mean ( tf . square ( y – y_data )) optimizer = tf . train . GradientDescentOptimizer ( 0.5 ) train = optimizer . minimize ( loss ) init = tf .global_variables_ initializer () sess = tf . Session () sess . run ( init ) for step in xrange ( 8 ): sess . run ( train ) print ( step , sess . run ( W ), sess . run ( b )) print ( step , sess . run ( loss )) #Graphic display plt . plot ( x_data , y_data , ‘ro’ ) plt . plot ( x_data , sess . run ( W ) * x_data + sess . run ( b )) plt . xlabel ( ‘x’ ) plt . xlim (- 2 , 2 ) plt . ylim ( 0.1 , 0.6 ) plt . ylabel ( ‘y’ ) plt . legend () plt . show ()

이 장에서 우리는 기본적인 선형 회귀분석 알고리즘을 사용해서 두개의 필수적인 요소, 코스트 함수와 그래디언트 디센트 알고리즘을 직관적인 방법으로 설명하는 것으로 텐서플로우 패키지 탐험을 시작했습니다. 다음 장에서는 텐서플로우에서 사용하는 데이터 구조에 대해 자세히 다루겠습니다.

So you have finished reading the 텐서 플로우 다중 회귀 분석 topic article, if you find this article useful, please share it. Thank you very much. See more: 텐서플로우 2.0 다중 회귀 분석, 텐서플로우 2.0 선형 회귀 예제, Tensorflow 2.0 다중 선형 회귀, 텐서플로우 선형 회귀 예제, 딥러닝 회귀분석 예제, Tensorflow 다중 선형 회귀, TensorFlow 비선형 회귀, 파이썬 다중회귀분석 예제

Leave a Comment