전공 과목 이수2👨‍💻/딥러닝

딥러닝에서의 회귀 (Regression)

천숭이 2021. 1. 24. 16:10

회귀는 머신러닝에서 가장 기초적인 데이터 분석 방법 중 하나이다.

회귀는 가격이나 확률처럼 연속된 실숫값을 정확히 예측하는 것이 목적이다.

 

선형회귀(Linear Regression)는 데이터의 경향성을 가장 잘 설명하는 하나의 직선을 예측하는 것이다.

다항회귀(Polynominal Regression)는 다항식을 이용한 회귀이다.

 

회귀에서 "오차를 줄이다" = "더 정확한 회귀선을 구하자" 와 같다.

따라서 데이터의 흐름을 많이 벗어난 극단치는 제거하는 방법 등으로 데이터의 품질을 높이는 것도 도움이 된다.

 

머신러닝에서 회귀를 적용하려면 식을 계속 바꿔가며 (사람이) 최적의 회귀식을 찾기 위해 노력해야 한다.

하지만 딥러닝 네트워크를 이용한 회귀는 기계가 즉, 딥러닝의 신경망이 적절한 회귀선을 찾아준다.

 

# 4.7 딥러닝 네트워크를 이용한 회귀
import tensorflow as tf
import numpy as np

X = [0.3, -0.78, 1.26, 0.03, 1.11, 0.24, -0.24, -0.47, -0.77, -0.37, -0.85, -0.41, -0.27, 0.02, -0.76, 2.66]
Y = [12.27, 14.44, 11.87, 18.75, 17.52, 16.37, 19.78, 19.51, 12.65, 14.74, 10.72, 21.94, 12.83, 15.51, 17.14, 14.42]

model = tf.keras.Sequential([
    tf.keras.layers.Dense(units=6, activation='tanh', input_shape=(1,)),
    tf.keras.layers.Dense(units=1)
])

model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1), loss='mse')

model.summary()

model.summary()

# 4.8 딥러닝 모델 학습
model.fit(X, Y, epochs=10)

# 4.9 딥러닝 네트워크의 Y값 예측
model.predict(X)


# 4.10 딥러닝 네트워크의 회귀선 확인
import matplotlib.pyplot as plt

line_x = np.arange(min(X), max(X), 0.01)
line_y = model.predict(line_x)

plt.plot(line_x,line_y,'r-')
plt.plot(X,Y,'bo')
plt.xlabel('Population Growth Rate (%)')
plt.ylabel('Elderly Population Rate (%)')
plt.show()

predict()함수로 y 예측 값 출력 

 


출처 : 시작하세요! 텐서플로 2.0 프로그래밍