DNA Classification Challenge

Goal

  • 연속적으로 이뤄진 60개의 DNA 특징을  EI (boundary between exon and intron), IE (boundary between intron and exon), Neither 중에 하나로 분류하는 것이 목표  

Data

  • Data set
  • 한 샘플은 60개의 DNA 특징들로 이뤄졌으며, Dataset은 총 3190개의 샘플들을 포함하고 있음
  • DNA의 특징은 A, G, T, C, D, N, S, R 중에 하나로 이뤄져 있음

Neither (%)
EI (%)
IE (%)
A
24.984
22.153
20.577
G
25.653
31.415
22.383
T
24.273
21.771
26.445
C
25.077
24.561
30.588
D
0.001
0.002
N
0.010
0.010
S
0.002
R
0.002
  • Preprocess
  • 3190개의 샘플 중 2190개는 train data로 사용 했으며, 그 외 1000개의 샘플은 test data로 사용( test data의 클래스 비율은 1:1:2( N:EI:IE) )
  • 또한 hyperparameter를 조정하기 위해 2190개의 train data 중에 100개를 validation data로 사용 ( 이때도 validation data의 클래스 비율은 test data 클래스 비율과 동일 )
  • label에 해당하는 N, EI, IE를 onehot 벡터로 만듬
  • DNA의 특징을 네트워크의 input으로 사용하기 위해 각 특징을 특정 숫자에 매핑 하는데, 이때 D, N, S, R은 Neither로 묶음 ( 이유는 D, N, S, R 특징이 나타나는 빈도가 적어 분류하는데 영향을 주지 않을 것으로 판단 )
  • 모델의 input dimension은 (batch size, 60) 이다.

A
G
T
C
Neither( D or N or S or R )
Number
1
2
3
4
5

Network

  • 연속적인 DNA 데이터를 학습할 모델로 1D(dimension) convolution neural network 선택
  • ( conv1d 같은 경우 연속적인 데이터(signal data)를 처리 하였을 때 좋은 성능 결과가 있음 )

  • 해당 모델은 feature extraction을 위한 6개의 conv1d와 1개의 classification layer로 구성 되어 있고 loss function과 optimizer는 각각 cross entropy와 adam optimizer를 사용

  • hyperparameter 조정은 train data의 일부를 validation data로 만들어 조정 하였음
  • ( 이유는 hyperparameter 조정을 위해 test data를 사용 하면, test data에 편향되어 hyperparameter가 조정 되기 때문이다. )

  • overfitting problem이 발생하여, l2 regularizer와 dropout을 사용
  • ( overfitting problem을 해결하여 test accuracy가 약 3% 향상 )

  • batch normalization을 추가할지에 대한 실험을 했을 때, batch normalization이 들어간 경우 학습 속도는 없는 경우보다 더 빠르지만, cost value가 수렴하는 값은 batch normalization이 없는 경우가 더 낮았다. 따라서 batch normalization layer를 사용하지 않음

Implement

  • 실험 환경
  • RAM : 32G
  • GPU : gtx 1080ti
  • os : ubuntu 16.04
  • program language : python v3.6
  • library : tensorflow v1.8
  • 파일 
  • main.py : data를 호출하고 model을 학습과 테스트 하는 역할
  • model.py : model 구현