yongyong-e

[TensorFlow] Linear Regression 본문

머신러닝/TensorFlow

[TensorFlow] Linear Regression

Yonghan Kim 2017. 9. 11. 16:21

1) Linear Regression (선형 회귀)

Linear Regression이란?  

변수 사이의 선형적인 관계를 모델링 한 것으로 주어진 데이터를 training시켜 가장 적합한 직선을 찾아내는 것을 목표로 한다.


우선 간단하게 데이터를 구성하여 알아보자. 

공부시간에 따라 받을 수 있는 성적을 예측하여 구성해보았다. (물론 실제로 공부시간만이 아닌 여러 변수가 존재한다.)

 공부시간

성적 

 1

15

 2

 25

 3

 30

 4

 45

 5

 55

 6

 70

 7

 80

 8

 85

 9

 95


위의 데이터를 토대로 그래프로 나타내보았다. 

다음처럼 데이터들은 직선상에 정확히 위치 하지는 않지만 선형적인 구조를 가지는 것을 알수있다.


2) Hypothesis (가설)

다음과 같이 3개의 선이 있을 경우, 3개의 직선중에 어떤 선이 가장 적합한 선인가?를 위해 가설이 필요하다.

그 가설을 세우는 방정식에 대해 알아보자.


위 그래프의 직선의 방정식을 다음과 같이 나타낼 수 있다.

H(x) = Wx + b  (여기서 H는 Hypothesis(가설)의 약자이며, W는 기울기, b는 y의 절편으로 나타낼 수 있다.)

이제 이 방정식을 통해 W와 b값을 계속해서 수정하면서 가장 적합한 식을 찾아내는게 선형 회귀의 핵심이라고 할 수 있다.


3) Cost (비용)

Cost란 Hypothesis 방정식에 대해 얼마나 정확한지를 판단하는 기준으로 cost값이 낮아 질 수록 그 결과가 좋다고 볼 수 있다.


Cost는 위 그래프처럼 1차함수의 직선과 각 점들과의 거리를 통해 계산 할 수 있다.

(예측 값 - 실제 값)^2 의 평균, 결과적으로 다음과 같이 수식을 세울수 있다.

즉, W와 b값을 이용하여 cost값을 구할 수 있다. 


4) Linear Regression 구현

이제 위에서 구성한 간단한 데이터를 사용하여 Linear Regression를 tensorflow로 구현해보자.

전체 코드는 다음과 같다.


출력 결과

위의 결과로 공부시간이 7시간이라면 약 76점의 성적을 받는다고 예측한다.


'머신러닝 > TensorFlow' 카테고리의 다른 글

[TensorFlow] 로그 필터링  (0) 2018.06.30
[TensorFlow] Tensor  (0) 2018.06.22
[TensorFlow] Tested source configurations  (0) 2017.11.23
[TensorFlow] Basic  (0) 2017.09.11
[TensorFlow] How to install tensorflow-gpu on ubuntu16.04  (0) 2017.07.27
Comments