분류 전체보기 (340)

반응형


인공지능, 머신러닝은 더 이상 현실 세계와 동떨어진 이야기가 아니다. 헬스케어 분야를 리드하는 기업들은 인공지능, 머신러닝 기술들을 자신의 분야에 이미 적용시키고 있다. 이는 AI 기술들이 헬스케어 분야에 실용적으로 적용되고 있다는 것을 뜻한다. 회사들은 AI를 활용하여 자신들의 서비스를 개선하고, 수익을 증대하며 발생할 수 있는 리스크를 줄인다. 본 포스팅에서는 AI가 헬스케어 분야에 적용되어 불러올 수 있는 사회적 가치와 응용 사례를 살펴보려고 한다.


AI FOR GOOD


기술은 그 자체로도 중요하지만 사회적으로 그 기술을 활용하여 무언가의 이득을 얻을 때 그 가치가 가장 크다고 생각한다. 예를 들어, 기존에 해결할 수 없던 문제를 해결한다거나, 어려웠던 문제를 더 쉽게 만든다거나, 돈을 더 벌어준다더가 하는 것이다. AI FOR GOOD 이라는 말은 이러한 여러 사회적 가치 중 "공익"에 관한 것이다. 인공지능이 헬스케어분야에 적용하는 것의 가장 큰 가치는 바로 공익의 증진이다. AI의 헬스케어 적용은 기존의 헬스케어 분야에서 기존의 해결하기 어렵거나, 해결하는데 시간이 오래걸렸던 문제를 해결하고, 가속화하여 공익의 증가에 기여한다. 


AI-based Medicine을 통한 의학 분야의 돌파구


Accenture에 따르면, 현재 가장 큰 가치를 갖고 있는 기술들은 로봇 보조 수술, 가상 환자 돌봄 서비스(virtual nursing assistant), 행정 보조 기술 등이다. 이는 빅데이터, 인공지능 등의 키워드가 뜨기전부터 의학 분야에 적용되어온 기술들이다. 하지만, 의영상 분야도 큰 가치를 갖고 있다. 왜냐하면 취약 계층의 경우, 질병을 진단 받을 때, 의영상 진단 기술의 도움을 받기 힘들다. 전문가의 진단은 비싸며, 일정 수준 이상의 수요를 필요로하기 때문이다. 이러한 취약 계층에 AI 기반의 의영상 진단 기술이 적용될 경우, 공익에 큰 기여를 할 수 있다. 본 포스팅에서는 AI 기반 의료의 실제 사례를 몇 가지 살펴보려고 한다. 


AI 기반 의료의 실제 사례


- 개발 도상국 국가에서 X-RAY를 결핵 환자 발견



의영상 이미지에서 무언가의 패턴을 찾는 것은 가장 유망하며, 실제로 AI가 많이 적용되고 있는 분야이다.  많은 연구자들이 이러한 AI 기반의 의영상 진단 기술을 연구하고 있다. (원논문) 이러한 기술들이 개발 도상국 국가에서 활용된다면, 영상의학 전문의의 도움 없이도 결핵에 걸린 환자를 발견해 낼 수 있다. 또, 한 국가의 여러 지역에서 이런 기술을 적용한다면, 결핵 취약 지역을 발견해 낼 수 있다. 만약 결핵 예방, 치료 사업을 한다고 하면, 이러한 방식의 접근 법을 통해 정책의 우선순위를 결정할 수도 있다.



- 응급실에서의 환자 뇌출혈 발견


이스라엘의 회사인 MedyMatch와 IBM Watson은 응급실에서 환자의 뇌출혈을 확인하는데 인공지능을 활용하고 있다. 




- 피부 사진을 통한 암 진단


암진단에도 종종 AI가 응용된다. CT, MRI, X-ray 등이 암진단을 위한 의영상 기술로 적용되고 있지만, 이 기술들을 통해 암 진단을 하지 못할 경우, 치명적이다. 암환자가 아닌데 암환자로 진단하는 경우 (false positive, 1종 오류) 보다 암환자인데 암환자로 진단하지 못한 경우(false negative, 2종 오류), 환자의 생명에 영향을 주는 치명적인 판단 오류라고 볼 수 있다. 또한 false negative를 위해 false positive를 늘리는 소위 과잉진료로 인한 문제도 심각하다. 이는 환자에 생명에 영향을 주진 않지만, 잘못된 진단 결과로 인해 의료 비용을 높이고 환자의 심적 부담을 증가시킨다. 따라서 정확한 암 진단 기술이 중요하며, 이 진단 과정에 AI가 적용되어 진단의 속도와 정확성을 높이려는 시도가 이루어지고 있다. 


Stanford의 AI 팀은 피부 이미지를 통해 피부암을 진단하는 AI 기술을 내놓았다. 이 AI 기술은 21명의 피부과 의사들과 비교해 진단 능력이 떨어지지 않았다. 



- CT 사진을 통한 폐암 진단


Enlitic은 회사는 폐 CT 사진을 통해 폐암을 진단하는 AI 기술을 개발하였다. 딥러닝을 활용해 병변의 존재와 그 위치를 파악하는 것이다. 회사는 정확도가 영상의학전문의의 50% 이상이라고 주장한다. 




역사상 많은 기술들이 과대 선전되어 왔다. 누군가는 인공지능 기술이 과대 포장되고 실체는 별로 없는 기술이라고 생각할 수 있다. 또한 누군가는 인공지능이 실제로 산업에 적용되어 가치를 불러올 수 있을까하는 의문을 제기할 수 있다. 인공지능이 인간을 완전히 대체하는 것은 어려울지도 모른다. 오로지 데이터 기반 접근법이라는 문제로 인해, 적절한 수의 훈련 데이터 없이는 동작할 수 없으며, 과적합의 가능성이 있다. 또한 AI의 경우 기기별 차이를 감안하여 모든 기계에 대해 robust한 모델을 만드는 것이 아직까지는 완벽하지 않은 경우가 많다. 하지만, 확실한 것은 특정한 제한된 범위의 태스크에서는 AI가 인간보다 나을 수 있다는 것이다.  현재 의료 산업 분야에 활발히 적용되고 있는 인공지능 기술과, 인공지능 스타트업에 투자되고 있는 금액의 규모가 인공지능의 의료분야에서의 가능성을 보여준다.


참고

https://sigmoidal.io/artificial-intelligence-and-machine-learning-for-healthcare/

반응형
반응형


Python “SSL: CERTIFICATE_VERIFY_FAILED” Error 해결법


Keras에서 ResNet의 weight를 다운 받다가 이러한 에러가 났다. 환경은 리눅스, 파이썬 3 버전이다.


base_model = ResNet50(weights='imagenet', pooling=max, include_top = False) 


이 코드를 실행시키다가 에러가 났는데 h5 파일을 다운 받아야하는데, SSL certificate 문제가 있다면서 다운을 받지 못하는 문제이다. 

http://blog.pengyifan.com/how-to-fix-python-ssl-certificate_verify_failed/


위 링크를 보고 해결하였는데, 


첫번째 해결법은 PYTHONHTTPSVERIFY 환경변수를 0으로 설정하는 방법이다.


export PYTHONHTTPSVERIFY=0
python your_script


두 번재 해결법은 대안적인 방법으로 문제가 있는 코드 앞에 아래 코드를 넣는 방법이다. 


import os, ssl
if (not os.environ.get('PYTHONHTTPSVERIFY', '') and
    getattr(ssl, '_create_unverified_context', None)):
    ssl._create_default_https_context = ssl._create_unverified_context


반응형
반응형

R - 특정 버전의 패키지 설치하기


우선 패키지의 버전을 알아보는 방법은 R을 실행 시킨 후, 


library(package_name)

sessionInfo()


를 입력하면 패키지의 버전을 알 수 있다.


특정 버전의 R 패키지를 설치하는 방법은 우선, Install.packages("devtools")로 devtool을 설치한다.


require(devtools)
install_version("ggplot2", version = "0.9.1", repos = "http://cran.us.r-project.org")


위와 같은 방식으로 특정 버전의 CRAN 패키지를 설치할 수 있다. 이미 패키지가 설치된 상태에서도 install_version 을 활용하면 버전이 바뀌어 다시 설치되기 때문에, 패키지를 다운그레이드 시킬 때도 유용하게 쓸 수 있다.

반응형
반응형



Python - Pandas isin 구문


Python에서 테이블 형식의 데이터를 읽고 처리할 때 가장 많이 쓰이는 pandas 라이브러리에서는 다양한 데이터 처리 기능을 구현하고 있다. 이 중에 isin 구문은 열이 list의 값들을 포함하고 있는 모든 행들을 골라낼 때 주로 쓰인다. 


예를 들어, 아래 예제를 보면


df = DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'f']})
df.isin([1, 3, 12, 'a'])


이와 같이 이진값을 반환한다. 

       A      B
0   True   True
1  False  False
2   True  False

이를 그대로 쓰는 경우보다 Dataframe의 컬럼에서 어떤 list의 값을 포함하고 있는것만 걸러낼 때 isin 구문이 유용하다.


이러한 데이터프레임이 있을 때

df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'f']})

AB
01a
12b
23f


A 컬럼의 값이 [1,3,12]를 포함하는 것만 골라낸다.

df[df['A'].isin([1, 3, 12])]
AB
01a
23f


반응형
반응형

R - 여러개의 독립적인 R Version 설치하기


리눅스에서 R을 사용하다보면 여러개의 R 버전을 독립적으로 유지하고 싶을 수 있다. 기존의 버전을 삭제하고 재설치하기에는 수많은 패키지들을 다시 설치해야하기 때문이다. 아래 github는 여러 R 버전을 독립적으로 설치하는 것을 해주는 shell script이다.


https://github.com/DominikMueller64/install_R_source


git commit https://github.com/DominikMueller64/install_R_source


위 명령어를 통해 쉘스크립트를 다운받고 폴더 안으로 들어간다. cd install_R_source


Example: ./install_R_source 3.4.1

R is then installed to /usr/local/R/d.d.d, where the executable is located at /usr/local/R/d.d.d/bin/R. The shell scripts creates a symbolic link to /usr/bin/R-d.d.d, such that the correct R version should be stared by typing R-d.d.d in a shell.

설치 방법은 위와 같이 ./install_R_source 3.4.3 과 같은 식 커맨드에 입력하면 알아서 설치 및 경로 지정까지 해준다. 

반응형
반응형

GATK4 설치


이곳에서 원하는 버전 zip파일 다운로드

https://github.com/broadinstitute/gatk/releases


예를 들어, 4.0.1.1 버전이면 다운로드를 받은 후,


unzip gatk-4.0.1.1 


명령어를 통해 압축을 풀면 설치가 끝난다.


만약에 binary 파일을 다른 곳에 위치시키고 싶다면(예를 들어 /usr/bin), gatk 파일을 카피해서 원하는 폴더 (/usr/bin)으로 옮긴다.


cp gatk /usr/bin


하지만 binary 파일이 다른 파일들과 떨어져있을 경우, 기존 폴더의 경로를 명시적으로 지정해주어야한다. 이는 환경변수를 지정함으로써 할 수 있는데 환경변수 $ GATK_LOCAL_JAR 을 gatk-package-4.0.1.1-local.jar 파일의 위치로 지정하면 된다.


예를 들어, export GATK_LOCAL_JAR=/home/gatk-package-4.0.1.1-local.jar 을 통해 환경변수를 지정하면, binary 파일이 떨어져있어도 실행 가능하다.

반응형
반응형


R에서 csv 파일을 읽어들일 때 UTF-8 포맷의 텍스트 파일을 읽어오지 못하는 문제가 있었다.


temp <- read.table(path, sep=",", stringsAsFactors=FALSE, header=FALSE, nrows=10) head(temp)


  V1                                                        V2     V3 V4 V5 V6 V7 V8

1  4 01. 16. 18 \xec삤\xec쟾 08\xec떆 02遺\x84 25珥\x88,26.188 17.695 NA NA NA NA NA

2  5 01. 16. 18 \xec삤\xec쟾 08\xec떆 03遺\x84 25珥\x88,26.456 22.904 NA NA NA NA NA

3  6 01. 16. 18 \xec삤\xec쟾 08\xec떆 04遺\x84 25珥\x88,26.530 19.185 NA NA NA NA NA

4  7 01. 16. 18 \xec삤\xec쟾 08\xec떆 05遺\x84 25珥\x88,26.603 19.383 NA NA NA NA NA

5  8 01. 16. 18 \xec삤\xec쟾 08\xec떆 06遺\x84 25珥\x88,26.676 21.714 NA NA NA NA NA

6  9 01. 16. 18 \xec삤\xec쟾 08\xec떆 07遺\x84 25珥\x88,26.652 21.107 NA NA NA NA NA


위와 같이 파일이 깨지는 현상


temp <- read.table(path, sep=",", stringsAsFactors=FALSE, header=FALSE, nrows=10,fileEncoding = "utf-8")


Error in read.table(paste0(path, date, name, filename_hobo), skip = 5,  : 

  입력에 가능한 라인들이 없습니다

In addition: Warning messages:

1: In readLines(file, skip) :

  invalid input found on input connection 'C:\workspace\r\data\mongol\180116\1\MG2018_0116_KSY_HOBO.csv'

2: In readLines(file, skip) :

  incomplete final line found on 'C:\workspace\r\data\mongol\180116\1\MG2018_0116_KSY_HOBO.csv'


fileEncoding="utf-8" 옵션을 넣으면 아예 읽어들이지도 못한다.

해법을 찾다가 포기하고 결국 간접적인 해법으로 다음과 같은 리눅스 쉘 스크립트를 통해 utf-8을 모두 euc-kr로 바꾸고 r에서 읽었다.

find . -name '*.csv' -exec iconv -f utf-8 -t euc-kr "{}" -o "{}" -c \;

이 명령어는 현재 디렉토리 아래에 있는 모든 csv 파일의 인코딩을 utf-8에서 euc-kr로 바꾼다. 


이후에 읽으니까 파일 읽기에 성공하였다.

반응형
반응형


리눅스 하위 디렉토리의 특정 파일 삭제



$ find . -name '*.tmp' -exec rm {} \;



설명


find . -name '*.tmp' 는 현재 디렉토리 (.) 아래의 확장자가 tmp인 모든 파일을 찾아 출력한다. 디렉토리를 지정하고 싶다면 . 대신에 디렉토리 path를 찾아서 쓰면된다.


-exec rm {} \; 에서 {}는 find로 찾은 파일들을 나타낸다. -exec rm을 통해 찾은 파일들을 삭제한다



반응형
반응형


현재 폴더 내 모든 zip 파일의 압축을 푼다.


for file in `ls *.zip`; do unzip "${file}" -d "${file:0:-4}"; done

현재 폴더에 zip 파일의 이름과 같은 폴더가 생성이 되고, 각각의 폴더 아래에 zip 파일의 내용물들이 생성된다.

예를 들어, 1.zip, 2.zip 파일이 있으면, 1, 2폴더가 생성되고 그 아래에 각각 내용물이 생김



현재 폴더 내 모든 gz파일의 압축을 푼다.


for file in `ls *.gz`; do gunzip "${file}" -d "${file:0:-4}"; done
마찬가지로 gz파일의 압축을 해제할 수 있음


현재 폴더 내 모든 zip 파일의 압축을 풀지만, 새 폴더를 생성하지 않음

for file in `ls *.zip`; do unzip "${file}"; done

만약 현재 폴더내 모든 압축 물들의 압축을 풀고 싶지만, 폴더를 새로 생성하고 싶지 않다면 -d 부터 제외하면 된다.


반응형
반응형
역학 연구에서의 스터디 디자인


역학 연구에서의 스터디 디자인을 한 눈에 볼 수 있는 테이블이다. 각각의 스터디 디자인에서 기술 연구, 분석 연구를 할 때 일반적으로 어떤 measure를 사용하는지, 그리고 스터디 디자인마다 장, 단점은 무엇인지 파악할 수 있다.


Table 1: 
Main study designs in classic epidemiology.


Case reportsCase seriesEcological studiesCross sectional studiesCase controlCohortIntervention trials

Unit of study(Single case) 
individual
(>1 cases) individualPopulationIndividualIndividualIndividualIndividual

DescriptionDescribes unusual characteristics of a caseA group of casesComparing populations in different places at the same time or, in a time seriesStudy of population at, “point-in-time,”Study of two groups of subjects: (case; disease of interest and control; disease-free)Study of two groups of subjects (exposure and non-exposure groups)Study and examine two groups of subjects (intervention and control groups)

DirectionPresentPresentPresentPresentReverseForwardForward

Type of measurementReporting, descriptionReporting, descriptionCorrelationPrevalence, associationOdds ratioPrevalence, incidence, relative risk, attributable riskPrevalence, incidence, relative risk, attributable risk

AdvantagesQuick, having clinical importance, opportunities for physicians to exchange of thoughtsQuick, having clinical importance, opportunities for physicians to exchange of thoughtsQuick, inexpensive, group-level studies may also be the only way to study the effects of group-level constructs, for example, lawsEasy, inexpensive, useful for investigating fixed exposures such as blood group, most convenient in outbreaks of diseaseRelatively inexpensive good for rare diseases Efficient in resources and timeBetter for rare exposures, ability to determine causality relationsThe strongest evidence for causality, control of unknown confounders, fulfils the basic assumption of statistical hypothesis tests

limitationInability to determine statistical relations and analysisInability to determine statistical relations and analysisEcological fallacySusceptible to selection bias and misclassification, difficult to establish a putative, “cause”, Not good for rare diseases or rare exposuresSusceptible to selection bias and misclassification bias, may be difficult to establish that, “cause,” preceded effectCostly and time consuming, susceptible to selection bias. Relatively statistically inefficient unless disease is common.Expensive, time consuming, sometimes ethically generalizability problem

https://www.hindawi.com/journals/isrn/2013/952518/tab1/


반응형