본문 바로가기
Python/Tensorflow

[We-Co] 선형회귀 숫자 예측 - TensorFlow Linear Regression

by 위기의코딩맨 2021. 9. 27.
반응형

안녕하세요. 위기의코딩맨입니다.

오늘은 TensorFlow Linear Regression에 대해 알아보도록 하겠습니다.

 

[ Linear Regression ]

간단하게 설명하면 변수들의 사이의 관계를 분석하는데 사용되는 통계학적인 방법을 의미합니다.

 

대표 수식

학습을 해당 수식으로 표현하는 알고리즘으로,

y는 타겟데이터, x는 인풋데이터,  W와 b는 파라미터로 진행됩니다. 

학습한 가설을 바탕으로 테스트 데이터에 대해서 예측을 할 수 있습니다. 

예제를 통해 알아보도록 하겠습니다.

 

 

import tensorflow as tf

#파라미터 설정 차원을 1개로
W = tf.Variable(tf.random.normal(shape=[1]))
b = tf.Variable(tf.random.normal(shape=[1]))

#Liear Regression / 1.가설정의
def Linear_Model(x):
    return W*x +b

#2.손실함수 정의
def MES_LOSS(Y_Pred, Y):
    return tf.reduce_mean(tf.square(Y_Pred-Y))

#3.최적화 Optimizer
Optimizer = tf.optimizers.SGD(1e-2
def Training_Step(x,y):
    with tf.GradientTape() as tape:
         #예측 결과 값
         Y_PRED = Linear_Model(x)
        #실제 예측 결과 값과 차이
        LOSS = MES_LOSS(Y_PRED, y)
    #갱신
    gradient = tape.gradient(LOSS, [W,b])
    Optimizer.apply_gradients(zip(gradient, [W,b]))


#Training Data
X_T = [2,4,6,10]
Y_T = [4,8,12,20

 

# 1000번의 학습
for i in range(1000):
    Training_Step(X_T, Y_T)
X_Test = [5, 10, 2, 20]
print(Linear_Model(X_Test).numpy())

 

 

출력 값을 확인해보면

 

예측한 결과 값

X_T, Y_T의 Training Data를 통해 두 값의 관계를 파악하여

X_Test의 값 5, 10, 2, 20에 그 파악된 관계를 학습한 결과를 출력된 것을 확인할 수 있습니다.

 

여기서 중요한 점은 3개의 단계를 거쳐서 결과를 출력한 것을 알아야합니다. 

 

1. 가설정의

2. 손실함수

3. 최적화 

 

해당 단계는 거의 모든 머신러닝의 기본형태를 유지하기 때문에 꼭 알아두셔야합니다.

가장 기본적인 머신러닝의 Liear Regression을 사용하여 간단하게 변수들의 사이를 분석하여

해당 관계를 알아내어 TestData에 적용하여 결과를 적용해보는 예제를 작성해보았습니다.

반응형