SlideShare ist ein Scribd-Unternehmen logo
1 von 103
Downloaden Sie, um offline zu lesen
탐색적으로 큰 데이터 분석하기
장혜식
기초과학연구원 RNA연구단
배경 이미지 위치:
http://4.bp.blogspot.com/-bB4jFkQ_jBk/T70ipuyFn6I/AAAAAAAAAOE/cnbxI03ve0Y/s1600/
snake_pile_2crop+by+Tracy+Langkilde.jpg
Electronic Health Records
(EHR)
배경 이미지 위치:
http://www.trbimg.com/img-552d5b6b/turbine/la-sci-sn-medical-records-breaches-20150414-001/800/800x450
from Wikimedia Commons
from Wikimedia Commons
병리학적 측정 결과
새로운 증상
증상의 변화
약 처방
상세한 내원 이력
약 부작용
알레르기 이력
환자 본인 측정 결과
유전자 검사 결과
가족력
인구학적 정보
하버드 의대 Isaac Kohane 그룹
그룹 단체 사진
호흡기
Jane Q. Doe
ED Profile
June,1992 – Feb,1999
Reis et al., BMJ 2009
from Isaac Kohane’s slides
감염
치과
안과
정신과
비뇨기과
소화기
이비인후과
피부과
통증의학과
응급의학과
(부상)
응급의학과
(폭행)
6
가정폭력
domestic violence
배경 이미지 위치:
https://garyullah.files.wordpress.com/2015/01/man-with-clenched-fist-an-014.jpg
병원A
데이터 수집
병원B
데이터 수집
병원C
데이터 수집
시스템A
데이터 변환
시스템A
데이터 변환
시스템B
데이터 변환
개인별 데이터 통합
방문횟수 계산 진단명 종류 조사
병원A
데이터 수집
병원B
데이터 수집
병원C
데이터 수집
시스템A
데이터 변환
시스템A
데이터 변환
시스템B
데이터 변환
개인별 데이터 통합
방문횟수 계산 진단명 종류 조사
특이 환자 샘플링
오프라인 조사 및
가설 수립
병원A
데이터 수집
병원B
데이터 수집
병원C
데이터 수집
시스템A
데이터 변환
시스템A
데이터 변환
시스템B
데이터 변환
개인별 데이터 통합
방문횟수 계산 진단명 종류 조사
특이 환자 샘플링
오프라인 조사 및
가설 수립
모델 적용 및 예측
성능 검증 특이 환자 샘플링
오프라인 조사
특이 지표 탐색
병원A
데이터 수집
병원B
데이터 수집
병원C
데이터 수집
시스템A
데이터 변환
시스템A
데이터 변환
시스템B
데이터 변환
개인별 데이터 통합
방문횟수 계산 진단명 종류 조사
특이 환자 샘플링
오프라인 조사 및
가설 수립
모델 적용 및 예측
성능 검증 특이 환자 샘플링
오프라인 조사
특이 지표 탐색
병원D
데이터 수집
시스템C
데이터 변환
Exploratory Data Analysis
탐색적 데이터 분석
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
언제 어떤 데이터가 추가될 지 모른다.
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
코드는 빨리 만들어서 (거의) 한 번만 쓴다.
언제 어떤 데이터가 추가될 지 모른다.
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
코드는 빨리 만들어서 (거의) 한 번만 쓴다.
언제 어떤 데이터가 추가될 지 모른다.
그렇다고 재사용이 아예 없는 것도 아니다.
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
코드는 빨리 만들어서 (거의) 한 번만 쓴다.
언제 어떤 데이터가 추가될 지 모른다.
그렇다고 재사용이 아예 없는 것도 아니다.
코드 추가/수정이 매우 간편
흐름도 슉슉 쉽게 바꿔야 함
조금씩 조금씩 실행할 수 있어야 함
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
코드는 빨리 만들어서 (거의) 한 번만 쓴다.
언제 어떤 데이터가 추가될 지 모른다.
그렇다고 재사용이 아예 없는 것도 아니다.
코드 추가/수정이 매우 간편
흐름도 슉슉 쉽게 바꿔야 함
조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것
같은 모듈화, 재현성, 확
장성 확보!
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
코드는 빨리 만들어서 (거의) 한 번만 쓴다.
언제 어떤 데이터가 추가될 지 모른다.
그렇다고 재사용이 아예 없는 것도 아니다.
코드 추가/수정이 매우 간편
흐름도 슉슉 쉽게 바꿔야 함
조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것
같은 모듈화, 재현성, 확
장성 확보!
코드 추가가 매우 간편
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
코드는 빨리 만들어서 (거의) 한 번만 쓴다.
언제 어떤 데이터가 추가될 지 모른다.
그렇다고 재사용이 아예 없는 것도 아니다.
코드 추가/수정이 매우 간편
흐름도 슉슉 쉽게 바꿔야 함
조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것
같은 모듈화, 재현성, 확
장성 확보!
코드 추가가 매우 간편
프레임워크가 유연하고 성숙해야 함
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
코드는 빨리 만들어서 (거의) 한 번만 쓴다.
언제 어떤 데이터가 추가될 지 모른다.
그렇다고 재사용이 아예 없는 것도 아니다.
코드 추가/수정이 매우 간편
흐름도 슉슉 쉽게 바꿔야 함
조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것
같은 모듈화, 재현성, 확
장성 확보!
코드 추가가 매우 간편
프레임워크가 유연하고 성숙해야 함
데이터가 작지는 않다.
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
코드는 빨리 만들어서 (거의) 한 번만 쓴다.
언제 어떤 데이터가 추가될 지 모른다.
그렇다고 재사용이 아예 없는 것도 아니다.
코드 추가/수정이 매우 간편
흐름도 슉슉 쉽게 바꿔야 함
조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것
같은 모듈화, 재현성, 확
장성 확보!
코드 추가가 매우 간편
프레임워크가 유연하고 성숙해야 함
데이터가 작지는 않다.
적당히 빨라야 함
Jupyter Notebook
이미지 위치:
https://attachment.namu.wiki/%EC
%B9%B4%ED%8F%AC%EC
%A0%84__mcvslotte.png
이미지 위치:
https://attachment.namu.wiki/%EC
%B9%B4%ED%8F%AC%EC
%A0%84__mcvslotte.png
인생
인생
Jupyter 쓰기 전
😂😑😖😥😨
인생
Jupyter와 함께
😁😄😀😋😍
Jupyter 쓰기 전
😂😑😖😥😨
인생
pandas와 함께
😁😄😀😋😍
pandas 쓰기 전
😂😑😖😥😨
Snakemake
make가 좋은 것
make가 좋은 것
- 아주 간결한 문법
make가 좋은 것
- 아주 간결한 문법
- 가볍다
make가 좋은 것
- 아주 간결한 문법
- 가볍다
- 파일 기반 의존성
make가 좋은 것
- 아주 간결한 문법
- 가볍다
- 파일 기반 의존성
- “규칙”
make가 좋은 것
- 아주 간결한 문법
- 가볍다
- 파일 기반 의존성
- “규칙”
- 병렬화
make가 좋은 것
- 아주 간결한 문법
- 가볍다
- 파일 기반 의존성
- “규칙”
- 병렬화 make가 안 좋은 것
make가 좋은 것
- 아주 간결한 문법
- 가볍다
- 파일 기반 의존성
- “규칙”
- 병렬화 make가 안 좋은 것
- 이상하고 못생긴 문법
make가 좋은 것
- 아주 간결한 문법
- 가볍다
- 파일 기반 의존성
- “규칙”
- 병렬화 make가 안 좋은 것
- 이상하고 못생긴 문법
- 스크립팅이 매우 제한적임
make가 좋은 것
- 아주 간결한 문법
- 가볍다
- 파일 기반 의존성
- “규칙”
- 병렬화 make가 안 좋은 것
- 이상하고 못생긴 문법
- 스크립팅이 매우 제한적임
- 파일이름에 와일드카드 및 패턴 못 씀
make가 좋은 것
- 아주 간결한 문법
- 가볍다
- 파일 기반 의존성
- “규칙”
- 병렬화 make가 안 좋은 것
- 이상하고 못생긴 문법
- 스크립팅이 매우 제한적임
- 파일이름에 와일드카드 및 패턴 못 씀
- 부족한 병렬화, 클러스터 지원
make가 좋은 것
- 아주 간결한 문법
- 가볍다
- 파일 기반 의존성
- “규칙”
- 병렬화 make가 안 좋은 것
- 이상하고 못생긴 문법
- 스크립팅이 매우 제한적임
- 파일이름에 와일드카드 및 패턴 못 씀
- 부족한 병렬화, 클러스터 지원
- 현대과학의 혜택을 받지 못함
map
sample: 503
all
map
sample: 501
index
map
sample: 502
map
sample: 500
make와 마찬가지로
make와 마찬가지로
- 의존성이 없는 작업은 병렬로 실행됨
make와 마찬가지로
- 의존성이 없는 작업은 병렬로 실행됨
- 이미 있는 새 파일은 무시하고 지나감
make와 마찬가지로
- 의존성이 없는 작업은 병렬로 실행됨
- 이미 있는 새 파일은 무시하고 지나감
# 예비 실행
$ snakemake -n
make와 마찬가지로
- 의존성이 없는 작업은 병렬로 실행됨
- 이미 있는 새 파일은 무시하고 지나감
# 예비 실행
$ snakemake -n
# 최대 8코어까지 사용해서 병렬로 돌림
$ snakemake --cores 8
make와 마찬가지로
- 의존성이 없는 작업은 병렬로 실행됨
- 이미 있는 새 파일은 무시하고 지나감
# 예비 실행
$ snakemake -n
# 최대 8코어까지 사용해서 병렬로 돌림
$ snakemake --cores 8
# 클러스터에서 최대 20개 작업까지 큐에 넣고 돌림
$ snakemake --jobs 20 --cluster “qsub -pe threaded {threads}”
make와 마찬가지로
- 의존성이 없는 작업은 병렬로 실행됨
- 이미 있는 새 파일은 무시하고 지나감
# 예비 실행
$ snakemake -n
# 최대 8코어까지 사용해서 병렬로 돌림
$ snakemake --cores 8
# 클러스터에서 최대 20개 작업까지 큐에 넣고 돌림
$ snakemake --jobs 20 --cluster “qsub -pe threaded {threads}”
# DRMAA를 지원하는 클러스터에 넣고 돌림
$ snakemake --jobs 20 --drmaa
File-driven programming?
“보일러판이 필요 없는”
프로그램 내장형
병렬화 이벤트 루프
snakemake
GUI
resource quota
task priority
code/data versions
audit trailconfigurations
HTML reporting
R embedding
benchmarking
modularization
version tracking
텍스트 파일 병렬처리
d1 d2 area population density lat lon
경기도 가평군 843.04 5854069.43917251850446 37.8315403 127.5098827
서울특별시 강남구 39.5 569499 14417.696202531646 37.5172363 127.0473248
서울특별시 강동구 24.6 489655 19904.674796747968 37.5301251 127.123762
강원도 강릉시 1040.07 219067 210.62716932514158 37.751853 128.8760574
서울특별시 강북구 23.6 343912 14572.542372881355 37.6396099 127.0256575
부산광역시 강서구 179.05 63753356.06255235967603 35.2122157 128.9805666
서울특별시 강서구 41.4 579196 13990.241545893721 37.5509786 126.8495382
전라남도 강진군 495.98 4142883.5275615952256 34.6420774 126.767261
인천광역시 강화군 411.267597164.38959143968873 37.7467263 126.4878731
탭으로 구분된 텍스트 (tsv)
C행정구역별(읍면동),행정구역별(읍면동),C연령별,연령별,시점,인구(내국인),남자,여자,성비
'00,전국,'000,합계,2010,47990761,23840896,24149865,98.7
'00,전국,'005,0~4세,2010,2219084,1142220,1076864,106.1
'00,전국,'005001, 0세,2010,437452,225242,212210,106.1
'00,전국,'005002, 1세,2010,426807,219728,207079,106.1
'00,전국,'005003, 2세,2010,456798,234291,222507,105.3
'00,전국,'005004, 3세,2010,467426,240482,226944,106.0
'00,전국,'005005, 4세,2010,430601,222477,208124,106.9
'00,전국,'010,5~9세,2010,2394663,1243294,1151369,108.0
'00,전국,'010001, 5세,2010,423102,218356,204746,106.6
쉼표로 구분된 텍스트 (csv)
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
코드는 빨리 만들어서 (거의) 한 번만 쓴다.
언제 어떤 데이터가 추가될 지 모른다.
그렇다고 재사용이 아예 없는 것도 아니다.
코드 추가/수정이 매우 간편
흐름도 슉슉 쉽게 바꿔야 함
조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것
같은 모듈화, 재현성, 확
장성 확보!
코드 추가가 매우 간편
프레임워크가 유연하고 성숙해야 함
데이터가 작지는 않다.
적당히 빨라야 함
hyeshik@adenine /g/h/h/o/t/h/sequences> ls -al *.txt.gz
-rw-r--r-- 1 hyeshik 251455559343 Sep 16 2014 ts00.txt.gz
-rw-r--r-- 1 hyeshik 243815859961 Sep 16 2014 ts01.txt.gz
-rw-r--r-- 1 hyeshik 333505252185 Sep 16 2014 ts02.txt.gz
-rw-r--r-- 1 hyeshik 251077215174 Sep 16 2014 ts03.txt.gz
-rw-r--r-- 1 hyeshik 344801600522 Sep 16 2014 ts04.txt.gz
-rw-r--r-- 1 hyeshik 263449133340 Sep 16 2014 ts05.txt.gz
hyeshik@adenine /g/h/h/o/t/h/sequences> ls -al *.txt.gz
-rw-r--r-- 1 hyeshik 251455559343 Sep 16 2014 ts00.txt.gz
-rw-r--r-- 1 hyeshik 243815859961 Sep 16 2014 ts01.txt.gz
-rw-r--r-- 1 hyeshik 333505252185 Sep 16 2014 ts02.txt.gz
-rw-r--r-- 1 hyeshik 251077215174 Sep 16 2014 ts03.txt.gz
-rw-r--r-- 1 hyeshik 344801600522 Sep 16 2014 ts04.txt.gz
-rw-r--r-- 1 hyeshik 263449133340 Sep 16 2014 ts05.txt.gz
큰 텍스트 파일들을
“엄청 쉽게” 병렬처리 하려면?
hyeshik@adenine /g/h/h/o/t/h/sequences> ls -al *.txt.gz
-rw-r--r-- 1 hyeshik 251455559343 Sep 16 2014 ts00.txt.gz
-rw-r--r-- 1 hyeshik 243815859961 Sep 16 2014 ts01.txt.gz
-rw-r--r-- 1 hyeshik 333505252185 Sep 16 2014 ts02.txt.gz
-rw-r--r-- 1 hyeshik 251077215174 Sep 16 2014 ts03.txt.gz
-rw-r--r-- 1 hyeshik 344801600522 Sep 16 2014 ts04.txt.gz
-rw-r--r-- 1 hyeshik 263449133340 Sep 16 2014 ts05.txt.gz
큰 텍스트 파일들을
“엄청 쉽게” 병렬처리 하려면?“엄청 쉽게”
큰 텍스트 파일들을
“엄청 쉽게” 병렬처리 하려면?“엄청 쉽게”
큰 텍스트 파일들을
“엄청 쉽게” 병렬처리 하려면?“엄청 쉽게”
압축을 안 한다.
큰 텍스트 파일들을
“엄청 쉽게” 병렬처리 하려면?“엄청 쉽게”
압축을 안 한다.
파일을 쪼갠다.
큰 텍스트 파일들을
“엄청 쉽게” 병렬처리 하려면?“엄청 쉽게”
압축을 안 한다.
파일을 쪼갠다.
tabix를 쓴다.
gzip
압축 파일
gzip
압축 파일
gz block 1
gz block 2
gz block 3
gz block 4
gz block 5
gz block 6
gz block 7
gz block 8
gz block 9
gz block 10
bgzf
gzip
압축 파일
gz block 1
gz block 2
gz block 3
gz block 4
gz block 5
gz block 6
gz block 7
gz block 8
gz block 9
gz block 10
bgzf
100%
하위호환
tabix 쓰기
# 인덱스를 만든다.
$ tabix -0 -s1 -b2 ts02.txt.gz
tabix 쓰기
# 인덱스를 만든다.
$ tabix -0 -s1 -b2 ts02.txt.gz
# 염색체 목록을 본다. (염색체=레벨1 인덱스)
$ tabix ——list-chroms ts02.txt.gz
tabix 쓰기
# 인덱스를 만든다.
$ tabix -0 -s1 -b2 ts02.txt.gz
# 염색체 목록을 본다. (염색체=레벨1 인덱스)
$ tabix ——list-chroms ts02.txt.gz
# 염색체 1101 데이터 전체를 출력한다.
$ tabix ts02.txt.gz 1101
tabix 쓰기
# 인덱스를 만든다.
$ tabix -0 -s1 -b2 ts02.txt.gz
# 염색체 목록을 본다. (염색체=레벨1 인덱스)
$ tabix ——list-chroms ts02.txt.gz
# 염색체 1101 데이터 전체를 출력한다.
$ tabix ts02.txt.gz 1101
# 염색체 1101의 10000부터 10100 자리까지 출력한다.
$ tabix ts02.txt.gz 1101:10000-10100
tabix 쓰기
tabix 한계점
tabix 한계점
초기 인덱싱은 병렬화되지 않는다.
tabix 한계점
반드시 2레벨 인덱스로 정렬돼 있어야 한다.
초기 인덱싱은 병렬화되지 않는다.
tabix 한계점
반드시 2레벨 인덱스로 정렬돼 있어야 한다.
레벨 1 인덱스는 범위지정이 안 된다.
초기 인덱싱은 병렬화되지 않는다.
파이썬이 답답하면?
Exploratory Data Analysis
탐색적 데이터 분석
“재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
코드는 빨리 만들어서 (거의) 한 번만 쓴다.
언제 어떤 데이터가 추가될 지 모른다.
그렇다고 재사용이 아예 없는 것도 아니다.
코드 추가/수정이 매우 간편
흐름도 슉슉 쉽게 바꿔야 함
조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것
같은 모듈화, 재현성, 확
장성 확보!
코드 추가가 매우 간편
프레임워크가 유연하고 성숙해야 함
데이터가 작지는 않다.
적당히 빨라야 함
Dynamic
programming
Monte Carlo
simulation
Permutation tests
배경 이미지 위치:
http://i.imgur.com/pSyG4xJ.jpg
def water(seq1, seq2):
m, n = len(seq1), len(seq2) # length of two sequences
# Generate DP table and traceback path pointer matrix
score = zeros((m+1, n+1)) # the DP table
pointer = zeros((m+1, n+1)) # to store the traceback path
max_score = 0 # initial maximum score in DP table
# Calculate DP table and mark pointers
for i in range(1, m + 1):
for j in range(1, n + 1):
score_diagonal = score[i-1][j-1] + match_score(seq1[i-1], seq2[j-1])
score_up = score[i][j-1] + gap_penalty
score_left = score[i-1][j] + gap_penalty
score[i][j] = max(0,score_left, score_up, score_diagonal)
if score[i][j] == 0:
pointer[i][j] = 0 # 0 means end of the path
if score[i][j] == score_left:
pointer[i][j] = 1 # 1 means trace up
if score[i][j] == score_up:
pointer[i][j] = 2 # 2 means trace left
if score[i][j] == score_diagonal:
pointer[i][j] = 3 # 3 means trace diagonal
if score[i][j] >= max_score:
max_i = i
max_j = j
max_score = score[i][j];
https://github.com/alevchuk/pairwise-alignment-in-python
_
_ _ _(_)_ | A fresh approach to technical computing
(_) | (_) (_) | Documentation: http://docs.julialang.org
_ _ _| |_ __ _ | Type "help()" for help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 0.3.11 (2015-07-27 06:18 UTC)
_/ |__'_|_|_|__'_| |
|__/ | x86_64-linux-gnu
julia> f(x, y) = x * y
f (generic function with 1 method)
julia> code_native(f, (Float64, Float64))
.text
Filename: none
Source line: 1
push RBP
mov RBP, RSP
Source line: 1
vmulsd XMM0, XMM0, XMM1
pop RBP
ret
http://julialang.org/benchmarks/
C Java Python R Julia
배우기 쉬운가? X X O O O
유지보수와 재활용이 쉬운 코드를 만
들기 좋은가?
X △ O △ O
잘 짜면 빠르게 도는가? O O X X O
행렬, 벡터 연산이 쉬운가? X X O △ O
매우 큰 프로그램을 만들기 편한가? △ O O X △
# precell
precell(::Void) = PreCell([][:,:], 0, 0)
function precell(el::AbstractString)
if contains(el, "n")
a = map(split(el, "n")) do x
width = strwidth(x)
string(x, repeat(" ", width-length(x)))
end[:, :]
m,n = size(a)
PreCell(a, maximum(map(length, a)), m)
else
width = strwidth(el)
PreCell([string(el, repeat(" ", width-length(el)))][:,:], width, 1)
end
end
part of Millboard.jl by wookay
찰떡궁합 Julia❤Python
찰떡궁합 Julia❤Python
요약
요약
• Jupyter notebook 쓰면 똑똑해집니다.
요약
• Jupyter notebook 쓰면 똑똑해집니다.
• Snakemake 쓰면 수명이 늘어납니다.
요약
• Jupyter notebook 쓰면 똑똑해집니다.
• Snakemake 쓰면 수명이 늘어납니다.
• 큰 텍스트 파일을 나눠서 처리하려면 tabix!
요약
• Jupyter notebook 쓰면 똑똑해집니다.
• Snakemake 쓰면 수명이 늘어납니다.
• 큰 텍스트 파일을 나눠서 처리하려면 tabix!
• 속도가 필요할 땐 파이썬과 줄리아를 같이 쓰세요!
Acknowledgements
Johannes Köster Dana-Farber Cancer Institute
Heng Li Broad Institute
Bezanson, Karpinski, Shah, and Edelman MIT
노우경 줄리아 한국 사용자 그룹
탐색적으로 큰 데이터 분석하기
장혜식
기초과학연구원 RNA연구단
배경 이미지 위치:
http://4.bp.blogspot.com/-bB4jFkQ_jBk/T70ipuyFn6I/AAAAAAAAAOE/cnbxI03ve0Y/s1600/
snake_pile_2crop+by+Tracy+Langkilde.jpg

Weitere ähnliche Inhalte

Was ist angesagt?

딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
Java와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 SikuliJava와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 Sikuli용 최
 
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint [D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint NAVER D2
 
머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기HoChul Shin
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine LearningJEEHYUN PAIK
 
[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자NAVER D2
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기Wonha Ryu
 
파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)SK(주) C&C - 강병호
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016Taehoon Kim
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호NAVER D2
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetectJunyi Song
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성NAVER D2
 
Workshop 210417 dhlee
Workshop 210417 dhleeWorkshop 210417 dhlee
Workshop 210417 dhleeDongheon Lee
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tae Young Lee
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요KTH
 
Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편준철 박
 
제로부터시작하는오픈소스
제로부터시작하는오픈소스제로부터시작하는오픈소스
제로부터시작하는오픈소스Mario Cho
 
ML + 주식 phase 2
ML + 주식  phase 2ML + 주식  phase 2
ML + 주식 phase 2HoChul Shin
 

Was ist angesagt? (20)

딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
Java와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 SikuliJava와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 Sikuli
 
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint [D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
 
머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
 
[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)
 
파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
 
Workshop 210417 dhlee
Workshop 210417 dhleeWorkshop 210417 dhlee
Workshop 210417 dhlee
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
 
Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편
 
제로부터시작하는오픈소스
제로부터시작하는오픈소스제로부터시작하는오픈소스
제로부터시작하는오픈소스
 
ML + 주식 phase 2
ML + 주식  phase 2ML + 주식  phase 2
ML + 주식 phase 2
 

Andere mochten auch

탐색적 데이터분석(국민건강보험)
탐색적 데이터분석(국민건강보험)탐색적 데이터분석(국민건강보험)
탐색적 데이터분석(국민건강보험)Hyoseup_Kwon
 
데이터에 포함된 동적 패턴의 탐색과 해석을 위한 협업적 탐험 플랫폼 -최진혁
데이터에 포함된 동적 패턴의 탐색과 해석을 위한 협업적 탐험 플랫폼 -최진혁데이터에 포함된 동적 패턴의 탐색과 해석을 위한 협업적 탐험 플랫폼 -최진혁
데이터에 포함된 동적 패턴의 탐색과 해석을 위한 협업적 탐험 플랫폼 -최진혁datasciencekorea
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 정주 김
 
Dm ml study_roadmap
Dm ml study_roadmapDm ml study_roadmap
Dm ml study_roadmapKang Pilsung
 
한국 PyCon 2014 - 개회사
한국 PyCon 2014 - 개회사한국 PyCon 2014 - 개회사
한국 PyCon 2014 - 개회사Hyeshik Chang
 
헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)
헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)
헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)Jin Young Kim
 
Evolutionary (deep) neural network
Evolutionary (deep) neural networkEvolutionary (deep) neural network
Evolutionary (deep) neural networkSoo-Yong Shin
 

Andere mochten auch (8)

탐색적 데이터분석(국민건강보험)
탐색적 데이터분석(국민건강보험)탐색적 데이터분석(국민건강보험)
탐색적 데이터분석(국민건강보험)
 
데이터에 포함된 동적 패턴의 탐색과 해석을 위한 협업적 탐험 플랫폼 -최진혁
데이터에 포함된 동적 패턴의 탐색과 해석을 위한 협업적 탐험 플랫폼 -최진혁데이터에 포함된 동적 패턴의 탐색과 해석을 위한 협업적 탐험 플랫폼 -최진혁
데이터에 포함된 동적 패턴의 탐색과 해석을 위한 협업적 탐험 플랫폼 -최진혁
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
 
Dm ml study_roadmap
Dm ml study_roadmapDm ml study_roadmap
Dm ml study_roadmap
 
한국 PyCon 2014 - 개회사
한국 PyCon 2014 - 개회사한국 PyCon 2014 - 개회사
한국 PyCon 2014 - 개회사
 
헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)
헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)
헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기 (스타트업 얼라이언스 강연)
 
Evolutionary (deep) neural network
Evolutionary (deep) neural networkEvolutionary (deep) neural network
Evolutionary (deep) neural network
 
ISO 20428 Intro
ISO 20428 IntroISO 20428 Intro
ISO 20428 Intro
 

Ähnlich wie PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기

T.D.D로 Flask API 맛보기
T.D.D로 Flask API 맛보기T.D.D로 Flask API 맛보기
T.D.D로 Flask API 맛보기JIHUN KIM
 
[AWSKRUG] 데이터 얼마까지 알아보셨어요?
[AWSKRUG] 데이터 얼마까지 알아보셨어요?[AWSKRUG] 데이터 얼마까지 알아보셨어요?
[AWSKRUG] 데이터 얼마까지 알아보셨어요?Yan So
 
스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료라한사 아
 
제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요
제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요
제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요NAVER D2
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성NAVER D2
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.jsHeeJung Hwang
 
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기Han-seok Jo
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민종민 김
 
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.Adonis Han
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개beom kyun choi
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipelineJongho Woo
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7KoChungWook
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XpressEngine
 
Spark 소개 2부
Spark 소개 2부Spark 소개 2부
Spark 소개 2부Jinho Yoo
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Gruter
 
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)WON JOON YOO
 
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)Amazon Web Services Korea
 
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XpressEngine
 
[Tf2017] day1 jwkang_pub
[Tf2017] day1 jwkang_pub[Tf2017] day1 jwkang_pub
[Tf2017] day1 jwkang_pubJaewook. Kang
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기Sungchul Park
 

Ähnlich wie PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기 (20)

T.D.D로 Flask API 맛보기
T.D.D로 Flask API 맛보기T.D.D로 Flask API 맛보기
T.D.D로 Flask API 맛보기
 
[AWSKRUG] 데이터 얼마까지 알아보셨어요?
[AWSKRUG] 데이터 얼마까지 알아보셨어요?[AWSKRUG] 데이터 얼마까지 알아보셨어요?
[AWSKRUG] 데이터 얼마까지 알아보셨어요?
 
스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료
 
제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요
제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요
제12회 IT4U 강연회 - 악성코드 분석 잘하고 싶어요
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
 
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
 
Spark 소개 2부
Spark 소개 2부Spark 소개 2부
Spark 소개 2부
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014
 
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
 
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)
Partner ConneXions - AWS 파트너를 위한 re:Invent 신규 서비스 소개 (윤석찬 테크에반젤리스트)
 
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
 
[Tf2017] day1 jwkang_pub
[Tf2017] day1 jwkang_pub[Tf2017] day1 jwkang_pub
[Tf2017] day1 jwkang_pub
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
 

PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기

  • 1. 탐색적으로 큰 데이터 분석하기 장혜식 기초과학연구원 RNA연구단 배경 이미지 위치: http://4.bp.blogspot.com/-bB4jFkQ_jBk/T70ipuyFn6I/AAAAAAAAAOE/cnbxI03ve0Y/s1600/ snake_pile_2crop+by+Tracy+Langkilde.jpg
  • 2. Electronic Health Records (EHR) 배경 이미지 위치: http://www.trbimg.com/img-552d5b6b/turbine/la-sci-sn-medical-records-breaches-20150414-001/800/800x450
  • 4. from Wikimedia Commons 병리학적 측정 결과 새로운 증상 증상의 변화 약 처방 상세한 내원 이력 약 부작용 알레르기 이력 환자 본인 측정 결과 유전자 검사 결과 가족력 인구학적 정보
  • 5. 하버드 의대 Isaac Kohane 그룹 그룹 단체 사진
  • 6. 호흡기 Jane Q. Doe ED Profile June,1992 – Feb,1999 Reis et al., BMJ 2009 from Isaac Kohane’s slides 감염 치과 안과 정신과 비뇨기과 소화기 이비인후과 피부과 통증의학과 응급의학과 (부상) 응급의학과 (폭행)
  • 7. 6 가정폭력 domestic violence 배경 이미지 위치: https://garyullah.files.wordpress.com/2015/01/man-with-clenched-fist-an-014.jpg
  • 8. 병원A 데이터 수집 병원B 데이터 수집 병원C 데이터 수집 시스템A 데이터 변환 시스템A 데이터 변환 시스템B 데이터 변환 개인별 데이터 통합 방문횟수 계산 진단명 종류 조사
  • 9. 병원A 데이터 수집 병원B 데이터 수집 병원C 데이터 수집 시스템A 데이터 변환 시스템A 데이터 변환 시스템B 데이터 변환 개인별 데이터 통합 방문횟수 계산 진단명 종류 조사 특이 환자 샘플링 오프라인 조사 및 가설 수립
  • 10. 병원A 데이터 수집 병원B 데이터 수집 병원C 데이터 수집 시스템A 데이터 변환 시스템A 데이터 변환 시스템B 데이터 변환 개인별 데이터 통합 방문횟수 계산 진단명 종류 조사 특이 환자 샘플링 오프라인 조사 및 가설 수립 모델 적용 및 예측 성능 검증 특이 환자 샘플링 오프라인 조사 특이 지표 탐색
  • 11. 병원A 데이터 수집 병원B 데이터 수집 병원C 데이터 수집 시스템A 데이터 변환 시스템A 데이터 변환 시스템B 데이터 변환 개인별 데이터 통합 방문횟수 계산 진단명 종류 조사 특이 환자 샘플링 오프라인 조사 및 가설 수립 모델 적용 및 예측 성능 검증 특이 환자 샘플링 오프라인 조사 특이 지표 탐색 병원D 데이터 수집 시스템C 데이터 변환
  • 13. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다).
  • 14. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다). 언제 어떤 데이터가 추가될 지 모른다.
  • 15. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다). 코드는 빨리 만들어서 (거의) 한 번만 쓴다. 언제 어떤 데이터가 추가될 지 모른다.
  • 16. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다). 코드는 빨리 만들어서 (거의) 한 번만 쓴다. 언제 어떤 데이터가 추가될 지 모른다. 그렇다고 재사용이 아예 없는 것도 아니다.
  • 17. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다). 코드는 빨리 만들어서 (거의) 한 번만 쓴다. 언제 어떤 데이터가 추가될 지 모른다. 그렇다고 재사용이 아예 없는 것도 아니다. 코드 추가/수정이 매우 간편 흐름도 슉슉 쉽게 바꿔야 함 조금씩 조금씩 실행할 수 있어야 함
  • 18. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다). 코드는 빨리 만들어서 (거의) 한 번만 쓴다. 언제 어떤 데이터가 추가될 지 모른다. 그렇다고 재사용이 아예 없는 것도 아니다. 코드 추가/수정이 매우 간편 흐름도 슉슉 쉽게 바꿔야 함 조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것 같은 모듈화, 재현성, 확 장성 확보!
  • 19. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다). 코드는 빨리 만들어서 (거의) 한 번만 쓴다. 언제 어떤 데이터가 추가될 지 모른다. 그렇다고 재사용이 아예 없는 것도 아니다. 코드 추가/수정이 매우 간편 흐름도 슉슉 쉽게 바꿔야 함 조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것 같은 모듈화, 재현성, 확 장성 확보! 코드 추가가 매우 간편
  • 20. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다). 코드는 빨리 만들어서 (거의) 한 번만 쓴다. 언제 어떤 데이터가 추가될 지 모른다. 그렇다고 재사용이 아예 없는 것도 아니다. 코드 추가/수정이 매우 간편 흐름도 슉슉 쉽게 바꿔야 함 조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것 같은 모듈화, 재현성, 확 장성 확보! 코드 추가가 매우 간편 프레임워크가 유연하고 성숙해야 함
  • 21. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다). 코드는 빨리 만들어서 (거의) 한 번만 쓴다. 언제 어떤 데이터가 추가될 지 모른다. 그렇다고 재사용이 아예 없는 것도 아니다. 코드 추가/수정이 매우 간편 흐름도 슉슉 쉽게 바꿔야 함 조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것 같은 모듈화, 재현성, 확 장성 확보! 코드 추가가 매우 간편 프레임워크가 유연하고 성숙해야 함 데이터가 작지는 않다.
  • 22. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다). 코드는 빨리 만들어서 (거의) 한 번만 쓴다. 언제 어떤 데이터가 추가될 지 모른다. 그렇다고 재사용이 아예 없는 것도 아니다. 코드 추가/수정이 매우 간편 흐름도 슉슉 쉽게 바꿔야 함 조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것 같은 모듈화, 재현성, 확 장성 확보! 코드 추가가 매우 간편 프레임워크가 유연하고 성숙해야 함 데이터가 작지는 않다. 적당히 빨라야 함
  • 31.
  • 33. make가 좋은 것 - 아주 간결한 문법
  • 34. make가 좋은 것 - 아주 간결한 문법 - 가볍다
  • 35. make가 좋은 것 - 아주 간결한 문법 - 가볍다 - 파일 기반 의존성
  • 36. make가 좋은 것 - 아주 간결한 문법 - 가볍다 - 파일 기반 의존성 - “규칙”
  • 37. make가 좋은 것 - 아주 간결한 문법 - 가볍다 - 파일 기반 의존성 - “규칙” - 병렬화
  • 38. make가 좋은 것 - 아주 간결한 문법 - 가볍다 - 파일 기반 의존성 - “규칙” - 병렬화 make가 안 좋은 것
  • 39. make가 좋은 것 - 아주 간결한 문법 - 가볍다 - 파일 기반 의존성 - “규칙” - 병렬화 make가 안 좋은 것 - 이상하고 못생긴 문법
  • 40. make가 좋은 것 - 아주 간결한 문법 - 가볍다 - 파일 기반 의존성 - “규칙” - 병렬화 make가 안 좋은 것 - 이상하고 못생긴 문법 - 스크립팅이 매우 제한적임
  • 41. make가 좋은 것 - 아주 간결한 문법 - 가볍다 - 파일 기반 의존성 - “규칙” - 병렬화 make가 안 좋은 것 - 이상하고 못생긴 문법 - 스크립팅이 매우 제한적임 - 파일이름에 와일드카드 및 패턴 못 씀
  • 42. make가 좋은 것 - 아주 간결한 문법 - 가볍다 - 파일 기반 의존성 - “규칙” - 병렬화 make가 안 좋은 것 - 이상하고 못생긴 문법 - 스크립팅이 매우 제한적임 - 파일이름에 와일드카드 및 패턴 못 씀 - 부족한 병렬화, 클러스터 지원
  • 43. make가 좋은 것 - 아주 간결한 문법 - 가볍다 - 파일 기반 의존성 - “규칙” - 병렬화 make가 안 좋은 것 - 이상하고 못생긴 문법 - 스크립팅이 매우 제한적임 - 파일이름에 와일드카드 및 패턴 못 씀 - 부족한 병렬화, 클러스터 지원 - 현대과학의 혜택을 받지 못함
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 56. make와 마찬가지로 - 의존성이 없는 작업은 병렬로 실행됨
  • 57. make와 마찬가지로 - 의존성이 없는 작업은 병렬로 실행됨 - 이미 있는 새 파일은 무시하고 지나감
  • 58. make와 마찬가지로 - 의존성이 없는 작업은 병렬로 실행됨 - 이미 있는 새 파일은 무시하고 지나감 # 예비 실행 $ snakemake -n
  • 59. make와 마찬가지로 - 의존성이 없는 작업은 병렬로 실행됨 - 이미 있는 새 파일은 무시하고 지나감 # 예비 실행 $ snakemake -n # 최대 8코어까지 사용해서 병렬로 돌림 $ snakemake --cores 8
  • 60. make와 마찬가지로 - 의존성이 없는 작업은 병렬로 실행됨 - 이미 있는 새 파일은 무시하고 지나감 # 예비 실행 $ snakemake -n # 최대 8코어까지 사용해서 병렬로 돌림 $ snakemake --cores 8 # 클러스터에서 최대 20개 작업까지 큐에 넣고 돌림 $ snakemake --jobs 20 --cluster “qsub -pe threaded {threads}”
  • 61. make와 마찬가지로 - 의존성이 없는 작업은 병렬로 실행됨 - 이미 있는 새 파일은 무시하고 지나감 # 예비 실행 $ snakemake -n # 최대 8코어까지 사용해서 병렬로 돌림 $ snakemake --cores 8 # 클러스터에서 최대 20개 작업까지 큐에 넣고 돌림 $ snakemake --jobs 20 --cluster “qsub -pe threaded {threads}” # DRMAA를 지원하는 클러스터에 넣고 돌림 $ snakemake --jobs 20 --drmaa
  • 62. File-driven programming? “보일러판이 필요 없는” 프로그램 내장형 병렬화 이벤트 루프
  • 63. snakemake GUI resource quota task priority code/data versions audit trailconfigurations HTML reporting R embedding benchmarking modularization version tracking
  • 65. d1 d2 area population density lat lon 경기도 가평군 843.04 5854069.43917251850446 37.8315403 127.5098827 서울특별시 강남구 39.5 569499 14417.696202531646 37.5172363 127.0473248 서울특별시 강동구 24.6 489655 19904.674796747968 37.5301251 127.123762 강원도 강릉시 1040.07 219067 210.62716932514158 37.751853 128.8760574 서울특별시 강북구 23.6 343912 14572.542372881355 37.6396099 127.0256575 부산광역시 강서구 179.05 63753356.06255235967603 35.2122157 128.9805666 서울특별시 강서구 41.4 579196 13990.241545893721 37.5509786 126.8495382 전라남도 강진군 495.98 4142883.5275615952256 34.6420774 126.767261 인천광역시 강화군 411.267597164.38959143968873 37.7467263 126.4878731 탭으로 구분된 텍스트 (tsv) C행정구역별(읍면동),행정구역별(읍면동),C연령별,연령별,시점,인구(내국인),남자,여자,성비 '00,전국,'000,합계,2010,47990761,23840896,24149865,98.7 '00,전국,'005,0~4세,2010,2219084,1142220,1076864,106.1 '00,전국,'005001, 0세,2010,437452,225242,212210,106.1 '00,전국,'005002, 1세,2010,426807,219728,207079,106.1 '00,전국,'005003, 2세,2010,456798,234291,222507,105.3 '00,전국,'005004, 3세,2010,467426,240482,226944,106.0 '00,전국,'005005, 4세,2010,430601,222477,208124,106.9 '00,전국,'010,5~9세,2010,2394663,1243294,1151369,108.0 '00,전국,'010001, 5세,2010,423102,218356,204746,106.6 쉼표로 구분된 텍스트 (csv)
  • 66. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다). 코드는 빨리 만들어서 (거의) 한 번만 쓴다. 언제 어떤 데이터가 추가될 지 모른다. 그렇다고 재사용이 아예 없는 것도 아니다. 코드 추가/수정이 매우 간편 흐름도 슉슉 쉽게 바꿔야 함 조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것 같은 모듈화, 재현성, 확 장성 확보! 코드 추가가 매우 간편 프레임워크가 유연하고 성숙해야 함 데이터가 작지는 않다. 적당히 빨라야 함
  • 67. hyeshik@adenine /g/h/h/o/t/h/sequences> ls -al *.txt.gz -rw-r--r-- 1 hyeshik 251455559343 Sep 16 2014 ts00.txt.gz -rw-r--r-- 1 hyeshik 243815859961 Sep 16 2014 ts01.txt.gz -rw-r--r-- 1 hyeshik 333505252185 Sep 16 2014 ts02.txt.gz -rw-r--r-- 1 hyeshik 251077215174 Sep 16 2014 ts03.txt.gz -rw-r--r-- 1 hyeshik 344801600522 Sep 16 2014 ts04.txt.gz -rw-r--r-- 1 hyeshik 263449133340 Sep 16 2014 ts05.txt.gz
  • 68. hyeshik@adenine /g/h/h/o/t/h/sequences> ls -al *.txt.gz -rw-r--r-- 1 hyeshik 251455559343 Sep 16 2014 ts00.txt.gz -rw-r--r-- 1 hyeshik 243815859961 Sep 16 2014 ts01.txt.gz -rw-r--r-- 1 hyeshik 333505252185 Sep 16 2014 ts02.txt.gz -rw-r--r-- 1 hyeshik 251077215174 Sep 16 2014 ts03.txt.gz -rw-r--r-- 1 hyeshik 344801600522 Sep 16 2014 ts04.txt.gz -rw-r--r-- 1 hyeshik 263449133340 Sep 16 2014 ts05.txt.gz 큰 텍스트 파일들을 “엄청 쉽게” 병렬처리 하려면?
  • 69. hyeshik@adenine /g/h/h/o/t/h/sequences> ls -al *.txt.gz -rw-r--r-- 1 hyeshik 251455559343 Sep 16 2014 ts00.txt.gz -rw-r--r-- 1 hyeshik 243815859961 Sep 16 2014 ts01.txt.gz -rw-r--r-- 1 hyeshik 333505252185 Sep 16 2014 ts02.txt.gz -rw-r--r-- 1 hyeshik 251077215174 Sep 16 2014 ts03.txt.gz -rw-r--r-- 1 hyeshik 344801600522 Sep 16 2014 ts04.txt.gz -rw-r--r-- 1 hyeshik 263449133340 Sep 16 2014 ts05.txt.gz 큰 텍스트 파일들을 “엄청 쉽게” 병렬처리 하려면?“엄청 쉽게”
  • 70. 큰 텍스트 파일들을 “엄청 쉽게” 병렬처리 하려면?“엄청 쉽게”
  • 71. 큰 텍스트 파일들을 “엄청 쉽게” 병렬처리 하려면?“엄청 쉽게” 압축을 안 한다.
  • 72. 큰 텍스트 파일들을 “엄청 쉽게” 병렬처리 하려면?“엄청 쉽게” 압축을 안 한다. 파일을 쪼갠다.
  • 73. 큰 텍스트 파일들을 “엄청 쉽게” 병렬처리 하려면?“엄청 쉽게” 압축을 안 한다. 파일을 쪼갠다. tabix를 쓴다.
  • 75. gzip 압축 파일 gz block 1 gz block 2 gz block 3 gz block 4 gz block 5 gz block 6 gz block 7 gz block 8 gz block 9 gz block 10 bgzf
  • 76. gzip 압축 파일 gz block 1 gz block 2 gz block 3 gz block 4 gz block 5 gz block 6 gz block 7 gz block 8 gz block 9 gz block 10 bgzf 100% 하위호환
  • 78. # 인덱스를 만든다. $ tabix -0 -s1 -b2 ts02.txt.gz tabix 쓰기
  • 79. # 인덱스를 만든다. $ tabix -0 -s1 -b2 ts02.txt.gz # 염색체 목록을 본다. (염색체=레벨1 인덱스) $ tabix ——list-chroms ts02.txt.gz tabix 쓰기
  • 80. # 인덱스를 만든다. $ tabix -0 -s1 -b2 ts02.txt.gz # 염색체 목록을 본다. (염색체=레벨1 인덱스) $ tabix ——list-chroms ts02.txt.gz # 염색체 1101 데이터 전체를 출력한다. $ tabix ts02.txt.gz 1101 tabix 쓰기
  • 81. # 인덱스를 만든다. $ tabix -0 -s1 -b2 ts02.txt.gz # 염색체 목록을 본다. (염색체=레벨1 인덱스) $ tabix ——list-chroms ts02.txt.gz # 염색체 1101 데이터 전체를 출력한다. $ tabix ts02.txt.gz 1101 # 염색체 1101의 10000부터 10100 자리까지 출력한다. $ tabix ts02.txt.gz 1101:10000-10100 tabix 쓰기
  • 83. tabix 한계점 초기 인덱싱은 병렬화되지 않는다.
  • 84. tabix 한계점 반드시 2레벨 인덱스로 정렬돼 있어야 한다. 초기 인덱싱은 병렬화되지 않는다.
  • 85. tabix 한계점 반드시 2레벨 인덱스로 정렬돼 있어야 한다. 레벨 1 인덱스는 범위지정이 안 된다. 초기 인덱싱은 병렬화되지 않는다.
  • 87. Exploratory Data Analysis 탐색적 데이터 분석 “재미있는 것”을 찾아야 한다 (= 앞으로 뭘 할지 모른다). 코드는 빨리 만들어서 (거의) 한 번만 쓴다. 언제 어떤 데이터가 추가될 지 모른다. 그렇다고 재사용이 아예 없는 것도 아니다. 코드 추가/수정이 매우 간편 흐름도 슉슉 쉽게 바꿔야 함 조금씩 조금씩 실행할 수 있어야 함 무엇이든 할 수 있을 것 같은 모듈화, 재현성, 확 장성 확보! 코드 추가가 매우 간편 프레임워크가 유연하고 성숙해야 함 데이터가 작지는 않다. 적당히 빨라야 함
  • 88. Dynamic programming Monte Carlo simulation Permutation tests 배경 이미지 위치: http://i.imgur.com/pSyG4xJ.jpg
  • 89. def water(seq1, seq2): m, n = len(seq1), len(seq2) # length of two sequences # Generate DP table and traceback path pointer matrix score = zeros((m+1, n+1)) # the DP table pointer = zeros((m+1, n+1)) # to store the traceback path max_score = 0 # initial maximum score in DP table # Calculate DP table and mark pointers for i in range(1, m + 1): for j in range(1, n + 1): score_diagonal = score[i-1][j-1] + match_score(seq1[i-1], seq2[j-1]) score_up = score[i][j-1] + gap_penalty score_left = score[i-1][j] + gap_penalty score[i][j] = max(0,score_left, score_up, score_diagonal) if score[i][j] == 0: pointer[i][j] = 0 # 0 means end of the path if score[i][j] == score_left: pointer[i][j] = 1 # 1 means trace up if score[i][j] == score_up: pointer[i][j] = 2 # 2 means trace left if score[i][j] == score_diagonal: pointer[i][j] = 3 # 3 means trace diagonal if score[i][j] >= max_score: max_i = i max_j = j max_score = score[i][j]; https://github.com/alevchuk/pairwise-alignment-in-python
  • 90.
  • 91. _ _ _ _(_)_ | A fresh approach to technical computing (_) | (_) (_) | Documentation: http://docs.julialang.org _ _ _| |_ __ _ | Type "help()" for help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 0.3.11 (2015-07-27 06:18 UTC) _/ |__'_|_|_|__'_| | |__/ | x86_64-linux-gnu julia> f(x, y) = x * y f (generic function with 1 method) julia> code_native(f, (Float64, Float64)) .text Filename: none Source line: 1 push RBP mov RBP, RSP Source line: 1 vmulsd XMM0, XMM0, XMM1 pop RBP ret
  • 93. C Java Python R Julia 배우기 쉬운가? X X O O O 유지보수와 재활용이 쉬운 코드를 만 들기 좋은가? X △ O △ O 잘 짜면 빠르게 도는가? O O X X O 행렬, 벡터 연산이 쉬운가? X X O △ O 매우 큰 프로그램을 만들기 편한가? △ O O X △
  • 94. # precell precell(::Void) = PreCell([][:,:], 0, 0) function precell(el::AbstractString) if contains(el, "n") a = map(split(el, "n")) do x width = strwidth(x) string(x, repeat(" ", width-length(x))) end[:, :] m,n = size(a) PreCell(a, maximum(map(length, a)), m) else width = strwidth(el) PreCell([string(el, repeat(" ", width-length(el)))][:,:], width, 1) end end part of Millboard.jl by wookay
  • 98. 요약 • Jupyter notebook 쓰면 똑똑해집니다.
  • 99. 요약 • Jupyter notebook 쓰면 똑똑해집니다. • Snakemake 쓰면 수명이 늘어납니다.
  • 100. 요약 • Jupyter notebook 쓰면 똑똑해집니다. • Snakemake 쓰면 수명이 늘어납니다. • 큰 텍스트 파일을 나눠서 처리하려면 tabix!
  • 101. 요약 • Jupyter notebook 쓰면 똑똑해집니다. • Snakemake 쓰면 수명이 늘어납니다. • 큰 텍스트 파일을 나눠서 처리하려면 tabix! • 속도가 필요할 땐 파이썬과 줄리아를 같이 쓰세요!
  • 102. Acknowledgements Johannes Köster Dana-Farber Cancer Institute Heng Li Broad Institute Bezanson, Karpinski, Shah, and Edelman MIT 노우경 줄리아 한국 사용자 그룹
  • 103. 탐색적으로 큰 데이터 분석하기 장혜식 기초과학연구원 RNA연구단 배경 이미지 위치: http://4.bp.blogspot.com/-bB4jFkQ_jBk/T70ipuyFn6I/AAAAAAAAAOE/cnbxI03ve0Y/s1600/ snake_pile_2crop+by+Tracy+Langkilde.jpg