데이터시각화를 바라보는 데이터 사이언티스트, 엔지니어, 마케터간의 관점들이 서로 다릅니다.
이 슬라이드에서는 엔지니어 관점에서 중요시 하는 키워드들, 설계 관점에서의 데이터시각화,
그리고 비즈니스인텔리전스(Business Intelligence)에 대해서 소개드리고 있습니다.
이 발표자료는 데이터 야놀자에서 소개되었습니다.
– Elastic stack과 Data pipeline의 개념
– 데이터의 종류와 형태 / Document 데이터 모델링 (mapping, data type)
– 분산 데이터 저장소 관점에서의 Elasticsearch (index, shard & replica, segment)
https://learningspoons.com/course/detail/elastic-stack/
– Elastic stack과 Data pipeline의 개념
– 데이터의 종류와 형태 / Document 데이터 모델링 (mapping, data type)
– 분산 데이터 저장소 관점에서의 Elasticsearch (index, shard & replica, segment)
https://learningspoons.com/course/detail/elastic-stack/
Big Data Platform Field Case in MelOn (in Korean)
- Presented by Byeong-hwa Yoon, engineer manager at Loen Entertainment
- at Gruter TECHDAY 2014 Oct. 29 Seoul, Korea
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기Kenneth Ceyer
GDG DevFest 2017 Seoul
프론트엔드 모던 프레임워크 낱낱히 파헤치기 세션의 발표자료입니다.
이 발표자료에서는 여러분이 항상 궁금해 하신
프론트엔드 프레임워크의 삼총사
Angular, React, VueJS를 다차원적으로 깊이있게 비교하고 각각의 이점과 특화된 기능을 소개하고 있습니다.
이러한 프레임워크를 경험해보지 못한 분들을 위해 프레임워크 별로 특징부터 쉽게 접근하여 설명하기 때문에 경험 불문하고 가볍게 읽어 보실 수 있습니다.
Dealing with Python Reactively - PyCon Korea 2017Kenneth Ceyer
More sample code is available at:
https://github.com/KennethanCeyer/pycon-kr-2017
When developing with Python
Do you have any memory overflows, or the order of the process is in the wrong order?
Reactive programming helps you easily define and recycle complex data flows from a new perspective.
The Generators and Coroutines are designed to light up a huge stream of data and handle it the way you want. Of course, the processing time does not increase!
We will share to you how to make your code more efficient by using about the mentioned features for lunch at the upcoming FICON Korea 2017, Sunday 13th.
Big Data Platform Field Case in MelOn (in Korean)
- Presented by Byeong-hwa Yoon, engineer manager at Loen Entertainment
- at Gruter TECHDAY 2014 Oct. 29 Seoul, Korea
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기Kenneth Ceyer
GDG DevFest 2017 Seoul
프론트엔드 모던 프레임워크 낱낱히 파헤치기 세션의 발표자료입니다.
이 발표자료에서는 여러분이 항상 궁금해 하신
프론트엔드 프레임워크의 삼총사
Angular, React, VueJS를 다차원적으로 깊이있게 비교하고 각각의 이점과 특화된 기능을 소개하고 있습니다.
이러한 프레임워크를 경험해보지 못한 분들을 위해 프레임워크 별로 특징부터 쉽게 접근하여 설명하기 때문에 경험 불문하고 가볍게 읽어 보실 수 있습니다.
Dealing with Python Reactively - PyCon Korea 2017Kenneth Ceyer
More sample code is available at:
https://github.com/KennethanCeyer/pycon-kr-2017
When developing with Python
Do you have any memory overflows, or the order of the process is in the wrong order?
Reactive programming helps you easily define and recycle complex data flows from a new perspective.
The Generators and Coroutines are designed to light up a huge stream of data and handle it the way you want. Of course, the processing time does not increase!
We will share to you how to make your code more efficient by using about the mentioned features for lunch at the upcoming FICON Korea 2017, Sunday 13th.
더 많은 샘플코드는 아래 주소에서 보실 수 있습니다.
https://github.com/KennethanCeyer/pycon-kr-2017/blob/master/README-KR.md
파이썬으로 개발을 진행할 때
메모리가 넘쳐흐르거나 프로세스 진행 순서가 엉망인 경험 없으세요?
리액티브 프로그래밍은 복잡한 데이터 흐름을 새로운 관점에서 쉽게 정의하고 재활용 할 수 있도록 도와줍니다.
또한 제너레이터와 코루틴은 거대한 데이터 스트림을 가볍게 하이파이브하며 여러분이 원하는대로 처리해줄 수 있게 설계되어 있습니다. 물론 처리시간도 늘어나지 않으면서요!
다가오는 파이콘 한국 2017, 13일 일요일 점심에 여러분에게 앞서 말한 기능을 이용하여 여러분의 코드를 조금 더 효율적으로 짜실 수 있는 노하우를 공유드리고자 합니다.
AngularJS 2는 올해 릴리징된 프론트엔드 도구 중 가장 쿨하고 섹시한 도구라고 독자는 믿고있습니다.
AngularJS 2를 실무환경에 적용함으로 얻는 이점.
AngularJS 2와 1의 차이점과 성능.
그리고 ReactJS와 AngularJS 2를 비교하여 퍼포먼스 데이터를 보여줍니다.
마지막으로 AngularJS 2 사용을 위한 번들러(Bundler) 그 중 Webpack, Systemjs, JSPM에 대해서도 안내합니다.
해당 자료는 XECon 2016에 발표되었습니다.
GDG DevFest 2017 - Inspections of Kotlin implementations by Bytecode.
세션 이후 "Kotlin은 Java의 wrapper인가요?" 라는 질문을 몇번 받았습니다.
—
답변: 그렇지 않습니다.
특정한 언어로 구현된 코드는 파싱을 거쳐 추상화된 형태(AST)와 추가 정보들을 가지는 1차적인 결과물로 처리됩니다. 보통 이런 역할을 하는 것은 컴파일러에서 전단부(frontend)라고 호칭하며 이러한 AST 등의 결과물은 대상 머신이나 플랫폼에 맞추어 처리됩니다.
이를 바로 실행하면 인터프리터라고 하지만, 실행 가능한 형태(Executable)로 생성하는 경우라면 컴파일러 후단부(Backend)가 이를 수행합니다.
백엔드의 타겟 코드는 충분히 다양한 대상을 다룰 수 있으므로, 우리가 다양한 백엔드 구현을 통해 동일 코드를 멀티 플랫폼을 대상으로 실행할 수 있도록 할 수 있는 것입니다.
코틀린 역시 대상으로 하는 플랫폼(과 머신)은 현재 다음과 같은 실행 가능한 형태를 지원하고 있습니다. (물론 아직 모든 타겟이 완벽하지는 않겠죠.)
1. Bytecode 포맷에 따른 JVM(안드로이드 포함)
2. JavaScript에 의한 브라우저나 Node.js
3. llvm을 이용하여 여러 타겟의 네이티브 코드
이 자료는 이 중 1번을 기반으로 디컴파일된 코드를 살펴보고 코틀린의 코드 생성 목적이나 언어 설계의 원인(어떤 painpoint)를 찾아보는 과정의 일부였을 뿐입니다.
언어는 항상 요구되는 표현을 위해 가장 적합한 형태로 변화해나갑니다. 프로그래밍 언어는 비교적 단기간에 만들어지는 언어이고, 그에 따라 특정 사람과 집단의 목적에 충실합니다. 다만, 이 관점에서 봤을 때도 Kotlin이 Java의 wrapper로써 설계되었을 것보다는 다양한 타겟 플랫폼이 고려되고 있는 하나의 프로그래밍 언어로 받아들여 주시기를 바랍니다. :)
빅데이터 기술의 소프트웨어 공학 적용
1. 빅데이터 기술의 활용 사례 - 빅데이터 기술은 이미 많은 적용 사례를 가지고 있고, IoT 기술과 더불어 일상의 기술이 되어 가고 있다 (Pervasive & Invisible Analytics).
2. Spark 플랫폼 - 이전에 Hadoop으로 대표되는 빅데이터의 분산 처리 기술은 계속 발전하고 있고, Spark는 메모리 기반 데이터 처리로 기존 대비 성능을 10~100배 개선하였다. 특히, Spark는 Scala라는 함수형 언어로 구현되었고, 이전에 Java 기반의 빅데이터 처리 코드를 보다 명료하고 Compact하게 구현할 수 있다. 데이터 분석에는 Imperative 언어보다 함수형 언어가 보다 적합하다.
3. 소프트웨어 공학에서의 데이터 분석 사례 - 최근 Software Analytics, Repository Mining 등 데이터 분석 사례들이 있고, 최근 GitHub 이나 StackOverflow 분석과 같은 빅데이터 분석 연구들이 진행되고 있다.
4. Spark를 활용한 Word Count 예
5. Big Data Software Engineering - 큰 데이터 처리 외에도, 실시간 데이터 처리 (Velocity), 다양한 데이터 처리 (Variety) 부분에도 소프트웨어 공학 적용이 필요하다. 또한, Big Data Software를 Engineering하는 부분에도 관심이 필요하다. Big Data 분석 코드 역시 SE의 대상으로 바라보고, Test Driven Dev, Agile Methodology와 같은 개발 방법의 적용을 살펴볼 필요가 있다.
마지막으로, 현재 빅데이터 기술에 대한 진입 장벽은 많이 낮아졌고, 사용 가능한 오픈소스들이 많다. 소프트웨어 공학자라면 빅데이터 분석을 직접 시도해 볼 필요가 있고, 특히, Spark-Scala는 향 후 더욱 발전 확대될 기술이다.
클라우드 기반 데이터 웨어하우스(DW)에 대한 사장의 선택지가 풍부해지고 있습니다.
DW 구축과 운영방식을 송두리째 바꿀 클라우드 DW의 기술적 특징과 시장에서 주목하는 AWS RedShift에 대해 살펴보세요.
목차
1. 시작하면서
1) Database 아키텍처와 고려사항
2) 최근까지의 7가지 트렌드
3) Big Data 도전 과제
2. AWS Big Data 전략
4) Data Store 관점에서의 AWS 서비스
5) Big Data Architecting process
6) AWS Big data 서비스
3. AWS RedShift 소개
이미지 프로세싱 in Python Open Source - PYCON KOREA 2020Kenneth Ceyer
파이썬의 이미지 프로세싱은 Computer Vision과 Deep Learning 연구자들과 개발자들이 많이 사용하고 있으며,
라이브러리 생태계는 지속적으로, 발전하고 있고 요구되고 있습니다.
하지만, 여전히 오픈 소스 생태계에서 제공되는 라이브러리들의 기능으로는 섬세한 이미지 편집을 지원하지 못합니다.
즉 앞으로도 꾸준히 파이썬 이미지 프로세싱 라이브러리의 생태계는 기여와 발전이 필요합니다.
저는 유연하고 자유로운 이미지 편집을 파이썬에서 수행하기 위해 Pillow와 Wand, OpenCV를 병행하여 사용하였으며,
때로는 지원하지 않는 기능이나 버그로 인해 오픈 소스 생태계의 코드를 직접 수정하고 기여한 적이 있습니다.
이를 위해서 이미지 프로세싱의 깊은 이해를 바탕으로, 이미지 프로세싱 코드를 직접 다루어야 했습니다.
오늘 여러분에게 제가 겪었던 경험과 시행착오들을 짧고 간결하게 정리하여 공유드리고자 합니다.
저의 경험을 양분으로 여러분에게 어떤 인사이트가 되었으면 좋겠습니다.
Let's look at the LP algorithm for finding the optimal solution with an example.
LP is a methodology for solving problems in the form of first-order functions with objective functions and constraints
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019Kenneth Ceyer
올바른 코드 작성을 고민하는 연구자들을 위하여 - 클린코드는 여러분의 코드를 복잡한 패턴으로 구현하여 시간을 잡아먹는, 겉만 화려한 장식이 아닙니다. 모델을 구현하고, 또 그것을 테스트 할 때 이것이 정말 올바른 코드인지 궁금하셨나요? 이 세션에서는 연구 모델을 작성할 때 발견할 수 있는, 빈번한 코드 악취(Code smell)들과, 그것들을 어떻게 없앨 수 있을지에 대해서 알아봅니다. 코드에 영혼을 불어넣고, 그 어떤 코드라도 부끄럽지 않게 구현할 수 있는 연구자들이 되어봅시다!
gRPC와 goroutine 톺아보기 - GDG Golang Korea 2019Kenneth Ceyer
우리가 마법으로만 알고 사용하고 있었지만,
어느날 우연히 그 원리가 미칠듯이 궁금하진 않으셨나요?
가끔씩 몸에 좋다고 먹는 홍삼 진액이, 비싼돈 주고산 아카시아 꿀이
대체 어떻게 몸에 좋은 것인지 위키에 검색해보고 싶진 않으셨나요?
고 언어에는 고루틴(Goroutine)과 gRPC가 있습니다.
우리가 이 두가지의 테크닉을 사용하건 하지 않건 한번 쯤 좋다고 들어봤을 것입니다.
대체 이 마법과도 같은 기능이 어떤 원리로 구성되어 있을까요?
이 세션에서 우리는 다시 초심으로 돌아와
순수한 마음으로 이 두가지의 테크닉의 심연을 들여다봅시다.
그리고 다른 언어들은 이런 기능을 어떻게 대체하고 있을지 살펴봅시다.
Let's check the basic of "how to use Vim".
And there are tricks to use Vim easier by downloading the plugin.
These fundamental guide slides which be able to use Vim editor by just a few knowledge.
The `Right way` of testing and refactoring is so ambiguous to put in the real world, Especially, Business situation.
Let's look in deep the testing and refactoring at the perspective of a developer who works for a business situation.
9. 데이터분석가를 위한 서비스도 많습니다.
Jupyter with plotly shiny from R studio
10. 데이터 시각화를 바라보는 관점
백엔드 개발자, 엔지니어
정형화? 비정형화?
groupby 하는가?
drilldown은 얼마나?
데이터의 양은 얼마나?
batch? ad-hoc? stream?
데이터를 어디로 넘겨주어야 하나
cache는 어디까지?
로그 어디다가 쌓을까요?
제플린 띄워서 날로 먹자
데이터 사이언티스트
matplotlib, numpy 짱짱맨
cluster 분포는 잘 되어있나?
각 step별 정확도 변화를
시각적으로 파악
실제 데이터와 예측된 데이터의
차이점을 시각적으로 파악
헠헠 라벨을 보자!
마케터
날짜별 DAU가 얼마지?
날짜별로 어뷰징 예상유저 비율은?
게임에서 딸기를 먹은 유저 모수가 필요해
A 광고에서 들어와서 게임을 설치하여
3스테이지까지 완료한 사용자의 평균 결제금액은
프론트 개발자
D3 쓸까 highchart 쓸까
canvas or svg?
raphael을 써야하나
이건 지원안해요 직접 만들어야 해요!!
11. 그들이 실제로 사용하는 것
백엔드 개발자, 엔지니어
RDBMS, NoSQL, DW, Query
engine
Hadoop layer (cf. Spark, Impala,
Pig)
Cloud based database
ETL Process
Workflow
…
데이터 사이언티스트
iPython, Jupyter
TensorBoard
matplotlib, numpy
geoplotlib
seaborn
gleam
ggplot2
plotly
R
…
마케터
Tableau
PowerBI
Google Data Studio
…
프론트 개발자
D3, C3, NSD3
Raphael
Datatable
…
12. 데이터 시각화 작업 흐름도
x field
y field
size
legend
axes
extraformat
4. parameters
label
type
3. post-process
groupby
orderby
filter
pivot
prediction
5. result2. datasource1. gathering /
crawling
13. 1. gathering / crawling
• 의미있는 데이터의 최소단위로 중복 없이 끌어와야 함.
• 이미 로그파일이 있다면 Batch를 통해 의미있는 데이터 가공.
• 이미 데이터가 Database, Search Engine에 있다면 Workflow를 통해 수집.
• Phantom.js, Scrapy, Apache Mhaout 등의 오픈소스를 이용해 크롤링.
• 공유된 머신러닝 데이터 시트등을 직접 수집하여 업로드.
시각화할 데이터를 수집하는 단계
14. 2. data source
• 중복 없는, 같은 포맷의 데이터
• 알려진 형식의 데이터파일 (CSV, TSV, JSON, …)
• field와 value로 구성된 dataframe (date: 2017-10-13, column1: 6.2)
• 원격 파일의 경우 알려진 프로토콜의 접근형식 (http, jdbc, thrift,
protobuf, …)
• 데이터소스가 데이터베이스라면 RDBMS인지 NoSQL인지, DW인지
파악이 필요
• 비정형화 데이터라면 데이터를 접근할 수 있는 metadata가 있는지 파악
시각화할 대상의 데이터
15. 3. post-process
• groupby: 데이터 유사한 필드를 가진 여러 행을 하나의 행으로 묶는 과정 (ex. relational
chart)
• orderby: 특정 필드 기준으로 데이터 순서를 정렬하는 과정
• filter: 조건에 맞는 행만 추출하는 과정 (ex. interaction navigating chart)
• pivot: groupby와 유사하지만 유사한 필드를 가진 여러행을 묶어 각 열로 피벗
• prediction: 현재 가지고 있는 데이터를 바탕으로 예측되는 데이터를 만들어내어
Trendline 혹은 또 다른 축으로 추가 (linear, exponential)
데이터소스의 데이터를 후가공하는 과정
16. 4. parameters
• xfield: x 필드의 값 (line, area, scatter, matrix, bubble)
• yfield: y 필드의 값 (line, area, scatter, matrix, bubble)
• value: 일반적인 값
• size: 특정 좌표의 bullet의 가중치 (크기 혹은 색상의 진하기)
• format: 값의 형식 (number, date: yyyy-MM-dd, …)
• legend: 범례
• label: 특정 좌표의 bullet의 text
• axes: 차트의 축
• extra: 추가적인 정보들 (각 영역별 관계, 순서, z 값, …)
차트 타입별로 요구되는 각각의 속성들
17. 5. result legend group A group B
x label
y label
axes
dot, bullet
size (size)
size (opacity)
x: 7.2, y: 4.6
balloon
10.624
label
guideline
20. BI (Business Intelligence)
• 앞서 보셨듯이 데이터에서 의미있는 값을 도출해내는 과정이 복잡함.
• 이 과정을 조금 더 쉽게하는 도구를 만듦.
• 그것이 Business Intelligence.
Apache incubator project Superset
21. BI에서의 데이터 시각화
data source
BI integrated store
ETL / UNLOAD
(BI handle)
readable file
CSV TXT JSON TSV
Read
(BI handle)
user interface
dimension metric filter options
Painting
result
Image
Table
(Text)
Canvas
SVG
OpenGL
WebGL
gathering / crawling
Apache
Mahout
phantom R
Logs /
Queue
Integrated API / Upload
(BI handle)
DW / OLAP / RawFile
Presto Impala CSV
Databa
se
Query / Decompress
(BI handle or direct query)
post-process, rendering
python R Query
Java
(Scala)
Convert
회색으로 변한 작업들이 모두 생략됨!
25. 런칭을 앞둔 BI
런칭이 한달도 남지 않은 Business Intelligence 솔루션
Campaign Intelligence from IGAWorks
26. 고군분투
• 반복된 일로 고단한 불쌍한 마케터를 위한 BI를 설계함.
• 그러면서도 개발자를 위해 Query, data append API를 열어둠.
• 여러 데이터소스 타입을 지원하기 위해 추상체를 쌓아올림.
27. BI에서의 데이터 시각화
ETL / UNLOAD
(BI handle)
readable file
CSV TXT JSON TSV
Read
(BI handle)
user interface
dimension metric filter options
Painting
result
Image
Table
(Text)
Canvas
SVG
OpenGL
WebGL
integrated datasource
Google
Adword
s
Facebook
Insight
Google
Youtube
Data API
Mobile
Index
Integrated API / Upload
(BI handle)
DW / OLAP / RawFile
Presto Impala CSV
Databa
se
Query / Decompress
(BI handle or direct query)
post-process, rendering
python R Query
Java
(Scala)
Convert
회색으로 변한 작업들이 모두 생략됨!
data source
BI integrated store