SlideShare a Scribd company logo
1 of 21
May 2015
권재명
데이터분석의 길 5: 클릭예측 (상편)
“고수는 큰 자료를 두려워하지 않는다”
캐글(Kaggle): 예측모형과 분석 경연 플랫폼. 회사나 연구원들이 데이터를 올리면 전세계의
통계학자와 데이터 분석가들이 "최고"의 모델을 내놓기 위해 경쟁한다. 보상은 상금 ($3M
경연도 있었다), 채용(!), 지식(knowledge) 등등이다.
1. 참가자는 training set을 이용해 각자 "최고"의 모델을 찾아낸다.Training set*은 예측
변수 (X)와 반응변수(Y) 모두를 포함한다. 이 과정에서 과적합(overfitting)을 방지하
기 위해 보통 cross-validation을 사용하게 된다.
2. 참가자는 X변수만 있는 "test set"을 이용해 예측치인 Y-hat 을 계산한 후 캐글에 제출
한다.
3. 캐글은 숨겨놓은 참 Y값을 사용해서 여러 경연자중 누가 가장 정확한지를 결정한다.
* 오해의 소지가 많은 이름이다. 왜냐하면 이 "training data"는 cross-validation에서 "진짜 training set"
과 "validation set"으로 쪼개지기 때문이다.
캐글 머신러닝 경연. 예측분석의 기본개념
온라인 광고 클릭 예측 모형
인터넷 온라인 광고업체는 실시간 경매(Real-time bidding, or RTB)를 통해 광고
의 기회가 있을 때마다 클릭 확률을 예측하여 입찰가를 결정해야 한다. 이를 위해
서는 정확한 클릭 확률 예측이 필요하다. (자세한 내용은 이런 슬라이드를 참조.)
캐글 머신러닝 경연에 공개된 자료를 사용하도록 하자:
https://www.kaggle.com/c/avazu-click-prediction/data
분석목적: 예측모형개발.
R 사용모드: 모델 개발, 피쳐 엔지니어링(feature engineering)은 대화형 분석으
로 (다음 편에서). 실제 프로덕션 시스템에 디플로이(deploy)시에는 배치(batch)
모드로 (다다음 편에서).
1. 문제 정의: 어떤 문제를 해결할 것인가?
2. 데이터 정의: 어떤 자료를 이용할 것인가?
3. 데이터 준비: 텍스트 화일(csv 포맷)이나 데이터베이스 테이블
a. 다른 프로그램들 (Python, MySQL client, Unix tools, ...)이 수고한다.
4. R로 데이터 읽어들이기: read.csv() 함수, RMySQL 패키지, ...
5. R 데이터 청소와 가공
6. R 데이터 분석과 시각화: EDA (Exploratory Data Analysis)
7. R 통계 모델링
8. 5-7을 문제를 해결할 때까지 반복
9. 결론내기: 스토리 텔링 (슬라이드) 혹은 예측모형 (알고리즘)
복습: 데이터분석 워크플로우
R을 사용하는 단계
1. 문제 정의
주어진 변수를 이용하여 클릭확률 예측하기
캐글페이지
https://www.kaggle.com/c/avazu-click-
prediction 에 로그인후 (페북 로그인을 쓰면
됨), 경연 약관에 동의한 후, 세 자료화일들을
다운받자. (~1GB이므로 시간이 좀 걸린다)
● Training set: 10일치의 클릭 데이터.
a. 시간 순서대로 정렬되어 있다.
b. 비클릭 (Non-clicks)과 클릭(clicks)은 다른 비율로 서브샘플
(subsampled)되어있음.
● Test set: 1일치의 클릭 데이터
2. 데이터 정의
● app_id
● app_domain
● app_category
● device_id
● device_ip
● device_model
● device_type
● device_conn_type
● C14-C21 -- anonymized
categorical variables
데이터: 변수들
변수설명
● id: ad identifier
● click: 0/1 for non-click/click
● hour: format is YYMMDDHH, so
14091123 means 23:00 on Sept.
11, 2014 UTC.
● C1 -- anonymized categorical
variable
● banner_pos
● site_id
● site_domain
● site_category
프로젝트 이름은 click-prediction* 로 하자.
~/projects/click-prediction 디렉토리를 만들고,
지난 편에서와 같이 click-prediction.Rproj를 만들고,
분석 R 스크립트 화일은 click-prediction.R이라고 이름짓도록 하자.
자료는 ~/projects/click-prediction/data/에 저장하도록 하자.**
* 의미있는 이름 하나를 계속 재사용하는 컨벤션 (convention) 혹은 관행.
** 또다른 컨벤션. 프로젝트 디렉토리를 너무 어지럽히지 않을 수 있다.
3. 데이터 준비
데이터 준비: Unix 와 다른 툴
자료가 압축된 상태에서 1GB정도의 크기이므로, R로 읽어들이는 것이 무리이다.
하지만 고수는 이러한 자료를 편안하게 다룰 수 있는 사람이다.
클릭확률예측 데이터는 일단 유닉스 명령어들을 사용하여 자료를 샘플하는 접근
법을 취하도록 하겠다.
일반적인 접근방법에 대해서는 부록 “고수는 큰 자료를 두려워하지 않는다”를 참
조하자.
데이터 들여다보기: Unix
bash terminal을 열고 cd ~/projects/click-prediction/data 데이터 디렉토리로 이
동후 다음 문제를 풀어보자:
1. train.gz 화일의 사이즈는?
2. train.gz 는 어떤 포맷일까?
3. train.gz 화일 내용을 화면(stdout)으로 출력하는 방법은?
4. train.gz 화일 첫 20줄을 볼 수 있는 방법은?
5. train.gz 화일이 몇개의 관측치로 되어있을까?
6. train.gz 화일의 첫 백만개의 관측치를 train_1m 화일로 저장하자.
7. train_1m 화일을 압축하기.
데이터 들여다보기: 힌트
1. train.gz 화일의 사이즈는? (힌트: "ls -lh")
2. train.gz 는 어떤 포맷일까? (힌트: 구글 "gz")
3. train.gz 화일 내용을 화면(stdout)으로 출력하는 방법은? (힌트: 터미널에서
"gunzip -h" 혹은 "man gunzip" 실행)
4. train.gz 화일 첫 20줄을 볼 수 있는 방법은? (힌트: 터미널에서 "man head")
5. train.gz 화일이 몇개의 관측치로 되어있을까? (힌트: 구글 "unix pipe". 터미
널에서 "man wc"
6. train.gz 화일의 첫 백만 관측치를 train_1m 화일로 저장하자. (힌트: 구글
"unix redirect")
7. train_1m 화일을 압축하기 (힌트: "man gzip")
1. 1.0GB
2. gzip 압축포맷
3. gunzip -c train.gz | more
4. gunzip -c train.gz | head -20
5. gunzip -c train.gz | wc -l # 40428968 혹은 ~40M 관측치
6. gunzip -c train.gz | head -1000000 > train_1m
7. gzip train_1m # train_1m.gz 생성
고급문제:
1. #6과 7을 한줄에 하는 방법은?
2. 위에서 얻어진 train_1m.gz은 랜덤 샘플이 아니다. 왜인가?
데이터 들여다보기: 정답
데이터 들여다보기: 유용한 Unix 커맨드라인
기본 명령어: ls, pwd, cd, cp, mv, rm, mkdir, rmdir, more, cat, touch, df, du, ln,
chmod, man, ps
Unix 커맨드 라인에서 가능한 자료처리 기능들:
● 관측치 상단/하단 선택: head, tail
● 관측치 패턴 검색: grep
● 컬럼 선택: cut
● 정렬: sort
● 관측치 계수: wc
● 파이프(pipe)와 리디렉트 (redirect): `|` 그리고 `>`
이보다 더 복잡한 작업은 python 등의 스크립트 언어를 사용할 필요가 있다.
4. R로 (샘플된) 데이터 읽어들이기
R에서 data.table 패키지의 fread를 사용하여 자료를 읽어들이도록 하자.
R 퀴즈
1. read.csv() 를 사용하지 않고 fread()를 사용한 이유는?
이미 많이 정리된 자료이므로 청소와
가공의 필요는 거의 없다.
R 퀴즈
1. “id” 변수를 삭제하자.
2. “click” 변수를 반응변수로 해서
다음 모델을 적합해보자:
a. 선형모형 (lm)
i. lm(click ~ ., data=data)
3. #2 가 메모리 에러를 내면서 실패
하는 이유는?
5. R에서 데이터 청소와 가공
feature selection
feature engineering
lm, glm, glmnet 모델 적합하기
ROCR 패키지를 이용해 모델 비교
다음 편에서는...
부록: “고수는 큰자료를 두려워하지
않는다”
빅데이터와 스몰데이터. Unix. SQL. Hadoop/Hive. dplyr. data.table. ...
R은 세션 데이터를 램(RAM)에 저장하므로, 램보다 큰 자료를 분석할 수 없다.
램보다 큰 자료("빅데이터")는 "샘플링"으로 작게 만든후 분석하면 된다.
스몰데이터의 장점:
1. 분석의 속도: 데이터분석의 속도가 빨라진다. (fast iteration)
2. 탐색적 자료분석(exploratory data analysis, or EDA): 자료의 문제점과 의
미있는 분포/관계 등은 스몰데이터를 이용한 분석으로 대부분 발견된다.
3. 통계적 정확도: 모델의 통계적 정확도는 sqrt(n)에 비례한다. (자료 크기가
어느 정도가 넘어가면 데이터 크기의 한계효용(marginal utility)은 감소하
게 된다)
빅데이터와 스몰데이터
결론: 빅데이터를 다루는 컴퓨터 시스템보다는 (“솔루션”적 접근방법) 빅데이터
를 스몰데이터로 변환하고 유용한 결과를 이끌어 낸 후 빅데이터에 적용할 수 있
는 전문가가 더 중요하다. (“데이터분석고수” 접근방법)
따름정리 (Corollary): 데이터 분석 전문가는 필요에 따라 빅데이터와 스몰데이
터를 자유롭게 왕래할 수 있어야 한다. 이를 위해서는 다음의 스킬셋이 필요하다:
1. 통계 (필수)
2. R and/or Python (필수)
3. Unix, SQL (RDBMS나 Hadoop Hive), 등등 (필요하면 배워서 사용할 수 있
어야)
솔루션적 접근 < 데이터분석 고수
자료의 원천과 툴의 예:
● 데이터베이스의 테이블 (RDBMS, 혹은 Hadoop 의 Hive Table) → SQL로 처
리
● 텍스트 화일 → Unix command나 Python으로 처리
● R의 data.frame / data.table 오브젝트 → plyr, reshape2, dplyr 등으로 처리.
● Python의 pandas.DataFrame → pandas document
이렇게 자료의 원천과 툴들은 다양하지만 자료 처리의 공통된 패턴도 존재한다.
Hadley Wickham의 dplyr 패키지 도큐먼트의 분류를 따른 다음 슬라이드를 참조
하자.
(빅)데이터는 여러 형태로 존재한다
R data frame
→ dplyr
RDBMS / Hive table
→ SQL
Text file
→ Unix shell
자료 생성, 입력 read.table(), fread() load data infile ...
Filter rows filter()
slice()
... where ... head, tail, grep (regex)
Arrange (sort) rows arrange() ... ordery by ... sort
Select columns select()
rename()
select ... from ... cut
Distinct (unique) rows distinct() ... distinct ... sort | uniq
Add new columns mutate() select newx=f(oldx) from ...
Summarize summarize() select count(), sum(), avg(), ... wc -l [for counting]
Sample sample_n(), sample_frac() select ... from TABLESAMPLE
[Hive에서만]
head -n [biased sample]
Grouped operation group_by() ... group by ...

More Related Content

What's hot

7.woring with text data
7.woring with text data7.woring with text data
7.woring with text dataHaesun Park
 
파이썬 데이터 분석 3종세트
파이썬 데이터 분석 3종세트파이썬 데이터 분석 3종세트
파이썬 데이터 분석 3종세트itproman35
 
Deview RecoPick팀 AWS에서 추쳔 구현하기
Deview RecoPick팀 AWS에서 추쳔 구현하기Deview RecoPick팀 AWS에서 추쳔 구현하기
Deview RecoPick팀 AWS에서 추쳔 구현하기Chaehyun Lee
 
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI )
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI ) 파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI )
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI ) Yunho Maeng
 
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)Haezoom Inc.
 
6.algorithm chains and piplines
6.algorithm chains and piplines6.algorithm chains and piplines
6.algorithm chains and piplinesHaesun Park
 
Deep learning framework 제작
Deep learning framework 제작Deep learning framework 제작
Deep learning framework 제작Tae Young Lee
 
데이터는 차트가 아니라 돈이 되어야 한다.
데이터는 차트가 아니라 돈이 되어야 한다.데이터는 차트가 아니라 돈이 되어야 한다.
데이터는 차트가 아니라 돈이 되어야 한다.Yongho Ha
 
창발 세미나 - 머신러닝과 소프트웨어 개발
창발 세미나 - 머신러닝과 소프트웨어 개발창발 세미나 - 머신러닝과 소프트웨어 개발
창발 세미나 - 머신러닝과 소프트웨어 개발Sang-Min Park
 
머신러닝의 개념과 실습
머신러닝의 개념과 실습머신러닝의 개념과 실습
머신러닝의 개념과 실습Byoung-Hee Kim
 
Meetup history
Meetup historyMeetup history
Meetup historyMk Kim
 
창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝Sang-Min Park
 
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기NAVER D2
 
파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)SK(주) C&C - 강병호
 
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론마이캠퍼스
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical MethodologyKyeongUkJang
 
실패한 오픈소스 공헌으로 배워가기
실패한 오픈소스 공헌으로 배워가기실패한 오픈소스 공헌으로 배워가기
실패한 오픈소스 공헌으로 배워가기Sung-Hee Kang
 

What's hot (20)

1.introduction
1.introduction1.introduction
1.introduction
 
7.woring with text data
7.woring with text data7.woring with text data
7.woring with text data
 
파이썬 데이터 분석 3종세트
파이썬 데이터 분석 3종세트파이썬 데이터 분석 3종세트
파이썬 데이터 분석 3종세트
 
Deview RecoPick팀 AWS에서 추쳔 구현하기
Deview RecoPick팀 AWS에서 추쳔 구현하기Deview RecoPick팀 AWS에서 추쳔 구현하기
Deview RecoPick팀 AWS에서 추쳔 구현하기
 
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI )
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI ) 파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI )
파이썬(Python) 으로 나만의 딥러닝 API 만들기 강좌 (Feat. AutoAI )
 
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
 
6.algorithm chains and piplines
6.algorithm chains and piplines6.algorithm chains and piplines
6.algorithm chains and piplines
 
파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝
 
Deep learning framework 제작
Deep learning framework 제작Deep learning framework 제작
Deep learning framework 제작
 
데이터는 차트가 아니라 돈이 되어야 한다.
데이터는 차트가 아니라 돈이 되어야 한다.데이터는 차트가 아니라 돈이 되어야 한다.
데이터는 차트가 아니라 돈이 되어야 한다.
 
창발 세미나 - 머신러닝과 소프트웨어 개발
창발 세미나 - 머신러닝과 소프트웨어 개발창발 세미나 - 머신러닝과 소프트웨어 개발
창발 세미나 - 머신러닝과 소프트웨어 개발
 
머신러닝의 개념과 실습
머신러닝의 개념과 실습머신러닝의 개념과 실습
머신러닝의 개념과 실습
 
Meetup history
Meetup historyMeetup history
Meetup history
 
창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝
 
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기
[213] 의료 ai를 위해 세상에 없는 양질의 data 만드는 도구 제작하기
 
파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)
 
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical Methodology
 
실패한 오픈소스 공헌으로 배워가기
실패한 오픈소스 공헌으로 배워가기실패한 오픈소스 공헌으로 배워가기
실패한 오픈소스 공헌으로 배워가기
 

Similar to 데이터분석의 길 5: “고수는 큰자료를 두려워하지 않는다” (클릭확률예측 상편)

경영빅데이터분석 2조
경영빅데이터분석 2조경영빅데이터분석 2조
경영빅데이터분석 2조ssuser948856
 
경영빅데이터분석 2조
경영빅데이터분석 2조경영빅데이터분석 2조
경영빅데이터분석 2조ssuser948856
 
실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루Jaimie Kwon (권재명)
 
경영빅데이터분석 2조
경영빅데이터분석 2조경영빅데이터분석 2조
경영빅데이터분석 2조ssuser948856
 
[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScienceNAVER D2
 
Deep Learning for AI (1)
Deep Learning for AI (1)Deep Learning for AI (1)
Deep Learning for AI (1)Dongheon Lee
 
Big Data Analytics and Data Mining
Big Data Analytics and Data MiningBig Data Analytics and Data Mining
Big Data Analytics and Data MiningSuHyun Jeon
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWSKRUG - AWS한국사용자모임
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020Jinwoong Kim
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법NAVER D2
 
How to Create Value from Data, and Its Difficulty
How to Create Value from Data, and Its DifficultyHow to Create Value from Data, and Its Difficulty
How to Create Value from Data, and Its DifficultyDataya Nolja
 
권기훈_개인포트폴리오
권기훈_개인포트폴리오권기훈_개인포트폴리오
권기훈_개인포트폴리오Kihoon4
 
Titanic kaggle competition
Titanic kaggle competitionTitanic kaggle competition
Titanic kaggle competitionjdo
 
eCommerce Recommendation project
eCommerce Recommendation projecteCommerce Recommendation project
eCommerce Recommendation projectYEEUNOH2
 
[패스트캠퍼스] Outbrain Click Prediction
[패스트캠퍼스] Outbrain Click Prediction[패스트캠퍼스] Outbrain Click Prediction
[패스트캠퍼스] Outbrain Click Prediction완식 윤
 
데이터드리븐 DX 추진방안_202306.pdf
데이터드리븐 DX 추진방안_202306.pdf데이터드리븐 DX 추진방안_202306.pdf
데이터드리븐 DX 추진방안_202306.pdfYunjeong Susan Hong
 
Pro android performance optimization 20171213
Pro android performance optimization 20171213Pro android performance optimization 20171213
Pro android performance optimization 20171213Changwook Jun
 
권기훈_포트폴리오
권기훈_포트폴리오권기훈_포트폴리오
권기훈_포트폴리오Kihoon4
 
E-commerce BigData Scale AI Journey
E-commerce BigData Scale AI JourneyE-commerce BigData Scale AI Journey
E-commerce BigData Scale AI Journeyhoondong kim
 

Similar to 데이터분석의 길 5: “고수는 큰자료를 두려워하지 않는다” (클릭확률예측 상편) (20)

경영빅데이터분석 2조
경영빅데이터분석 2조경영빅데이터분석 2조
경영빅데이터분석 2조
 
경영빅데이터분석 2조
경영빅데이터분석 2조경영빅데이터분석 2조
경영빅데이터분석 2조
 
실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루실리콘 밸리 데이터 사이언티스트의 하루
실리콘 밸리 데이터 사이언티스트의 하루
 
경영빅데이터분석 2조
경영빅데이터분석 2조경영빅데이터분석 2조
경영빅데이터분석 2조
 
[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience
 
Deep Learning for AI (1)
Deep Learning for AI (1)Deep Learning for AI (1)
Deep Learning for AI (1)
 
Big Data Analytics and Data Mining
Big Data Analytics and Data MiningBig Data Analytics and Data Mining
Big Data Analytics and Data Mining
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
 
How to Create Value from Data, and Its Difficulty
How to Create Value from Data, and Its DifficultyHow to Create Value from Data, and Its Difficulty
How to Create Value from Data, and Its Difficulty
 
권기훈_개인포트폴리오
권기훈_개인포트폴리오권기훈_개인포트폴리오
권기훈_개인포트폴리오
 
Titanic kaggle competition
Titanic kaggle competitionTitanic kaggle competition
Titanic kaggle competition
 
eCommerce Recommendation project
eCommerce Recommendation projecteCommerce Recommendation project
eCommerce Recommendation project
 
[패스트캠퍼스] Outbrain Click Prediction
[패스트캠퍼스] Outbrain Click Prediction[패스트캠퍼스] Outbrain Click Prediction
[패스트캠퍼스] Outbrain Click Prediction
 
분석6기 4조
분석6기 4조분석6기 4조
분석6기 4조
 
데이터드리븐 DX 추진방안_202306.pdf
데이터드리븐 DX 추진방안_202306.pdf데이터드리븐 DX 추진방안_202306.pdf
데이터드리븐 DX 추진방안_202306.pdf
 
Pro android performance optimization 20171213
Pro android performance optimization 20171213Pro android performance optimization 20171213
Pro android performance optimization 20171213
 
권기훈_포트폴리오
권기훈_포트폴리오권기훈_포트폴리오
권기훈_포트폴리오
 
E-commerce BigData Scale AI Journey
E-commerce BigData Scale AI JourneyE-commerce BigData Scale AI Journey
E-commerce BigData Scale AI Journey
 

데이터분석의 길 5: “고수는 큰자료를 두려워하지 않는다” (클릭확률예측 상편)

  • 1. May 2015 권재명 데이터분석의 길 5: 클릭예측 (상편) “고수는 큰 자료를 두려워하지 않는다”
  • 2. 캐글(Kaggle): 예측모형과 분석 경연 플랫폼. 회사나 연구원들이 데이터를 올리면 전세계의 통계학자와 데이터 분석가들이 "최고"의 모델을 내놓기 위해 경쟁한다. 보상은 상금 ($3M 경연도 있었다), 채용(!), 지식(knowledge) 등등이다. 1. 참가자는 training set을 이용해 각자 "최고"의 모델을 찾아낸다.Training set*은 예측 변수 (X)와 반응변수(Y) 모두를 포함한다. 이 과정에서 과적합(overfitting)을 방지하 기 위해 보통 cross-validation을 사용하게 된다. 2. 참가자는 X변수만 있는 "test set"을 이용해 예측치인 Y-hat 을 계산한 후 캐글에 제출 한다. 3. 캐글은 숨겨놓은 참 Y값을 사용해서 여러 경연자중 누가 가장 정확한지를 결정한다. * 오해의 소지가 많은 이름이다. 왜냐하면 이 "training data"는 cross-validation에서 "진짜 training set" 과 "validation set"으로 쪼개지기 때문이다. 캐글 머신러닝 경연. 예측분석의 기본개념
  • 3. 온라인 광고 클릭 예측 모형 인터넷 온라인 광고업체는 실시간 경매(Real-time bidding, or RTB)를 통해 광고 의 기회가 있을 때마다 클릭 확률을 예측하여 입찰가를 결정해야 한다. 이를 위해 서는 정확한 클릭 확률 예측이 필요하다. (자세한 내용은 이런 슬라이드를 참조.) 캐글 머신러닝 경연에 공개된 자료를 사용하도록 하자: https://www.kaggle.com/c/avazu-click-prediction/data 분석목적: 예측모형개발. R 사용모드: 모델 개발, 피쳐 엔지니어링(feature engineering)은 대화형 분석으 로 (다음 편에서). 실제 프로덕션 시스템에 디플로이(deploy)시에는 배치(batch) 모드로 (다다음 편에서).
  • 4. 1. 문제 정의: 어떤 문제를 해결할 것인가? 2. 데이터 정의: 어떤 자료를 이용할 것인가? 3. 데이터 준비: 텍스트 화일(csv 포맷)이나 데이터베이스 테이블 a. 다른 프로그램들 (Python, MySQL client, Unix tools, ...)이 수고한다. 4. R로 데이터 읽어들이기: read.csv() 함수, RMySQL 패키지, ... 5. R 데이터 청소와 가공 6. R 데이터 분석과 시각화: EDA (Exploratory Data Analysis) 7. R 통계 모델링 8. 5-7을 문제를 해결할 때까지 반복 9. 결론내기: 스토리 텔링 (슬라이드) 혹은 예측모형 (알고리즘) 복습: 데이터분석 워크플로우 R을 사용하는 단계
  • 5. 1. 문제 정의 주어진 변수를 이용하여 클릭확률 예측하기 캐글페이지 https://www.kaggle.com/c/avazu-click- prediction 에 로그인후 (페북 로그인을 쓰면 됨), 경연 약관에 동의한 후, 세 자료화일들을 다운받자. (~1GB이므로 시간이 좀 걸린다)
  • 6. ● Training set: 10일치의 클릭 데이터. a. 시간 순서대로 정렬되어 있다. b. 비클릭 (Non-clicks)과 클릭(clicks)은 다른 비율로 서브샘플 (subsampled)되어있음. ● Test set: 1일치의 클릭 데이터 2. 데이터 정의
  • 7. ● app_id ● app_domain ● app_category ● device_id ● device_ip ● device_model ● device_type ● device_conn_type ● C14-C21 -- anonymized categorical variables 데이터: 변수들 변수설명 ● id: ad identifier ● click: 0/1 for non-click/click ● hour: format is YYMMDDHH, so 14091123 means 23:00 on Sept. 11, 2014 UTC. ● C1 -- anonymized categorical variable ● banner_pos ● site_id ● site_domain ● site_category
  • 8. 프로젝트 이름은 click-prediction* 로 하자. ~/projects/click-prediction 디렉토리를 만들고, 지난 편에서와 같이 click-prediction.Rproj를 만들고, 분석 R 스크립트 화일은 click-prediction.R이라고 이름짓도록 하자. 자료는 ~/projects/click-prediction/data/에 저장하도록 하자.** * 의미있는 이름 하나를 계속 재사용하는 컨벤션 (convention) 혹은 관행. ** 또다른 컨벤션. 프로젝트 디렉토리를 너무 어지럽히지 않을 수 있다. 3. 데이터 준비
  • 9. 데이터 준비: Unix 와 다른 툴 자료가 압축된 상태에서 1GB정도의 크기이므로, R로 읽어들이는 것이 무리이다. 하지만 고수는 이러한 자료를 편안하게 다룰 수 있는 사람이다. 클릭확률예측 데이터는 일단 유닉스 명령어들을 사용하여 자료를 샘플하는 접근 법을 취하도록 하겠다. 일반적인 접근방법에 대해서는 부록 “고수는 큰 자료를 두려워하지 않는다”를 참 조하자.
  • 10. 데이터 들여다보기: Unix bash terminal을 열고 cd ~/projects/click-prediction/data 데이터 디렉토리로 이 동후 다음 문제를 풀어보자: 1. train.gz 화일의 사이즈는? 2. train.gz 는 어떤 포맷일까? 3. train.gz 화일 내용을 화면(stdout)으로 출력하는 방법은? 4. train.gz 화일 첫 20줄을 볼 수 있는 방법은? 5. train.gz 화일이 몇개의 관측치로 되어있을까? 6. train.gz 화일의 첫 백만개의 관측치를 train_1m 화일로 저장하자. 7. train_1m 화일을 압축하기.
  • 11. 데이터 들여다보기: 힌트 1. train.gz 화일의 사이즈는? (힌트: "ls -lh") 2. train.gz 는 어떤 포맷일까? (힌트: 구글 "gz") 3. train.gz 화일 내용을 화면(stdout)으로 출력하는 방법은? (힌트: 터미널에서 "gunzip -h" 혹은 "man gunzip" 실행) 4. train.gz 화일 첫 20줄을 볼 수 있는 방법은? (힌트: 터미널에서 "man head") 5. train.gz 화일이 몇개의 관측치로 되어있을까? (힌트: 구글 "unix pipe". 터미 널에서 "man wc" 6. train.gz 화일의 첫 백만 관측치를 train_1m 화일로 저장하자. (힌트: 구글 "unix redirect") 7. train_1m 화일을 압축하기 (힌트: "man gzip")
  • 12. 1. 1.0GB 2. gzip 압축포맷 3. gunzip -c train.gz | more 4. gunzip -c train.gz | head -20 5. gunzip -c train.gz | wc -l # 40428968 혹은 ~40M 관측치 6. gunzip -c train.gz | head -1000000 > train_1m 7. gzip train_1m # train_1m.gz 생성 고급문제: 1. #6과 7을 한줄에 하는 방법은? 2. 위에서 얻어진 train_1m.gz은 랜덤 샘플이 아니다. 왜인가? 데이터 들여다보기: 정답
  • 13. 데이터 들여다보기: 유용한 Unix 커맨드라인 기본 명령어: ls, pwd, cd, cp, mv, rm, mkdir, rmdir, more, cat, touch, df, du, ln, chmod, man, ps Unix 커맨드 라인에서 가능한 자료처리 기능들: ● 관측치 상단/하단 선택: head, tail ● 관측치 패턴 검색: grep ● 컬럼 선택: cut ● 정렬: sort ● 관측치 계수: wc ● 파이프(pipe)와 리디렉트 (redirect): `|` 그리고 `>` 이보다 더 복잡한 작업은 python 등의 스크립트 언어를 사용할 필요가 있다.
  • 14. 4. R로 (샘플된) 데이터 읽어들이기 R에서 data.table 패키지의 fread를 사용하여 자료를 읽어들이도록 하자. R 퀴즈 1. read.csv() 를 사용하지 않고 fread()를 사용한 이유는?
  • 15. 이미 많이 정리된 자료이므로 청소와 가공의 필요는 거의 없다. R 퀴즈 1. “id” 변수를 삭제하자. 2. “click” 변수를 반응변수로 해서 다음 모델을 적합해보자: a. 선형모형 (lm) i. lm(click ~ ., data=data) 3. #2 가 메모리 에러를 내면서 실패 하는 이유는? 5. R에서 데이터 청소와 가공
  • 16. feature selection feature engineering lm, glm, glmnet 모델 적합하기 ROCR 패키지를 이용해 모델 비교 다음 편에서는...
  • 17. 부록: “고수는 큰자료를 두려워하지 않는다” 빅데이터와 스몰데이터. Unix. SQL. Hadoop/Hive. dplyr. data.table. ...
  • 18. R은 세션 데이터를 램(RAM)에 저장하므로, 램보다 큰 자료를 분석할 수 없다. 램보다 큰 자료("빅데이터")는 "샘플링"으로 작게 만든후 분석하면 된다. 스몰데이터의 장점: 1. 분석의 속도: 데이터분석의 속도가 빨라진다. (fast iteration) 2. 탐색적 자료분석(exploratory data analysis, or EDA): 자료의 문제점과 의 미있는 분포/관계 등은 스몰데이터를 이용한 분석으로 대부분 발견된다. 3. 통계적 정확도: 모델의 통계적 정확도는 sqrt(n)에 비례한다. (자료 크기가 어느 정도가 넘어가면 데이터 크기의 한계효용(marginal utility)은 감소하 게 된다) 빅데이터와 스몰데이터
  • 19. 결론: 빅데이터를 다루는 컴퓨터 시스템보다는 (“솔루션”적 접근방법) 빅데이터 를 스몰데이터로 변환하고 유용한 결과를 이끌어 낸 후 빅데이터에 적용할 수 있 는 전문가가 더 중요하다. (“데이터분석고수” 접근방법) 따름정리 (Corollary): 데이터 분석 전문가는 필요에 따라 빅데이터와 스몰데이 터를 자유롭게 왕래할 수 있어야 한다. 이를 위해서는 다음의 스킬셋이 필요하다: 1. 통계 (필수) 2. R and/or Python (필수) 3. Unix, SQL (RDBMS나 Hadoop Hive), 등등 (필요하면 배워서 사용할 수 있 어야) 솔루션적 접근 < 데이터분석 고수
  • 20. 자료의 원천과 툴의 예: ● 데이터베이스의 테이블 (RDBMS, 혹은 Hadoop 의 Hive Table) → SQL로 처 리 ● 텍스트 화일 → Unix command나 Python으로 처리 ● R의 data.frame / data.table 오브젝트 → plyr, reshape2, dplyr 등으로 처리. ● Python의 pandas.DataFrame → pandas document 이렇게 자료의 원천과 툴들은 다양하지만 자료 처리의 공통된 패턴도 존재한다. Hadley Wickham의 dplyr 패키지 도큐먼트의 분류를 따른 다음 슬라이드를 참조 하자. (빅)데이터는 여러 형태로 존재한다
  • 21. R data frame → dplyr RDBMS / Hive table → SQL Text file → Unix shell 자료 생성, 입력 read.table(), fread() load data infile ... Filter rows filter() slice() ... where ... head, tail, grep (regex) Arrange (sort) rows arrange() ... ordery by ... sort Select columns select() rename() select ... from ... cut Distinct (unique) rows distinct() ... distinct ... sort | uniq Add new columns mutate() select newx=f(oldx) from ... Summarize summarize() select count(), sum(), avg(), ... wc -l [for counting] Sample sample_n(), sample_frac() select ... from TABLESAMPLE [Hive에서만] head -n [biased sample] Grouped operation group_by() ... group by ...