회귀는 머신러닝에서 가장 기초적인 데이터 분석 방법 중 하나이다.
회귀는 가격이나 확률처럼 연속된 실숫값을 정확히 예측하는 것이 목적이다.
선형회귀(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()
# 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()
'전공 과목 이수2👨💻 > 딥러닝' 카테고리의 다른 글
Pytorch입문 - 텐서 기본 문법 (0) | 2022.01.16 |
---|---|
ImageNet 신경망 불러와서 이미지 학습,분류 하기 (0) | 2022.01.16 |
CNN : 합성곱 신경망(컨볼루션 신경망) (0) | 2022.01.02 |
신경전이학습을 통해 내 사진 변형하기 (Neural Style Transfer) (0) | 2021.02.06 |
GAN 개구리 사진 (0) | 2021.02.05 |
ZYNQ 키트를 활용한 숫자 판별시스템 (0) | 2021.02.04 |