최근LAIDD 사이트에서 신약개발 관련 강의를 들으면서 알게 된 내용을 아래와 같이 정리해봄.
출처:
LAIDD 인공지능 & 파이썬 프로그래밍 역량강화 교육과정
https://deepchem.readthedocs.io/en/latest/api_reference/moleculenet.html
신약개발에 deep learning 이 쓰이게 된 계기
- 2012년 MErch Molecular Activity chanllenge 에서 deep learning 이 기존 머신러닝 방법보다 우수한 성능 보임
- 이를 시작으로 QSAR, ADME 예측 등에 deep learning 이 시작
Deep chem 이란?
MoleculeNet 이라는게 있는데 여기서 사용될 dataset 을 DeepChem에 저장해놨다.
사용자들이 분석 목적에 따라 특정 dataset 을 사용할 수 있도록 table 형태로 dataset 이름, 설명, datasize, 출처등을 표기해 놓은것이 아래 site 에 있다. https://deepchem.readthedocs.io/en/latest/api_reference/moleculenet.html
그 중 tox21이란 dataset 이 있는데 이는 분자의 독성을 예측한 data이다. 이 데이터를 활용하면 특정 화합물이 독성을 가지는지 안가지는 지를 binary 로 예측할 수 있다.
tasks, datasets = dc.molnet.load_tox21(featurizer='ECFP')
여기서 deepchem library (dc) 로부터 tox21 data를 load 한다.
featurerizer = ‘ECFP’ 는 ECFP 형태에 해당하는 fingerprint 형식으로 분자 형태를 나타내겠다는 뜻
여기서 2개의 변수 가 return 된다.
- tasks: prediction task 의 list. 여기서는 12개의 biological receptor의 이름이나 cell pathway 등의 이름이 1개의 list 로 들어가있다.
- datasets: train, validation, test dataset 으로 구성된 tuple
traindata에서 ECFP 형식으로 분자 형태를 나타내면 column 이 1024개가 되고 샘플 수는 6264 이기 때문에 data shape 이 6264 * 1024 가 된다. y값의 column 수는 tasks 수에 해당 하는 12개. 즉, inputlayer 에 분자의 fingerprint 가 들어오면 그에 대한 출력값이 12개가 된다는 것. 12개 receptor/cell pathway에서의 독성을 각각 예측하는 모델을 만든다는 것. 예를 들어 특정 분자가 NR-AR 에서 독성이 없다 (0) or 있다(1) 를 예측 하는 것.
weight 는 독성이 있고 없고의 비율이 imbalance 하게 되어있기 때문에 서로 비중이 다른 것을 보상해주기 위해 가중치를 다르게 둠. weight 가 0 인 것은 해당 값은 결측치. 손실함수 등 계산할때에는 계산 되지 않게 함. 적게 발생하는 데이터에 비중을 더 주는 방향으로 weight를 더 준다.
MultitaskClassifer 라는 함수를 사용하면 input, hidden layer 개수, output 개수를 지정하여 쉽게 모델을 만들 수 있다.
'데이터 사이언스' 카테고리의 다른 글
AI를 이용한 신약개발 경진대회: IRAK4 IC50 활성값을 예측 (8) | 2024.09.16 |
---|---|
딥러닝으로 하는 신약개발 (2) | 2024.09.14 |
데이터 거버넌스: 표준화를 안하면 어떻게 될까 (0) | 2024.07.11 |
python 에서 한 번에 여러 건의 값을 다른 값으로 replace (0) | 2024.01.28 |
데이터 분석가로 취업한 이후의 현실과 난관 극복기 (0) | 2023.09.17 |