세상을 바꾸는 r과 미친 영향 - kossa.krkossa.kr/materials/ksh/5. 세상을 바꾸는...
TRANSCRIPT
R이란?
• 통계 계산과 그래픽을 위한 소프트웨어 환경
• 오픈 소스
• 데이터 프로그래밍 언어
• 1990년 중반, 뉴질랜드 오클랜드 대학의 통계학과 교수인 Robert Gentleman, Ross Ihaka가 기존의 S 언어로 모방하여, 학생들이 쉽게 사용할 수 있는 통계 플랫폼으로 개발
• 1997 GNU 라이센스
R에 대한 현재의 평가
• http://blog.revolutionanalytics.com/2014/04/seven-quick-facts-about-r.html
R을 시작하는 방법
1. 가볍게 시작하되, 실제 예를 가지고 시작한다.
– 내장 문서인 Introduction to R 정도를 읽고, 언어의 기본 체계를 잡는다.
– R의 객체와 함수의 특성에 집중한다.
2. 자주, 가급적 매일 사용한다.
– R도 언어이다. 매일 자주 사용하려는 노력이 필요하다.
3. 지속적으로 자신을 성장시킨다.
– R의 방식으로 생각할 수 있도록 노력한다.
R은 어렵다?
• 생각보다 어렵지 않다.
• 의도적으로 “머리”와 “손”을 풀고 시작할 필요가 있다.
– 머리: R과 같은 방식으로 사고하려고 노력할 것
– 손: 열심히 타이핑할 것
– 모든 것을 클릭하여 얻겠다는 습관을 버릴 것
두려움이 용기로 바뀐다면 천배, 만배의 더 큰 힘이 될 것이다
Desirable Difficulties를 즐길 필요가 있다.
한꺼번에 얻으려 덤비지 말것
• Clear > Clever
– “이렇게 간단하게 할 수 있어요.” 보다 “이렇게 하면 분명하게 처리할 수 있어요.” 라는 말이 더 중요.
– 애자일(agile) 정신이 필요
– 점진적으로 실력을 쌓아갈 필요가 있다.
R의 설치
• CRAN에서 R을 설치
• RStudio: R과 관련된 작업을 편하게 할 수 있다.
R 프로그래밍: 대화형
• 대화형 모드(interactive mode)
– 분석가가 데이터를 가지고 컴퓨터에 명령을 하나씩 입력해 가면서 분석하는 방법
– R은 이런 대화형 환경에 최적화되어 있음
• 스크립트 모드로 넘어갈 때 이런 부분들이 인지적 장애가 되기도 함
> height <- c(160, 167, 170, 180, 189, 170, 166, 159) > mean(height) [1] 170.125 > sd(height) [1] 10.04899
R 프로그래밍: 스크립트 모드
#!/usr/local/bin/R height <- c(160, 167, 170, 180, 189, 170, 166, 159) mean(height) sd(height)
파일명: myScript.R
• 실행하는 방법
– R 콘솔에서: > source(“myScript.R”)
– 커맨드라인에서
• $ Rscript myScript.R
• $ R CMD BATCH mySrcipt.R
• $./myScript.R (파일의 모드를 바꾸고 나서)
언어로서의 R의 특징
• R은 단순한 통계 패키지가 아니고, 데이터 분석에 특화된 데이터 프로그래밍 언어이다.
• 컴파일을 할 필요가 없는 스크립트 언어이다.
• R은 조상인 Lisp(Scheme) 언어의 영향을 받은 함수형 프로그래밍 언어와 객체 지향형 언어의 특징을 동시에 가지고 있다.
• 베이스(base)는 작지만, 수많은 패키지를 사용하여 기능을 확장시켜 사용한다.
– CRAN, Bioconductor과 같은 공식 사이트 + GitHub 비공식 사이트
R 언어 체계
• R에 있는 모든 것은 객체이며, R에서 발생하는 모든 일은 함수의 호출로 일어난다.
– John M. Chambers( the S language creator) • 다음 사이트가 많은 도움이 된다.
Hadley Wickham
어려운(?) R 코드
> head(mtcars)
> mtcars[ , “mpg”]
> mtcars[mtcars$mpg > 20, ]
> summary(mtcars)
> sapply(mtcars, mean)
> tapply(mtcars$mpg, mtcars$cyl, mean)
> results <- lm(mpg ~ wt, data=mtcars)
> plot(mtcars$wt, mtcars$mpg)
R 연산의 특징
• 벡터 계산
– 기본은 요소 대 요소, 모자라면 재활용한다.
• 서브셋팅
• 데이터 프레임 —> 리스트
• 함수형 프로그래밍
– R에서는 함수가 1급 객체로 할당 가능, 인자로 사용 가능, 다른 함수의 값으로 반환되는 등, 일반 객체가 가지는 모든 특징을 가진다.
매일 R 사용하기
• 마치 오피스를 쓰듯이 R을 사용한다.
– 책 번역/저술 작업 ReproducileResearch
재현가능연구법
• Reproducible Research
• 기존의 복사하기/붙히기 패러다임에서 탈피
바이오에 사용되는 R
• 이미 많은 패키지들이 개발, 공유
Tippmann, S. (2015). Programming
Tools: Adventures With R. Nature,
517(7534), 109–110.
http://doi.org/10.1038/517109a
국가 바이오 미래전략(2015. 3)
회사의 핵심 역량
• 전공을 막론하고 R을 배워서 핵심 역량으로 가지고 간다.
오픈소스 R과 함께한 시간들 “그때 누군가 내게 그런 말을 해주었다면”
R에 입문한 계기
• 2009년 어느날, 통계 분석을 위한 오픈 소스 툴이 없을까? – 사업 계획 또는 사업 보고서 작성하기 위해서
– 당시는 책도 별로 없어서 CRAN에 올려져 있는 매뉴얼을 무작정 읽었다.
R 매뉴얼로 LaTeX의 세계로
• 아름다운 문서를 만들고 싶었다.
• 쉽지 않았지만, Markup의 개념을 배우다.
• Sweave
컴퓨터를 다르게 보게 된 계기
• 니콜라스 카, 마샬 맥루언
– 컴퓨터는 인류가 만든 도구 가운데 우리의 사고에 가장 큰 영향을 줄 수 있다.
– 내가 컴퓨터에 대해서 알고 있는 것이 무엇인가?
컴퓨터 사용
• 컴퓨터
– 윈도우즈 환경에서 오피스, 한글, IE
– 기타 보조 소프트웨어
• 중국 제품 없이 살아보기 —> 이들 없이 살아보기로 결심
– 컴퓨터도 맥으로 구매하고, 의도적으로 사용하지 않으려고 노력 —> Libre Office 등 많은 오픈소스들이 있음을 알게 됨
진지하게 컴퓨터를 공부하기 시작
• 이전까지는 R을 단순한 통계 패키지로 생각
• R을 프로그래밍 언어로 접근하기 시작
– R 커뮤니티에서 Web의 중요성이 강조되고 관련 패키지들이 개발
• Web?
– 반성의 계기가 된 동영상: 매일 쓰는 인터넷을 한번도 들여다 볼 생각을 해 보지 못했다.
• https://youtu.be/MEhLgaM-uHg
Web의 기본을 배우다.
• HTML, CSS, JavaScript
– R의 grid 패키지의 저자인 오클랜드 대학의 Paul Murrell의 오픈 북으로 시작하여 여러 책을 통해서 공부 • LaTeX을 통해서 배운 마크업의 개념과 전체 문서를 만드
는 방법이 거의 유사
• JavaScript 언어와 R 언어는 비슷한 측면이 많다. 둘 다 Lisp(Scheme)의 영향을 받음
맥 컴퓨터
• 일반 GUI만 사용했더라면 몰랐을 것인데,
– R, LaTeX, Web과 관련된 도구들을 사용하기 위해서는 Terminal을 피해갈 수 없었다.
– 처음 당황스럽고, 어색했다. Mac OS X 운영체계에 대한 공부는 Unix라는 체계와 닿아 있었고, Unix의 놀라운 기능들을 경험하면서 컴퓨터라는 것을 다시 생각하는 계기가 되었다.
• Mac OS X: Steve Jobs의 NeXT사의 기술을 바탕으로 개발되었다니…
• 그간 원도우즈의 세계에 갇혀 있었다!
• Mac OS X의 경험과 지식은 Linux 시스템으로 확장
병원과 Web: 극단의 세계
생산성을 제고할 수 있는 방법은?
한계비용이 높은 산업과 낮은 산업
병원장: 2011~2014
기회가 될 때마다 코딩을 강조
• 병원의 거의 모든 사람들은 움직이지 않을 뿐 더러, 관심도 보이지 않았다.
– 그저, 원장의 돌출 발언이라고 생각했던 것 같다.
– 책이 출판되었을 때도 일부 직원들만 “눈치”로 구매해 주었다. 거의 대부분의 책은 책장에 깨끗하게 보존되어 있었다.
• 어떻게 했었어야 일이 되었을지 항상 생각한다. 사람을 움직이게 하는 인문학적 접근이 부족했었다.
• 실망과 안타까움은 나의 마음이지만, 병원은 새로운 비전의 한 부분을 잡아채지 못한 것이 아닌가…
당위를 강요해서 사람들의 행동이 바뀌지 않는다. 인문학의 힘을 빌려야…
• 영혼을 붙들고 가는 삶
• 스티브 잡스의 “The Lost Interview”에 밝힌 코딩에 대한 생각
http://arstechnica.com/apple/2012/07/steve-jobs-on-programming-craftsmanship-software-and-the-web/
내가 R과 코딩을 공부한 방법
1. 쓰면서, 암기한다. 2. 컴퓨터에 직접 입력해 본다.
R as a Second Language
코딩이 준 선물 1
• 문제 해결형 사고 방식, 여러 식견
• 저술과 번역의 기회: 지금도 번역과 저술고 한 권씩 계약하여 작업
• 이런 강의 기회
코딩이 준 선물 2
• 현재에 대한 이해
Digital Pathology
코딩이 준 선물 3
병원을 떠날 수 있는 용기, 새로운 병원을 만들 수 있는 능력
01
02
03
1, 2차 의료 중심 뿔뿌리 중소 병의원 진료지원
시스템
오픈소스, 연결
연결을 통합 협업
환자, 병의원 무료
의료 정보 보안 회사
환자 및 의료정보 보안
04
05
06
에코 시스템 의료장비, 제약회사, 의료장비 회사등
진료 2선 참여자를 통한 수익 창출
병의원을 지원하는 병원 영 상 , 각 종 검 사 , 유 전 자
분석을 통한 맞춤 의료지원
데이터 회사 데이터를 통한 가치 창출
딥 러 닝 을 활 용 한 임 상
의사결정 시스템
시클리드 쿼터백 프로젝트
Abion, GenCurix, GenoBio, Xcell Therapeutics, DeepBio
감사합니다.