1. 환경 및 데이터 준비
# 텐서플로 라이브러리 안에 있는 케라스 API에서 필요한 함수들 호출
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# 데이터를 다루는 데 필요한 라이브러리 호출
import numpy as np
# 준비된 수술 환자 데이터를 불러옴
Data_set = np.loadtxt("./data/ThoraricSurgery3.csv", delimiter=",")
X = Data_set[:,0:16] # 환자의 진찰 기록을 X로 지정
y = Data_set[:,16] # 수술 1년 후 사망/생존 여부를 y로 지정
2. 구조 결정
- 딥러닝의 구조를 짜고 층 설정
model = Sequential()
- Sequential() : 은닉층 구현
- 앞에서 정한 모델을 컴퓨터가 알아들을 수 있도록 컴파일
model.add(Dense(30, input_dim=16, activation='relu'))
- model.add() : 새로운 층 생성. 맨 마지막 층을 제외한 나머지 층은 모두 은닉층
- Dense(a, input_dim=b, activation=c)
: a에는 몇 개의 노드를 이 층에서 만들 것인지 숫자 입력
- input_dim : 입력 데이터에서 몇 개의 값을 가져올지 결정. 입력층 역할
- activation : 활성화 함수 입력. 여기서는 렐루 함수 사용
- 모델 실제로 실행
model.add(Dense(1, activation='sigmoid'))
- model.add() : 새로운 층 생성. 맨 마지막 층이므로 출력층
- Dense(a, activation=b)
: a에는 출력 값을 하나로 정해서 보여 주어야 하므로 1 입력
- activation : 활성화 함수 입력. 여기서는 시그모이드 함수 사용
3. 모델 실행
- 지정한 모델이 효과적으로 구현될 수 있도록 환경 설정하면서 컴파일
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
- loss : 오차 함수 설정. 폐암 수술 환자의 생존율 예측은 생존과 사망 둘 중 하나를 예측하므로 교차 엔트로피 함수 적용
- optimizer : 옵티마이저 설정. 여기서는 adam 사용
- metrics: 모델이 컴파일될 때 모델 수행의 결과를 나타나게끔 설정
- accuracy : 학습셋에 대한 정확도에 기반해 결과 출력
- loss : 학습셋에 대한 손실 값
- val_acc : 테스트셋 적용 시 테스트셋에 대한 정확도
- val_loss : 테스트셋에 대한 손실 값
- 컴파일 단계에서 정해진 환경을 주어진 데이터를 불러 실행
history=model.fit(X, y, epochs=5, batch_size=16)
- epoch : 학습 프로세스가 모든 샘플에 대해 실행되는 횟수
- batch_size : 샘플을 한 번에 몇 개씩 처리할 지 결정. 너무 크면 학습 속도가 느려지고, 너무 작으면 결괏값 불안정
대표적인 손실 함수
'모두의 딥러닝 개정 3판'의 내용과 https://github.com/taehojo/deeplearning의 코드 참고
'AI > 모두의 딥러닝' 카테고리의 다른 글
[모두의 딥러닝] 15. 원 - 핫 인코딩, 소프트맥스(softmax) - 아이리스(iris) 품종 데이터(다중 분류) (0) | 2023.05.25 |
---|---|
[모두의 딥러닝] 14. 피마 인디언 당뇨병 예측 데이터 분석(pandas, seaborn 라이브러리 사용) (0) | 2023.05.24 |
[모두의 딥러닝] 12. 기울기 소실(vanishing gradient) 문제, 활성화 함수(ReLU, softplus 등), 고급 경사 하강법(SGD, Adam 등) (0) | 2023.05.22 |
[모두의 딥러닝] 11. 오차 역전파(back propagation) (2) | 2023.05.22 |
[모두의 딥러닝] 10. 다층 퍼셉트론(multilayer perceptron), XOR 문제 해결 (0) | 2023.05.22 |