Author: byun1114

  • Charlson Comorbidity Index

    환자의 중증도를 평가하기 위해서는 보통 의무기록 검토를 통해서 각종 위험인자들을 파악한다. 그런데 심평원이나 건보공단같은 빅데이터 자료를 이용한 연구에서는 의무기록을 통한 위험인자를 파악할 수 없다. 혈액검사 결과가 기본적으로 없으니 검사 결과와 연동된 것도 할 수 없다. 이럴 때 이용할 수 있는 것이 Charlson Comorbidity Index (CCI)이다.

    이전에 다른 연구를 통하여 CCI에 대하여 알게 되었다. 그 때에는 몰랐는데 나중에 다른 연구를 하면서 공동 연구자가 고혈압이 없는 것 같다는 이야기를 했었다. 그 때는 그냥 지나갔는데, 이번에 다른 연구자와 연구를 진행하게 되면서 내가 다른 연구원에게 해당 정보를 알려줄려고 하니 이 부분을 알아봐야 하겠다는 생각이 들었다. 그래서 관련 논문을 찾아 보았다.

    https://pubmed.ncbi.nlm.nih.gov/3558716/
    J Chronic Dis. 1987;40(5):373-83. doi: 10.1016/0021-9681(87)90171-8.
    A new method of classifying prognostic comorbidity in longitudinal studies: development and validation
    M E Charlson, P Pompei, K L Ales, C R MacKenzie
    PMID: 3558716 DOI: 10.1016/0021-9681(87)90171-8

    이 논문은 유방암 환자들의 1년 사망율을 예측하고자 한 것이었다. 그래서 여러 인자들에 대하여 분석을 하였다. 그리고 다른 코호트를 이용하여 10년간 생존 분석을 해보았고, 역시 유효한 결과를 얻었다.

    고혈압은 처음에 분석 인자로 고려되었다. 하지만, adjusted relative risk가 낮아서 후속 분석 과정에서 빠지게 되었다.

    기본적으로 가중치가 0, 1, 2, 3이상으로 분류하였다.

    논문을 읽게 되면서 새로 알게 된 중요한 내용으로 나이가 있다. 나이 또한 매우 유의한 인자였기 때문에 이를 반영한 comorbidity-age combined risk score가 있다. 40대 이전은 0점이며 10년 단위로 1점씩 증가한다. 논문의 예시로 가중치 1점이 있는 60대는 3점이 되며, 가중치 3점이 있으면 5점으로 계산할 수 있다.

  • Enlarging smaller images before inputting into convolutional neural network: zero-padding vs. interpolation

    CNN에서 모델에 들어가는 이미지의 크기는 항상 일정해야 한다. 이미지의 크기가 작으면 요구하는 크기에 맞게 키워야 한다. 그 때 사용하는 방법이 사방을 0으로 둘러싸는 방법(zero-padding)과 비율에 맞게 키우는 방법이 있다. 이미지를 비율에 맞게 크게 하는 것은 어떤 방법에 따라서 임의의 값을 생성한다는 것이고 이를 보간법(interpolation)이라고 한다.

    이 논문에서는 zero-padding과 interpolation 사이에 성능의 차이는 없다고 말하고 있다. 다만, zero-padding 된 부위가 계산 속도를 빠르게 해줄 수 있어서 더 좋지 않겠냐고 제시한다. 아직 이와 관련된 다른 이야기들은 찾기 못했다. 이와 같은 문제가 별로 상관이 없거나 아니면 작은 크기에 맞는 모델을 학습했다는 뜻이 아닐까 생각된다. 논문으로 쓸 만큼의 가치가 없는 것이 가장 적당한 이유가 아닐까 싶다.

    Journal of Big Data. 2019;6(1):98.

  • CellProfiler v4

    https://cellprofiler.org/releases

    분석을 시작할려고 지난번에 CellProfiler로 실행한 결과를 검토해 보았다. 7개로 분할한 결과를 합치려고 보니 1~3번 세트와 4~7번 세트의 컬럼값이 달랐다. 아마 중간에 뭔가 바꾼 것이 있을 것이다. 그냥 일치하는 컬럼값만 선택하여 분석을 시작해도 되겠지만, 굳이 그런 위험은 감수하고 싶지 않았다. 보름 정도 다시 실행할 생각을 하니 가슴이 좀 답답해져 왔다.

    그런데 홈페이지를 가보니 version 4가 정말 몇 일 전에 공개되어 있었다. Python v2에서 v3로 바꾼 것을 포함하여 여러 곳에서 변화가 있다고 한다. 파라미터를 조정해 주어야 하는게 있을까 싶어서 100개 정도만 실행하여 보았는데 지난번보다 훨씬 빠른 속도로 분석이 가능하였다. 분석 초기에 나오는 오류 메시지도 보이지 않았다. 그래서 7개로 분할한 것을 다시 하나로 합쳐서 분석을 돌렸다. 아마 내일 퇴근할 무렵이 되면 끝날 것 같다.

  • .rand 와 .randn

    교재를 따라서 계속 실습하고 있는데 결과가 심하게 차이가 나서 무엇이 원인인지 찾아보았다. 실행을 덜 시켜서 그런가 싶어 끝까지 실행해 봤는데도 모르겠고, 오타가 있는지, 들여쓰기는 잘 되었는지 확인해 보아도 찾지를 못했다. Github에서 제공 코드를 받아서 실행해 봤더니 이건 또 실행이 잘 되었다. 그래서 코드를 출력한 다음에 하나하나 확인해 보았다. 그 결과 .randn으로 해야 할 것을 .rand 로 되어 있을 것을 알게 되었다.

    .randn은 평균이 0이고 분산이 1인 난수 생성할 때에 사용한다.

    .rand은 0에서 1사이에 균일한 난수를 생성할 때에 사용한다.