회귀(Regression)

박용민·2022년 3월 21일
0

쉬운 딥러닝

목록 보기
3/8
post-thumbnail

분류와 회귀의 차이

분류

  • 카테고리의 개수로 나뉘고, 그중에서 반드시 하나를 선택해야 하는 이산적 변량

회귀

  • 어떤 카테고리로 나뉘는것이 아닌 구체적인 수치를 예측하도록 학습시키는 연속적 변량

AI는 체격만 보고 체중을 추론할 수 있을까?

신경망 구조

  • 입력층의 크기는 7<가슴둘레,소매길이,신장,허리둘레,샅높이,머리둘레,발 길이>
  • 노멀라이즈를 통해 체중값을 0~1사이 숫자로 변환하기 위해 sigmoid함수를 활성화 함수로 적용한다.
층수종류크기활성화 함수
1층FNN7없음
2층FNN256ReLu
3층FNN256ReLu
4층FNN256ReLu
5층FNN256ReLu
6층FNN1sigmoid

딥러닝 모델 코딩

"""
Author : Byunghyun Ban

from tensorflow import keras
import data_reader

# 몇 에포크 만큼 학습을 시킬 것인지 결정합니다.
EPOCHS = 50  # 예제 기본값은 50입니다.

# 데이터를 읽어옵니다.
dr = data_reader.DataReader()

# 인공신경망을 제작합니다.
model = keras.Sequential([
    keras.layers.Dense(7),
    keras.layers.Dense(256, activation="relu"),
    keras.layers.Dense(256, activation="relu"),
    keras.layers.Dense(256, activation="relu"),
    keras.layers.Dense(256, activation="relu"),
    keras.layers.Dense(1, activation='sigmoid')
])

# 인공신경망을 컴파일합니다.
# 인공지능이 예측한 값을 실제 값을 뺀 수치를 오차(error)라고 한다.
# mse는 mean squared error의 약자이며 mae는 오차의 절댓값들을 구해 평균을 구한 값이다.
# mse는 인공지능이 예측한 대량의 결과물을 손쉽게 하나의 점수로 수량화할 수 있다는 장점이 있다.
# 분류 문제에는 크로스 엔트로피를 회귀 문제에서는 mse를 대부분 사용한다.
model.compile(optimizer="adam", loss="mse", metrics=['mae'])

# 인공신경망을 학습시킵니다.
print("\n\n************ TRAINING START ************ ")
early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
history = model.fit(dr.train_X, dr.train_Y, epochs=EPOCHS,
                    validation_data=(dr.test_X, dr.test_Y),
                    callbacks=[early_stop])

# 학습 결과를 그래프로 출력합니다.
data_reader.draw_graph(model(dr.test_X), dr.test_Y, history)

0개의 댓글

관련 채용 정보