본문 바로가기

Data Science

Multivariable linear regression 딥러닝 예제 개념 및 실습 | sTricky

Multivariable linear regression 딥러닝 예제 개념 및 실습 | sTricky

Multivariable linear regression 딥러닝 예제 개념 및 실습 sTricky

안녕하세요.
딥러닝 시간 3번째 시간 입니다.
지난 딥러닝 강의 및 예제를 보고 싶으신 분들은 아래 포스트를 참고 해주시면 됩니다.
참고로 제가 지금 진행하고 있는 머신러닝 강의및 예제는 <모두의 딥러닝>을 참고하여 작성 하고 있습니다.
물론 저도 공부하는 중이라서..ㅎㅎ 일부 안돌아가는 코드등을 수정하면서 진행하고 있는 점 참고 바랍니다.
더욱 자세한 내용을 보고 싶으신 분들은 유튜브에서 <모두의 딥러닝>을 검색하셔서 보시면 되겠습니다.

2021/01/12 - [Data Science] - 파이썬 머신러닝 스터디 모두의 딥러닝 computational graph | sTricky

 

파이썬 머신러닝 스터디 모두의 딥러닝 computational graph | sTricky

파이썬 머신러닝 스터디 모두의 딥러닝 computational graph | sTricky 안녕하세요. 오늘부터 파이썬 머신러닝 스터디를 시작합니다. 그 첫시간으로 우선, 제 맥북에 파이썬 가상환경을 설치 하고, 이어

stricky.tistory.com

2021/01/17 - [Data Science] - 파이썬 머신러닝 linear regression과 supervised learning (모두의 딥러닝) | sTricky

 

파이썬 머신러닝 linear regression과 supervised learning (모두의 딥러닝) | sTricky

파이썬 머신러닝 linear regression과 supervised learning (모두의 딥러닝) | sTricky 오늘은 머신러닝 학습 두번째 시간 입니다. 오늘은 Supervised Learning에 대해서 공부를 해보겠습니다. 이번 공부도 역시..

stricky.tistory.com

지난 강의에서 linear regression에 대해서 알아 보았습니다.
이번 시간에는 Multivariable linear regression에 대해서 공부 하겠습니다.

Multivariable linear regression 이란?

Multivariable linear regression 이란, 지난번에는 입력 변수가 단일 변수 였다면 이번엔 여러개의 입력 변수로 값을 예측해 보는것 입니다. 아래 그림을 우선 보시겠습니다.

여러개의 변수를 입력 받아 값을 예측 하기

 

 

 

위와 같이 x1, x2, x3의 값을 받아서 Y 값을 예측 하는 모델이 바로 Multivariable linear regression 입니다. 머신러닝을 위해서는 Hypothesis와 Cost 수식이 필요 합니다. 그럼 단일 모델과 Multivariable linear regression의 Hypothesis와 Cost 수식이 어떻게 다른지 보겠습니다.

Hypothesis

위 그림은 단일 예측 모델과 복수개의 예측모델의 Hypothesis의 수식 비교 입니다. Multivariable linear regression을 위해서 입력 받은 3개의 값을 모두 더해주는걸로 변경 된 것을 확인 할 수 있습니다. 그럼 Cost Function은 어떨까요? 아래와 같습니다.

Cost Function

역시 마찬가지로 변경이 됩니다. 예측값과 차이값의 값을 빼서 제곱 하면 되겠죠. 물론 3개가 아니라 더 늘어나도 마찬가지가 될 것 입니다. 이해 되시나요? 하지만, 이게 만약 10개, 100개가 되면 그만큼 늘리기가 어렵겠죠. 그럴때는 Matrix를 이용 하게 됩니다. 그럼 Matrix를 이용한다면 식이 어떻게 될까요?

Hypothesis using matrix

위와 같은 수식이 완성 됩니다. 여기서, W 배열의 수는 입력받는 값의 수, 즉 몇가지 값을 각 인스턴스(row)별로 받느냐와 예측해야 하는 값이 수로 정해지게 됩니다. 
다시 말하면 우리는 3가지 값을 받아서 하나의 결과를 예측 해야 하기 때문에 W배열의 [3,1]의 배열을 가지게 되는것 이죠. 이걸 잘 기억 해야 합니다.

 

 

 

Multivariable linear regression 예제 소스 코드

그럼, 위에서 공부한 이론을 토대로 코드를 작성해 보겠습니다.
아직은 직접 작성 하지 못하고, 작성된 코드를 이해하는 수준이긴 합니다.
저만의 코드도 조만간 공부해서 올리도록 하겠습니다.

import tensorflow as tf
import numpy as np

x_data = [[73., 80., 75.],
          [93., 88., 93.],
          [89., 91., 90.],
          [96., 98., 100.],
          [73., 66., 70.]]
y_data = [[152.],
          [185.],
          [180.],
          [196.],
          [142.]]

tf.model = tf.keras.Sequential()

tf.model.add(tf.keras.layers.Dense(units=1, input_dim=3))  # input_dim=3 gives multi-variable regression
tf.model.add(tf.keras.layers.Activation('linear'))  # this line can be omitted, as linear activation is default
# advanced reading https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6

tf.model.compile(loss='mse', optimizer=tf.keras.optimizers.SGD(lr=1e-5))
tf.model.summary()
history = tf.model.fit(x_data, y_data, epochs=100)

y_predict = tf.model.predict(np.array([[72., 93., 90.]]))
print(y_predict)

위의 코드를 보면 X입력값 3개씩 총 5개의 인스턴스를 받았으니, 배열로 만들어 줍니다.
그리고 Y갑도 배열로 생성 해주구요. 그리고 총 100번의 학습을 실행 합니다. 그리고 최종적으로 [72., 93., 90.] 의 값을 입력 하면 어떤 Y 출력값이 나오는지를 확인 해보았습니다.
최종 출력 값은 아래와 같습니다.

최종 출력값

자, 오늘도 이렇게 머신러닝의 한토막을 공부 해보았습니다.
앞으로 갈길이 머네요..ㅎㅎ
여러분들도 저와 함께 손잡고 한발짝씩 나아가 보시죠!
감사합니다.

by.sTricky