세상을 바꾸는 r과 미친 영향 - kossa.krkossa.kr/materials/ksh/5. 세상을 바꾸는...

34
세상을 바꾸는 오픈소소 R과 코딩이 나의 삶과 생각에 미친 영향 고석범 ㈜지노바이오 [email protected]

Upload: others

Post on 02-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

세상을 바꾸는 오픈소소 R과 코딩이 나의 삶과 생각에 미친 영향

고석범

㈜지노바이오 [email protected]

Page 2: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

R이란?

• 통계 계산과 그래픽을 위한 소프트웨어 환경

• 오픈 소스

• 데이터 프로그래밍 언어

• 1990년 중반, 뉴질랜드 오클랜드 대학의 통계학과 교수인 Robert Gentleman, Ross Ihaka가 기존의 S 언어로 모방하여, 학생들이 쉽게 사용할 수 있는 통계 플랫폼으로 개발

• 1997 GNU 라이센스

Page 4: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

R을 시작하는 방법

1. 가볍게 시작하되, 실제 예를 가지고 시작한다.

– 내장 문서인 Introduction to R 정도를 읽고, 언어의 기본 체계를 잡는다.

– R의 객체와 함수의 특성에 집중한다.

2. 자주, 가급적 매일 사용한다.

– R도 언어이다. 매일 자주 사용하려는 노력이 필요하다.

3. 지속적으로 자신을 성장시킨다.

– R의 방식으로 생각할 수 있도록 노력한다.

Page 5: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

R은 어렵다?

• 생각보다 어렵지 않다.

• 의도적으로 “머리”와 “손”을 풀고 시작할 필요가 있다.

– 머리: R과 같은 방식으로 사고하려고 노력할 것

– 손: 열심히 타이핑할 것

– 모든 것을 클릭하여 얻겠다는 습관을 버릴 것

두려움이 용기로 바뀐다면 천배, 만배의 더 큰 힘이 될 것이다

Desirable Difficulties를 즐길 필요가 있다.

Page 6: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

한꺼번에 얻으려 덤비지 말것

• Clear > Clever

– “이렇게 간단하게 할 수 있어요.” 보다 “이렇게 하면 분명하게 처리할 수 있어요.” 라는 말이 더 중요.

– 애자일(agile) 정신이 필요

– 점진적으로 실력을 쌓아갈 필요가 있다.

Page 7: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

R의 설치

• CRAN에서 R을 설치

• RStudio: R과 관련된 작업을 편하게 할 수 있다.

Page 8: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 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

Page 9: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

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 (파일의 모드를 바꾸고 나서)

Page 10: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

언어로서의 R의 특징

• R은 단순한 통계 패키지가 아니고, 데이터 분석에 특화된 데이터 프로그래밍 언어이다.

• 컴파일을 할 필요가 없는 스크립트 언어이다.

• R은 조상인 Lisp(Scheme) 언어의 영향을 받은 함수형 프로그래밍 언어와 객체 지향형 언어의 특징을 동시에 가지고 있다.

• 베이스(base)는 작지만, 수많은 패키지를 사용하여 기능을 확장시켜 사용한다.

– CRAN, Bioconductor과 같은 공식 사이트 + GitHub 비공식 사이트

Page 11: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

R 언어 체계

• R에 있는 모든 것은 객체이며, R에서 발생하는 모든 일은 함수의 호출로 일어난다.

– John M. Chambers( the S language creator) • 다음 사이트가 많은 도움이 된다.

Hadley Wickham

Page 12: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

어려운(?) 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)

Page 13: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

R 연산의 특징

• 벡터 계산

– 기본은 요소 대 요소, 모자라면 재활용한다.

• 서브셋팅

• 데이터 프레임 —> 리스트

• 함수형 프로그래밍

– R에서는 함수가 1급 객체로 할당 가능, 인자로 사용 가능, 다른 함수의 값으로 반환되는 등, 일반 객체가 가지는 모든 특징을 가진다.

Page 14: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

매일 R 사용하기

• 마치 오피스를 쓰듯이 R을 사용한다.

– 책 번역/저술 작업 ReproducileResearch

Page 15: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

재현가능연구법

• Reproducible Research

• 기존의 복사하기/붙히기 패러다임에서 탈피

Page 16: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

바이오에 사용되는 R

• 이미 많은 패키지들이 개발, 공유

Tippmann, S. (2015). Programming

Tools: Adventures With R. Nature,

517(7534), 109–110.

http://doi.org/10.1038/517109a

Page 17: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

국가 바이오 미래전략(2015. 3)

Page 18: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

회사의 핵심 역량

• 전공을 막론하고 R을 배워서 핵심 역량으로 가지고 간다.

Page 19: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

오픈소스 R과 함께한 시간들 “그때 누군가 내게 그런 말을 해주었다면”

Page 20: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

R에 입문한 계기

• 2009년 어느날, 통계 분석을 위한 오픈 소스 툴이 없을까? – 사업 계획 또는 사업 보고서 작성하기 위해서

– 당시는 책도 별로 없어서 CRAN에 올려져 있는 매뉴얼을 무작정 읽었다.

Page 21: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

R 매뉴얼로 LaTeX의 세계로

• 아름다운 문서를 만들고 싶었다.

• 쉽지 않았지만, Markup의 개념을 배우다.

• Sweave

Page 22: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

컴퓨터를 다르게 보게 된 계기

• 니콜라스 카, 마샬 맥루언

– 컴퓨터는 인류가 만든 도구 가운데 우리의 사고에 가장 큰 영향을 줄 수 있다.

– 내가 컴퓨터에 대해서 알고 있는 것이 무엇인가?

Page 23: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

컴퓨터 사용

• 컴퓨터

– 윈도우즈 환경에서 오피스, 한글, IE

– 기타 보조 소프트웨어

• 중국 제품 없이 살아보기 —> 이들 없이 살아보기로 결심

– 컴퓨터도 맥으로 구매하고, 의도적으로 사용하지 않으려고 노력 —> Libre Office 등 많은 오픈소스들이 있음을 알게 됨

Page 24: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

진지하게 컴퓨터를 공부하기 시작

• 이전까지는 R을 단순한 통계 패키지로 생각

• R을 프로그래밍 언어로 접근하기 시작

– R 커뮤니티에서 Web의 중요성이 강조되고 관련 패키지들이 개발

• Web?

– 반성의 계기가 된 동영상: 매일 쓰는 인터넷을 한번도 들여다 볼 생각을 해 보지 못했다.

• https://youtu.be/MEhLgaM-uHg

Page 25: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

Web의 기본을 배우다.

• HTML, CSS, JavaScript

– R의 grid 패키지의 저자인 오클랜드 대학의 Paul Murrell의 오픈 북으로 시작하여 여러 책을 통해서 공부 • LaTeX을 통해서 배운 마크업의 개념과 전체 문서를 만드

는 방법이 거의 유사

• JavaScript 언어와 R 언어는 비슷한 측면이 많다. 둘 다 Lisp(Scheme)의 영향을 받음

Page 26: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

맥 컴퓨터

• 일반 GUI만 사용했더라면 몰랐을 것인데,

– R, LaTeX, Web과 관련된 도구들을 사용하기 위해서는 Terminal을 피해갈 수 없었다.

– 처음 당황스럽고, 어색했다. Mac OS X 운영체계에 대한 공부는 Unix라는 체계와 닿아 있었고, Unix의 놀라운 기능들을 경험하면서 컴퓨터라는 것을 다시 생각하는 계기가 되었다.

• Mac OS X: Steve Jobs의 NeXT사의 기술을 바탕으로 개발되었다니…

• 그간 원도우즈의 세계에 갇혀 있었다!

• Mac OS X의 경험과 지식은 Linux 시스템으로 확장

Page 27: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

병원과 Web: 극단의 세계

생산성을 제고할 수 있는 방법은?

한계비용이 높은 산업과 낮은 산업

병원장: 2011~2014

Page 28: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

기회가 될 때마다 코딩을 강조

• 병원의 거의 모든 사람들은 움직이지 않을 뿐 더러, 관심도 보이지 않았다.

– 그저, 원장의 돌출 발언이라고 생각했던 것 같다.

– 책이 출판되었을 때도 일부 직원들만 “눈치”로 구매해 주었다. 거의 대부분의 책은 책장에 깨끗하게 보존되어 있었다.

• 어떻게 했었어야 일이 되었을지 항상 생각한다. 사람을 움직이게 하는 인문학적 접근이 부족했었다.

• 실망과 안타까움은 나의 마음이지만, 병원은 새로운 비전의 한 부분을 잡아채지 못한 것이 아닌가…

Page 29: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

당위를 강요해서 사람들의 행동이 바뀌지 않는다. 인문학의 힘을 빌려야…

• 영혼을 붙들고 가는 삶

• 스티브 잡스의 “The Lost Interview”에 밝힌 코딩에 대한 생각

http://arstechnica.com/apple/2012/07/steve-jobs-on-programming-craftsmanship-software-and-the-web/

Page 30: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

내가 R과 코딩을 공부한 방법

1. 쓰면서, 암기한다. 2. 컴퓨터에 직접 입력해 본다.

R as a Second Language

Page 31: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

코딩이 준 선물 1

• 문제 해결형 사고 방식, 여러 식견

• 저술과 번역의 기회: 지금도 번역과 저술고 한 권씩 계약하여 작업

• 이런 강의 기회

Page 32: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

코딩이 준 선물 2

• 현재에 대한 이해

Digital Pathology

Page 33: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

코딩이 준 선물 3

병원을 떠날 수 있는 용기, 새로운 병원을 만들 수 있는 능력

01

02

03

1, 2차 의료 중심 뿔뿌리 중소 병의원 진료지원

시스템

오픈소스, 연결

연결을 통합 협업

환자, 병의원 무료

의료 정보 보안 회사

환자 및 의료정보 보안

04

05

06

에코 시스템 의료장비, 제약회사, 의료장비 회사등

진료 2선 참여자를 통한 수익 창출

병의원을 지원하는 병원 영 상 , 각 종 검 사 , 유 전 자

분석을 통한 맞춤 의료지원

데이터 회사 데이터를 통한 가치 창출

딥 러 닝 을 활 용 한 임 상

의사결정 시스템

시클리드 쿼터백 프로젝트

Abion, GenCurix, GenoBio, Xcell Therapeutics, DeepBio

Page 34: 세상을 바꾸는 R과 미친 영향 - kossa.krkossa.kr/materials/KSH/5. 세상을 바꾸는 오픈소스 r과 코딩이 나의 삶과... · 세상을 바꾸는 오픈소소 R과

감사합니다.