180702_오전 프로그래밍 기초수업
수업의 목표
• 데이터 익히기 데이터분석 환경 데이터 획득 : 다양한 데이터를 읽어와서 내가 사용할 수 있게 하는 방법 , API , 크롤링
데이터 다루기 (파이썬활용) : tidydata로 다듬기, 정규표현식등으로 표현하기
탐색적 분석 : 데이터 시각화 이론 ( 어떤 데이터를 어떻게 시각화 해야하는가? )
• 프로그래밍 개념 익히기 프로그래밍 기초 : 파이썬 문법
소프트웨어 공학 : 컴퓨터한테 일을 시키는 사람들끼리 어떻게 하면 협업을 잘 할 것인가?
실무에 쓰는 도구들 소개
결국 데이터분석을 통해 하고싶은 것은 의사결정하고, 실행하고, 평가하기 이 전체 과정에서 데이터분석기술과 과정이 필요하다.
데이터 기반 의사 결정 사례들
데이터 -> 의사 결정 -> 실행 -> 평가'의 절차를 거친 사례
존 스노우의 콜레라 지도
https://upload.wikimedia.org/wikipedia/commons/2/27/Snow-cholera-map-1.jpg 상황 : 1854년 런던, 콜레라 창궐(치사율 높음) 다수파의 학설(인체 접촉 감염/공기 중 감염)에는 수인성 감염 논의(오염된 식수관)가 아예 없음
빅토리아 여왕의 주치의였던 John Snow가 런던의 콜레라 사망자 지도를 만들어서 펌프와 사망자의 관계를 분석함.--> 중앙펌프가 범인이다!
하지만...John snow가 데이터에 의한 의사결정한 것 (펌프가 원인이다)이 올바른 결론일까? 우선은 자신의 의견을 비판적으로 바라보는 것이 중요하다.
Q1. 펌프와 멀리 떨어졌는데 사람들이 죽은곳은 왜그럴까?
멀지만, Broad street에서 물을 길러 먹음
일자리가 Broad street에 있어 매일 출퇴근함.
Q2) 펌프만이 요인으로 작용했을까? 올바른 의사결정일까?
사람이 많음> 사망자도 많음
영유아나 노인의 비율
인구 밀집지역
Q3) 맥주 집, work house에서는 왜 사망자가 적게 발생했을까?
work house에서는 물 공급량이 부족해서 외부 식수원을 사용함.
맥주 집에서는 물을 거의 마시지 않음.
- 이 이야기를 통해 배울점은?
동일한 정보라도 어떻게 표현하느냐에 따라 많은 걸 드러내고 감출 수 있다.
사실 이미 역병이 줄어들고 있었음. 여러 그래프로 상반된 표현을 할 수 있음 동일한 정보라도 시각적으로 어떻게 표현하느냐 에 따라서 의미가 왜곡될 수 있음.
만약 컴퓨터를 활용하면? Interaction 을 넣어서 ‘능동적 읽기[active reading]’가 가능해짐 ex)탐색적분석
다양한 기준에 의한 집계/탐색 (위 예시는 voronoi partitioning을 사용)
데이터가 바뀌어도 반복 작업하지 않을 수 있다. (컴퓨터 쓰니까!)
사람이 컴퓨터 앞에 앉아서 뭔가 반복하고 있다는 것은 잘못하고 있는 것이다. 프로그래밍을 짜서 컴퓨터가 반복하게 할 수 있다.
Voronoi diagram: 펌프를 기준으로, 구획에 남는 구간이 하나도 없게, 각 펌프 사이에 등간격으로 구획을 나눔
로즈 다이어그램
http://www.historyofinformation.com/expanded.php?id=3815
백의의 천사 나이팅게일이 고안한 다이어그램이다.
전쟁하는 도중..영국군이 참전했는데 다친 병사들에 대한 처우가 좋지 않다는 사실이 알려지면서 대중들이 들고 일어남.
특징:면적이 사망자의 수.막대그래프를 안 씀.면적을 사용함 (인간은 면적비교를 잘 못함)
blue: 감염에 의한 사망자 / red: 상처에 의한 사망자 / black: 기타
1월, 2월이 사망자가 원래 많음
영역에 데이터를 매핑하는 순간 데이터의 크고 작음이 크게 표시 나지 않을 수 있음.
- 데이터시각화에는 항상 목적이 있어야 한다. 나이팅게일이 주장하고자 하는 바는 무엇일까? ** = 파란색 영역이 줄어든 것을 보면 감염에 의한 사망자가 줄었다(공기환기,수질관리 등) = 자신의 의견을 관철시키기 위해서!! 그런데 과연 이게 맞는 방법일까? 면적으로 하면 1월 이 워낙 많은데 면적으로 시각화해서 눌러버림..
데이터 과학이란 ? 프로그래밍의 역할은?
Hadley Wickham이 에서 정의한 "전형적인 데이터 과학 프로젝트"란
“ 데이터과학의 전형적인 흐름은 이럴 것이다. “
Import -> Tidy -> (Transform -> Visualize -> Model) -> Communicate
- 데이터를 가져온다(import)
- 데이터를 정리한다(tidy) <- 모든 업무량의 80%소요
normal form = tidy(타이디) data 로 만든다면 분석하는데 문제가 없다.
데이터를 이해한다(understand) = 데이터를 목적에 맞게 변환하고, 시각화 하고, 모델링 해보는 과정
EDA : exploration, confirmation 이 동반해야 함 Model : 내가 가지고 있는 데이터로부터 추측할 수 있게 만들어 줌
a. 데이터를 이리저리 변환한다(transform)
ex) 데이터를 잘 드러내기 위해 linear scale -> log scale로 변환을 줄 수 있음
b. 원하는 데이터만 추려내거나 (특정 기간, 지역의 데이터만 뽑아내기), 기존 데이터에서 새로운 데이터를 만들어 내거나 (년-월-일 데이터에서 "요일" 뽑아내기), 평균, 분산 등 새로운 통계량을 얻어낼 수 있다.
c. 데이터를 여러가지 시각적 방법으로 표현하고 살펴본다. (visualize) d. 모델 만들기(model). 내가 가지고 있는 데이터로부터 좀 더 일반적인 규칙을 찾아내기
( a, b = EDA과정 , c = confirm과정 )
얻어낸 이해, 내용을 다른 사람에게 알린다 (communicate)
- 통계량 = 통계학 = statistics 문헌 읽을 때 잘 구분해서 봐야한다.
그러나 사실은 위와 같은 방법은 ‘이상적’이기도 하다. 난제가 많다.
데이터 과학 프로젝트의 난제
- 데이터를 구하기 어렵기 때문에 import단계부터 어렵다.
- 데이터가 잘못 수집되기도 하다.
- 회사 내 데이터 분석팀이 겪는 문제. “Import”에서 “Communicate” 사이에 시간이 흐른다. 시간이 흐르면 세상이 변한다. 세상이 변하면 사람들의 관심사가 변한다.
- 어떻게든 Understand 부분을 빠르게 줄여야 할 것이다. (애자일방법론)
- 데이터를 분석하는 사람이 프로그래밍을 해서 실행가능한 s/w형태로 나와야 하고 현업 시스템에 쉽게 붙일 수 있다면 매우 좋을 것이다!
- 데이터를 너무 소중하게 여기는 문제. “ 민감한 정보라서 제공할 수 없습니다. ”
- 직관을 너무 소중하게 여기는 문제. “이 분야는 직관과 경험이 중요한데, 감히 숫자 쪼가리 들고와서 뭐가 어째?”
- “소통”단계가 줄고 자동화를 하는 경우도 존재.
- 데이터분석 결과에 의해서 상품이 자동으로 배치되게끔 하는 경우도 있다.
- 애자일 방법론의 지향점 : 서로 다른 직군 끼리 많이 침범하고 소통하고 이해하는 것, 내가 하는 일을 다른 사람이 조금 대체할 수 있고 남이 하는 일도 내가 조금 대체할 수 있는 것.
프로그래밍 기초 수업에서 배울 내용들 (지도)
- 데이터분석 환경
- 데이터 획득 : 다양한 데이터를 읽어와서 내가 사용할 수 있게 하는 방법 , API , 크롤링
- 데이터 다루기 (파이썬활용) : tidydata로 다듬기, 정규표현식등으로 표현하기
- 프로그래밍 기초 : 파이썬 문법
- 소프트웨어 공학 : 컴퓨터한테 일을 시키는 사람들끼리 어떻게 하면 협업을 잘 할 것인가?
- 협업하기
- 탐색적 분석 : 데이터 시각화 이론 ( 어떤 데이터를 어떻게 시각화 해야하는가? )
- 실무에 쓰는 도구들 소개