딥러닝

0802 Keras 실습 [폐암 수술환자의 생존률 예측하기]

피곤핑 2019. 8. 2. 15:32

pip install tensorflow

pip install keras

 

ipython 실행 후 

import tensorflow as tf

import keras 로 확인

 

딥러닝 실행

model.compile(loss = 'mean_squared_error', optimizer = 'adam', metrics=['accuracy])

-> optimizer에 값을 안넣어주면 경사하강법이 디폴트

 

평가된 결과

model.evaluate(X,Y)[1]

-> [0]에는 loss값 error값이 들어가고 1번이 accuracy

 

 

1. 필요한 라이브러리를 임포트 함

 

 

2. 데이터 불러오기

 - 어떤 특정한 시작 숫자를 정해주면 컴퓨터가 정해진 알고리즘에 의해 마치 난수처럼 보이는 수열을 생성함. --> seed

시드는 보통 현재 시각등을 이용하여 자동으로 정해지지만 사람이 수동으로 설정할 수도 있음. 특정한 시드값이 사용되면 그 다음에 만들어지는 난수들은 모두 예측할 수 있음.

 

3. 환자의 기록과 수술 결과를 구분하여 저장

 

4. 

 - add가 두줄이므로 두 개의 층을 가진 모델을 만든 것임

 - 맨 마지막 층은 결과를 출력하는 '출력층'이됨

 - 나머지는 모두 '은닉층'의 역할

 - 각각의 층은 Dense라는 함수를 통해 구체적으로 그 구조가 결정됨

 - 30이라고 되있는 것은 30개의 노드를 만들겠다는 것.

[입력층, 은닉층]

 - input_dim = 입력 데이터로부터 몇개의 값이 들어올지 정하는 것

 - 첫 번째 은닉층에 input_dim을 적어줌으로써 첫번째 dense가 은닉층+입력층의 역할을 겸함

 - 은닉층의 각 노드는 17개의 입력값으로부터 임의의 가중치를 가지고 각 노드로 전송되어 활성화 함수를 만남

 - activation = 활성화함수를 무엇으로 할 것인지(여기서는 relu) -> 출력층으로 전달됨

[출력층]

 - 출력 값을 하나로 정해서 보여줘야 하므로 출력층의 노드수는 1개

 - 여기서는 sigmoid를 활성화 함수로 사용

 

 

5. 

 - 앞서 지정한 모델이 효과적으로 구현될 수 있게 여러 가지 환경을 설정해 주면서 컴파일 하는 부분 

 - 어떤 오차함수를 사용할지 정해야함!! 

 - optimizer = 최적화 (여기서는 adam)

 

 [참고자료]

 - 평균제곱오차는 수렴하기까지의 시간이 오래걸린다는 단점이 있음.

 - 교차 엔트로피는 출력값에 로그를 취해서 오차가 커지면 수렴 속도가 빨라지고 오차가 작아지면 속도가 감소하게끔

   -> 주로 분류문제에서 많이 사용됨. (자세한건 ppt 참고)

 

 6. 실행화면