1. 효율적 데이터 과학을 위한
7가지 팁
2017년 10월
권재명 https://dataninja.me/
2. 데이터 분석이 취미이자 직업인 통계학자 출신의
실리콘밸리 데이터 과학자. 1972년에 서울에서
태어났다. 어려서부터 컴퓨터를 좋아해서 전산학을
공부하고자 서울대학교 계산통계학과에 입학했다
(1990년). 하지만 대학 2학년 때 들은 통계수업에
매료되어 통계를 전공하기로 결심하여 서울대 통계학
학사(1994년), 석사(1996년)를 거쳐 버클리대학교
(UC Berkeley)에서 박사(2000년) 학위를 받았다.
졸업 후 같은 대학에서 교통 데이터 분석 연구원으로
활동했고, 이후 이스트베이 캘리포니아주립대학교
(Cal State East Bay)에서 통계학과 조교수를 지냈다.
2009년부터 지금까지 실리콘밸리의 인터넷, 테크
기업에서 데이터 과학자로, 그리고 분석 팀 리더로
활동 중이다. 최근 "따라 하며 배우는 데이터
과학"(2017)를 출간했다.
https://dataninja.me/
6. 최소제곱법 - Carl Friedrich Gauss + (1795)
회귀분석 - Francis Galton + (19세기 후반)
MLE - R.A.피셔 + (20세기 초)
이론은 천천히 변하고, 툴은 빨리 변한다: 확률-통계
7. 랜덤 포레스트 - L. Breiman+ (~2001)
부스팅 - J. Friedman+ (~1999)
라쏘+ - J. Friedman+ (~2008)
이론은 천천히 변하고, 툴은 빨리 변한다: 통계-머신러닝
8. 이론은 천천히 변하고, 툴은 빨리 변한다: 딥러닝
https://beamandrew.github.io/deeplearning/2017/02/23/deep_learning_101_part1.html
9. 이론은 천천히 변하고, 툴은 빨리 변한다: OS, 랭귀지
유닉스 - 1970년대
C - 커니건&리치 (1972)
SQL - (1979)
자바 - James Gosling (1995)
파이썬 - Guido van Rossum (1989)
S - Chambers, Becker, Wilks of Bell Labs (1988)
R - R. Ihaka and R. Gentleman (2000)
10. R스튜디오
파이썬 libraries
● scikit learn (2011)
● tensorflow, keras
R libraries
● tidyverse
● rmarkdown
● htmlwidgets
이론은 천천히 변하고, 툴은 빨리 변한다: 패키지
11. 컴퓨팅 + 데이터
이론은 천천히 변하고, 툴은 빨리 변한다: 딥러닝
https://www.matroid.com/scaledml/2017/jeff.pdf
12. 컴퓨팅 + 데이터
따름정리 1. 데이터 과학
적용 영역의 폭발적 증가
따름정리 2. 데이터 과학자
수요 폭발적 증가
이론은 천천히 변하고, 툴은 빨리 변한다: 딥러닝
https://www.matroid.com/scaledml/2017/jeff.pdf
19. 데이터 취득
데이터 가공
탐색적
데이터 분석
문제 정의
데이터 정의
확증적
데이터 분석
자동화리포트
데이터 과학 프로세스 in R
dplyr*
tidyr*
stringr
readr*
tidyr*
ggplot2*
rmarkdown
flexdashboard
DT
testthat
logging
도커
파이썬
caret
* = tidyverse
20. 데이터 과학자의 스트레스와 야근의 원인?
이상적인 데이터 과학자도 항상 효율적인 것은 아니다
(10초간 생각해보기)
21. 데이터 과학자의 스트레스와 야근의 원인?
이상적인 데이터 과학자도 항상 효율적인 것은 아니다
(10초간 생각해보기)
("이론이 부족하다"는 제외)
22. 1. 박하사탕 증후군 - "나 돌아갈래!"
"(컴퓨터 크래시) 지난 일주일간 작업한 내 코드는? ㅠㅠ"
"분석 코드 필요하다고? 이멜로 보내줄께"
"(분석 안돌아감) 3일전에 이 코드는 어땠더라?"
http://blog.daum.net/ps212d/114
23. 해결책: 깃을 사용한 분석 코드 관리
git init / git clone
git add
git commit
git push / git pull
24. 분석 프로젝트 시작은 항상 git clone 으로
모든 코드/텍스트를 git add
매일 git commit / git push
깃을 사용한 분석 코드 관리 by Default
34. 전문 프로그래머의 하루 일과:
새로운 코드 작성 5%
기존 코드 고치기 25%
기존 코드 이해하기 70%
https://blogs.msdn.microsoft.com/peterhal/2006/01/04/what-do-programmers-really-do-anyway-
aka-part-2-of-the-yardstick-saga/
35. 해결책: 스타일 가이드 by default
"당신이 작성한 코드를 관리할 사람이 당신 집 주소를 아는 정신병자라고
생각하고 코딩하라" - (John Woods, 1991)
R 스타일 가이드 - http://style.tidyverse.org/
파이썬 스타일 가이드 - https://www.python.org/dev/peps/pep-0008/
36. 데이터 과학자의 시급이 컴퓨터의 시급보다 비싸다
일단은 코드를 읽는 이를 위해 최적화
코드 리뷰
기계를 위한 최적화는 나중에
Don't Optimize Until You Have to
기계가 아니라, 읽는 이를 위해 최적화하라
58. 4. 단순반복형 - "과도한 복사-붙여넣기"
https://www.quora.com/What-is-the-importance-of-ctrl-c-
+-ctrl-v-for-programmers
팀/개인 라이브러리를 안만들고 잘라붙이기로 해결한다.
라이브러리를 사용하여 짧게 할 수 있는 일을 길게 한다.
59. A. 라이브러리를 사용한 빠른 프로토타입
B. 반복되는 작업은 라이브러리화
3번 이상 사용되는 코드는 라이브러리/패키지화를 고려해야
실험 인프라에 투자 - 나중에 다양한 실험을 빠르게 할 수 있도록
해결책: 라이브러리화
60. 빠른 프로토타입 - flexdashboard
https://jjallaire.shinyapps.io/shiny-crandash/
(~300줄)
61. 빠른 프로토타입 - leaflet
https://rstudio.github.io/leaflet/choropleths.html
66. 반복되는 작업은 라이브러리화
데이터 취득
데이터 가공
탐색적
데이터 분석
문제 정의
데이터 정의
확증적
데이터 분석
자동화리포트
dplyr*
tidyr*
stringr
readr*
tidyr*
ggplot2*
rmarkdown
flexdashboard
DT
testthat
logging
도커
파이썬
caret
* = tidyverse
67. "How R helps Airbnb make the most of its data"
Community - R 교육
Tooling - 어떻게 하면 팀 라이브러리
개발에 참여하게 할 수 있을까?
https://peerj.com/preprints/3182/
68. 5. 토끼굴형 - "... 이런 설정을 해 보았습니다 ..."
https://www.thirdcoastfestival.org/
explore/feature/rabbit-hole-show
대다수의 시간을 분석의 목적과 무관한 탐색에 사용한다.
지나친 완벽주의
데드라인의 개념이 없다.
분석 기간이 너무 길다.
69. 애자일 방법론 - 2주 스프린트 - (거의) 매일 짧은 싱크업/피드백
Define "Done" (결과물은 리포트인가? 프로토타입인가? 둘 다인가?).
Define "Metrics/KPI" (효과적 지표를 결정하고 계속 측정해야)
투명한 작업진척 공유. 불완전한 결과도 공유 (Expect Errors)
열린 결말을 위한 연구시간은 20% 이하로.
해결책: 진화적 반복 "Iterative" by default
73. 비전문가에게 조리있게 분석결과를 전달하지 못한다.
리포트는 주로 R 코드 출력 결과 복사물과 다듬어지지 않은 파이썬 노트북 등이다.
6. 불통형 - "분석 결과요? 여기 R 출력입니다"
74. 피드백 받기; 지식의 저주 피하기 (Get Feedback)
연습! (Practice, Practice, Practice)
최종 자료는 예쁘게 (Look is Important; Leverage Templates)
가능하면 후원자/소통 전문가를 찾으라. (Find Champion / Advocate)
해결책: 소통 훈련 by Default
80. 7. Open
5. Iterative / Agile
1. Codebase in Git
2. Readability via Style
Guide
3. Reproducibility
4. Efficient Use of
Libraries
좋은 디폴트
6. Communication
C
S
R L I
C
O
81. 여러분의 팀의 현재 점수는?
2 = 항상 하고
있다
1 = 가끔 하고
있다
0 = 못하고 있다 점수
1. 깃 코드관리
2. 가독성
3. 재현 가능성
4. 라이브러리
5. 진화적 반복
6. 소통 훈련
7. 개방성
합계
82. 여러분의 팀의 현재 점수는?
2 = 항상 하고
있다
1 = 가끔 하고
있다
0 = 못하고 있다 점수
1. 깃 코드관리 X 2
2. 가독성 X 2
3. 재현 가능성 X 1
4. 라이브러리 X 0
5. 진화적 반복 X 1
6. 소통 훈련 X 0
7. 개방성 X 1
합계 7
83. 요약
● 데이터 과학의 이론과 툴/코딩
● 데이터 과학자의 스트레스와 야근의 원인 7유형
a. 박하사탕형, 난독증 유발자, 발뺌형, 단순반복형, 토끼굴형, 불통형, 마피아형
● 데이터 과학자의 스트레스와 야근을 줄이는 팁:
a. 박하사탕형 -> 깃 코드관리 Codebase in Git (C)
b. 난독증 유발자 -> 가독성 Readability, Style Guide (S)
c. 발뺌형 -> 재현 가능성 Reproducible (R)
d. 단순반복형 -> 라이브러리 Efficient Use of Libraries (L)
e. 토끼굴형 -> 진화적 반복 Iterative (I)
f. 불통형 -> 소통 훈련 Communication (C)
g. 마피아형 -> 개방성 Open (O)