분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
FingerPrint EDA
SMILES 같은 건 너무 어려울 거라 생각했는데, rdkit은 대단한 라이브러리네요.
1. 데이터 불러옵니다.
2. 각각의 분자 구조에서 RDkit, Atompair와 같은 다양한 fingerprint를 추출할 수 있고, Tanimoto Similarity 등으로 두 분자 간 유사도를 측정할 수 있습니다.
- train 분자들의 유사도 분포와, test 분자들의 유사도 분포, train과 test 분자 간의 유사도 분포가 모두 비슷합니다.
- 혹시라도 test 데이터의 분자들의 fingerprint 속성이 train과 확연히 다르다면 유사도 분포로 달라야 할텐데, 비슷한 것으로 보입니다.
- 유사도, 거리의 개념을 활용하면 kNN 과 같은 일반적인 분류 알고리즘으로 확장할 수도 있습니다. 그런데 거리는 가까워도 HLM, MLM의 값이 크게 다른 경우가 많았습니다. 아마도 유사도는 모든 fingerprint(보통 2048개)를 활용하지만 실제 약물의 특성은 그 중 일부 요소의 영향이 크기 때문일 겁니다.
- 유사도, 거리의 개념은 군집화(clustering)에도 활용 가능합니다. 두 fingerprint의 유사도 합을 활용해서 train 데이터를 10개 군집으로 나눠봤습니다.
- 군집별 평균 HLM, MLM으로 예측 값을 계산해봤지만 역시 별로입니다. 이유는 위의 kNN과 동일할 것 입니다.
3. fingerprint 들은 bit와 count로 구분되더라구요. bit는 0과 1로 count는 해당되는 패턴의 개수(count)로 표현됩니다.
다양한 fingerprint 들의 4-layer MLP를 구성했었는데, count의 경우 처리가 애매해서 bit를 썼습니다.
트리 기반 모형에는 count가 더 효율적일 것 같고, Descriptors.CalcMolDescriptors()로 이런저런 변수를 추가한 tree 기반의 xgboost를 붙여봅니다.
train의 HLM, MLM 전체 평균으로 제출했을 때의 스코어가 35.97였습니다.
분자 구조를 활용해도 target을 정확하게 설명하기가 어렵기 때문에 quantile regression으로 범위를 잡는 것도 좋을 것 같습니다.
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
4. 앞선 예제 공유에서도 언급되었듯이, augmentation이 필요할 것 같은데 방법이 마땅치 않습니다.
기존 fingerprint에 잡음을 추가하는 것도 좋을 것 같긴한데, 찾다보니 어떤 논문에서 BRICS decomposition 언급이 있었고 한번 해봤습니다.
자세히는 모르겠지만 측정한 분자 연결고리를 끊는 방법으로 보입니다.
위에서 m과 res[2]를 비교해보면 꼬리 하나 잘려 있습니다.
앞서 2.에서 나온 유사도로 계산해보면 0.9의 값이 나오는데, 이것은 train에 있는 다른 분자 간의 유사도와 비교하면 매우 높은 값입니다.
그럼 이 잘린 분자를 활용해서 fingerprint를 augmentation을 할 수 있다는 것이 그 논문의 요지 인 것 같네요.
잘 다루면 미묘한 성능 개선은 있었던 것 같은데, 아무래도 target 변수인 HLM, MLM이 워낙 변동이 커서 그런지 생각보다는 별로라고 생각이 드네요.