[모두의 딥러닝] 13. 폐암 수술 환자의 생존율 예측 데이터 분석

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의 코드 참고