안녕하세요, 여행벌입니다.

이번 포스팅에서는 인생 처음으로 써 본 소논문

"혈청 Micro-RNA 데이터와 기계학습을 통한 암종의 다중 분류"

준비 과정에 대해서 자세히 다뤄보려고 합니다.


[시작 배경]

올 4월에 처음으로 인공지능 공부를 시작해, 3달 정도 '모두를 위한 딥러닝' 책으로 공부를 했습니다.

7월에는 꾸준히 Pytorch 공부를 했지만 책에 있는 예시를 따라 하는데서 더 나아가지 못했습니다.

지도교수님께서 책을 따라 하기보다는 직접 데이터를 찾고, 결과를 내보라고 조언해주셨고, 

여러 가지 암에 대해서 정확하게 분류해주는 신경망 학습 + 추계 학술대회 투고를 목적으로 

약 두 달가량 데이터를 찾고, 전처리하고 신경망을 학습시키고, 결과를 정리하는 과정을 가졌습니다.

 

[데이터 찾기]

목표는 인공지능(딥러닝)을 이용해서 여러 가지 암에 대해서 정확하게 분류하는 것입니다.

여러 가지 암과 건강한 사람에 대한 데이터가 필요했고, GEO 사이트를 이용해서 데이터를 구할 수 있었습니다.

https://www.ncbi.nlm.nih.gov/geo/

사이트에 들어가 보시면 다음과 같은 문구가 나옵니다.

GEO is a public functional genomics data repository supporting MIAME-compliant data submissions. Array- and sequence-based data are accepted. Tools are provided to help users query and download experiments and curated gene expression profiles.

간단하게 요악하면 GEO 사이트는 실험 데이터들을 공공 데이터베이스에 표준화된 포맷으로 저장하고자 하는 취지로 만들어졌습니다.

자세한 소개는 아래 링크를 타고 들어가시면 됩니다.

http://www.incodom.kr/%EC%9C%A0%EC%A0%84%EC%9E%90_%EB%B0%9C%ED%98%84_%EB%B6%84%EC%84%9D

 

GEO 사이트를 알아내긴 했지만, 여기서 내가 원하는 데이터를 찾는 일은 또 다른 일이었습니다.

Cancer 키워드로 사이트를 1~2주 정도 뒤졌고 최종적으로 여러 가지 암에 대한 데이터셋을 4개 얻을 수 있었습니다.

처음에는 데이터셋 4개를 합춰보려고했습니다. 하지만, 정규화한 방법도 다르고 결정적으로 4개의 데이터셋이 2200개 정도는 같은 유전자에 대해서 값을 저장하고 있었으나, 약 4~500개의 서로 다른 유전자에 대해서 값을 저장하고 있기 때문에 데이터셋 4개를 합치려면 각 데이터셋의 20% 정도의 유전자 값들을 날려줘야 했습니다.

 

4개의 데이터셋을 합쳐도 되는지 안되는지 확인하기 위해, PCB 방법도 써보고 각 데이터셋 별로 데이터 분포도 확인해봤지만 결과가 다 애매하게 나와서 결국 제일 큰 데이터셋 하나만 가지고 학습을 진행했습니다.

4046명의 여성에 대한 혈청 MicroRNA 데이터로 총 2565개의 유전자에 대한 값들을 저장하고 있는 데이터입니다.

 

[데이터 전처리]

원본 데이터는 총 13개 클래스에 대한 데이터입니다.

하지만, 원본 데이터를 가지고 학습을 진행한 결과 '악성 난소 질환', '경계 난소 종양', '난소 관련 기타'가 모두 난소암으로 판단되는 것을 확인했고 '난소 질환' 이라는 하나의 클래스로 묶어주기 위해 난소암 클래스와 다른 모든 클래스에 대해서 SVM(서포트 벡터머신)을 이용해 이진 분류를 진행했습니다.

그 결과 다음과 같이 난소암은 다른 암들과는 90% 이상으로 분류가 되지만 '악성 난소 질환', '경계 난소 종양'만 이진 분류가 되지 않는 것을 확인했습니다.

따라서, 하나의 클래스로 모두 묶었고 최종적으로 다음과 같은 데이터를 얻었습니다.


오늘은 여기까지만 포스팅하고 다음 시간에 학습 진행과 최종 결과에 대해서 다뤄보겠습니다.

데이터를 찾고, 전처리하는데 정말정말 많은 시간을 소모했는데....

글로 정리해보니 굉장히 짧네요,,,,

 

좋은 데이터를 찾고 전처리하는게 제일 중요하고 오래걸리는 작업이라는 생각이 듭니다.

+ Recent posts