zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

41
Data Warehouse, Paper, Collaboration Zeppelin@DMLAB 김태준(Jun Kim) [email protected] 2016. 09. 21. Zeppelin Meetup NAVER D2 Startup Factory Data Mining Lab. University Of Seoul

Upload: university-of-seoul

Post on 07-Jan-2017

541 views

Category:

Data & Analytics


5 download

TRANSCRIPT

Page 1: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

Data�Warehouse,�Paper,�Collaboration

Zeppelin@DMLAB

김태준(Jun�Kim)�[email protected]

2016.�09.�21.�Zeppelin�Meetup�

NAVER�D2�Startup�Factory

Data�Mining�Lab.�University�Of�Seoul

Page 2: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

안녕하세요,�김태준!�입니다.

• 서울시립대학교�데이터마이닝�연구실에서�

• 기술�지원�(Ambari�설치,�Zeppelin�설치�등...)�

• 화재�예측을�위한�빅데이터�분석�

• 밖에서는�

•MeteMQ�-�IoT�&�JavaScript�App�Platform

Page 3: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

클러스터�환경• Ambari(2.4.0),�HDP(2.5.0),�Zeppelin(0.7.0-SNAPSHOT)�

• Master�1대,�slave�8대

Page 4: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

너네�제플린�왜�써?

• “화재�예측을�위한�빅데이터�분석”을�해보자!�

• 화재�분석을�위한�Data�Warehouse(DW)를�구축해볼까?�

• 요즘�뜨는�Hive를�사용해보자!�

• ETL은�뭘로�할래?�Spark!�

• Hive와�Spark를�함께�사용할�수�있는�도구는?

Hive,�Spark�궁합�매우�좋아요~

Page 5: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

ZEPPELIN

Page 6: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

• Spark,�Hive를�한�곳에서�

• SQL만으로�시각화�

• 노트북�형식으로�소스�코드�관리

제플린�안쓰면�완전�바보�아니냐?

이�세�가지만�보고�사용했으나�더욱더�엄청난�것들이�존재했다...

Page 7: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

노트�사용�통계

•#Notebooks�=�66�

•#Paragraphs�=�850

Language #Paragraphs Usage

spark 613 ETL,�머신러닝

spark-sql 147 분석,�시각화

markdown 55 문서�작성

hive 35 Deprecated

Spark2의�폭넓은�SQL�지원으로�Hive는�저장소로�전락함...

Hive는�거들뿐...Subquery!

저희는�제플린�노트북�이렇게�씁니다

부록:�맨�뒤에�제플린�노트�통계�구하는�코드�있습니당

Page 8: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

ETL?

• Extract,�Transform,�Load�

•Raw�data를�DW에�맞게� 변형하여�저장하는�과정�

•저희는�주로�공공�데이터��

• Trasform�코드는�매우�길다�

•DW�스키마는�변하기�마련

spark.read.csv(…)

df.write.saveAsTable(“HIVE”) df.write.parquet(“HDFS”)

E

T�T�T�T�T�T�T�T

L끝나지�않는�transform...

Page 9: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

테이블�버전�관리,�ETL�코드�정리가�절실하다...OTL로�보이는건�저의�착각?

Page 10: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

“CHANGELOG.md”

Page 11: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

“CHANGELOG.md”

• ETL�버전별로�테이블�생성,�HDFS에�Parquet으로�저장�

• CHANGELOG에서는�markdown으로�변경사항을�기록하고,�Hive�테이블을�교체하는�코드�작성�

• 즉,�Hive에는�현재�버전의�테이블,�HDFS에는�모든�버전의�테이블들을�Parquet으로�저장

Parquet

Latest

All

Page 12: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

삶이�윤택해짐

•자신감과�함께�DROP�TABLE�

• 잘못되면�이전�버전으로�돌리면�되니까!�

• CHANGELOG덕에�스키마�변경시�어떤�버전을�변경해야�할지�알�수�있음

spark.read.csv(…)

df.write.saveAsTable(“HIVE”) df.write.parquet(“HDFS”)

E

T�T�T�T�T

L

T개수�줄음

처음부터�다시�ETL�노노!

Page 13: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

논문!대학원이니�ETTTTTTTTL�과정에서

이�나와야겠죠?

Page 14: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

논문!with

본격!

Page 15: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

ETL의�한�예로...

화재�뉴스�기사를�분석하기�위해�뉴스�기사�14만건�수집

검색�엔진에�“화재”를�검색하여�얻은�뉴스들이었지만,�불순물은�존재하기�마련

화재�예방,�연예인이�화재다�등등...

Page 16: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

– Professor –

“화재뉴스기사를필터링하거라”

Page 17: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

화재�뉴스�기사�필터링

• 1000건�정도�직접�labeling�하여�분류�모델을�만들자!�

• 1000건은�내가�할테니�13만9천건은�Spark�네가�하거라�

• But,�검색�결과라�이미�비슷한�단어들을�가짐�

• 38개의�메타�데이터를�이용해서�성능을�향상시켜보자!

결국엔�1500건함�ㅠㅠ

어떻게�할까?

Page 18: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

화재�뉴스�기사는�길이가�짧다!메타데이터�쓰게된�이유!

내용�길이

제목�길이

Zeppelin을�이용해�산점도로�나타내어�쉽게�알�수�있었다

제플린과�함께라면�데이터�탐색,�어렵지�않아요!

Page 19: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

머신러닝�도중�같은�문제�발생...

그리하여�깨달은�사실...

머신러닝�파이프라인은�길고...

Feature�버전은�많아지고...

앙상블�모델�조합�수는�더�늘어나고...

모델도�늘어나고...

이�노트�실행했다�저�노트�실행했다;

노트가�너무�길어져�분리�했더니...

즉,�노트�간의�dependency�발생

코드를�정리할�필요가�생김

Page 20: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

“노트�간의�변수�공유는�죄악이다”

전역변수처럼!

Page 21: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

제플린의�Spark�interpreter�설정에서�노트간의�interpreter�공유를�끔

노트�간의�변수�공유가�불가능해짐

Page 22: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

이�작은�제약�사항이�불러온�

행복한�변화

• 노트�간�dependency�제거�

• 어떤�노트를�실행하기에�앞서�다른�노트를�실행할�필요가�없음�

• 모든�노트는�언제든지�독립적으로�실행�가능함�(run�all�paragraphs를�마구�누를�수�있다)�

• 그렇다면�노트�간의�데이터�전달은?�HDFS를�통해서만!

Page 23: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

1. Feature�Extraction,�Transformation,�and�Selection�

2. Fitting�&�Model�Selection�&�Tuning�

3. Ensemble�

4. Evaluation

ML�Pipeline�Stage�Isolation

Feature

Prediction

Model

Page 24: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

더욱더�윤택해진�삶

• 소스�코드와�산출물�모두�깔끔하게�정리됨�

• Job�fail도�걱정�없음�

• 이전�스테이지들을�실행할�필요가�없으니�실행�속도�빨라짐�

•스테이지�단위로�소스�코드�변경이�용이�

• 각�스테이지의�어떤�버전이�가장�좋은지�비교�가능�

• ex)�TF/IDF?�ChiSq?

Page 25: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

실험이�깔끔해졌다!�그런데,�논문�쓰기도�쉽다!

실험�결과�시각화,�CSV로�저장,

Excel에서�바로�열�수�있다!

Page 26: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

실험�결과�저장하기

정렬!다운로드!

// 실험�결과를�담은 DataFrame metric 생성 metric.createOrReplaceTempView(“metric”)

%sql SELECT * FROM metric 임시�테이블�생성

성능�지표�별로�어떤�모델이�가장�좋은지�한�눈에�알�수�있음

Page 27: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

ROC�Curve

Page 28: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

Random�Forest�Feature�Importance

Logistic�Regression�Coefficient

내용�길이

내용�길이

Page 29: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

제플린과�함께�93.3%의�정확도로��화재�뉴스�기사를�필터링하고,�무사히�논문을�제출,�DW�완성...

Page 30: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

2013년�구로�디지털단지�화재

역경과�고난을�이겨낸�후...

서울특별시�구별,�연도별�(화재�뉴스�수�/�건물�수)

{건물,�날짜,�지역}�dimension과�뉴스�기사�fact�table�조인�분석

Page 31: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

Collaboration

Page 32: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

“교수님,�실험�결과�나왔습니다!”

간지↑

Page 33: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

Zeppelin�for�Collaboration

• 노트북�공유�

• Report를�작성하여�날려주면�좋다!�

•회의에서�적극�활용함

이젠�너무나�당연한�사실!제플린�오른쪽�상단에서�클릭

결과물만�출력됨

Page 34: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

연구실�벽면제플린�상시대기

Page 35: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

궁금점,�아이디어를�바로�질의,�시각화

왔다�갔다�하면서�데이터를�자주�접하게�되어�새로운�아이디어가�떠오름

평상시,�혹은�회의할�때

데이터에�대해�논하며�회의할�때�좋아염!

Page 36: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

많이�쓰이는�건축물�자재�순위는?

회의하면서�나온�질의�예

정말�간단한�SQL이더라도�시각화를�해주니�눈에�쏙쏙�들어옴

저희�연구실�놀러오신�다른�교수님도�신기해�하시더군요�ㅎㅎ

일반목구조

불나면�큰일나요

SQL이�회의�기록으로�남게됨!

Page 37: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

마지막으로!

Page 38: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

�Apache�Contributor가�될�기회!

• 아직�초기�프로젝트라�발전�가능성이�많다�

• 그것은�곧�기여할�수�있는�곳이�많다는�것!�

• 제플린�멤버분들�정말�친절하십니다�

• 여러분도�Apache�프로젝트의�contributor가�될�수�있습니다!

코멘트�보고�감동�ㅠ

Page 39: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

Zeppelin�for�{DW,�Paper,�Collaboration}?

• 폴더�구조와�markdown을�이용한�소스�코드의�깔끔한�정리�

• Markdown으로�DW�테이블�버전�관리�

• 실험�결과�시각화�및�다운로드�

• 회의에�적극�활용사랑해요�제플린♥

완전�최고!

Page 40: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

감사합니다.진심으로

김태준�[email protected]�datamining.uos.ac.kr

Page 41: Zeppelin(제플린) 서울시립대학교 데이터 마이닝연구실 활용사례

Zeppelin�Notebook�언어�사용�통계�구하기�소스�코드

부록!

https://gist.github.com/tae-jun/138f595228aa83e89387b5d39d33b315

슬라이드�쉐어�하단의�설명에서�URL�복사하실�수�있습니다