4. 데이터 과학(Data Science)을 논의할 때 쉽게 간과하는 부분들
Engineering 적인 요소들
Data Preparation or Data
Munging
DEVIEW 2014 MyFitnessPal, Inc.
오늘의 주제
5. DEVIEW 2014 MyFitnessPal, Inc.
Data Preparation 또는 Data Munging 란?
A laborious process of manually extracting, mapping,
converting or generally cleaning up data in raw form. Data
wranglers use algorithms (a process or set of rules to be followed
in calculations or other problem-solving operations, especially by a
computer) to parse disparate types of data and fit it into defined
structures. The ultimate goal is to prep the data for storage and
future use.
!
출처: Data Science 101: Definitions You Need to Know at 7th Annual Media Technology Summit
알고리즘 또는 데이터 서비스 개발의 전단계로, 확보한 데이터의 원형을 사용
하기에 가장 적합한 모습으로 변환시켜 주고 최소한의 품질 보장을 위해 데이
터를 깨끗하게 정리해 주는 단계
6. DEVIEW 2014 MyFitnessPal, Inc.
데이터를 “준비”하는 과정의 필요성 1
집단지성을 통해 축적된 빅데이터의 효율적인 이용을 위해
사례: 건강/다이어트 관련 빅데이터
7. 사례: 유사한 음식들과 철자법이 틀린 음식 이름들
유사한 음식들 틀린 철자법
DEVIEW 2014 MyFitnessPal, Inc.
데이터를 “준비”하는 과정의 필요성 2
비정형 데이터의 노이즈를 제거하기 위해
음식: 자장면
자장면
짜장면
간자짜장
자장컵라면
생짜장면
직화 생짜장 & 짜장먼 면
냉동짜장면
채식 짜장면
일품짜장면
삼선짜장면
…
…
실제 데이터
8. DEVIEW 2014 MyFitnessPal, Inc.
데이터를 “준비”하지 않았을 때 일어날 수 있는 문제들
• 데이터 분석 및 통계적인 접근이 원천적으로 어려워짐
!
• 데이터 서비스들의 품질 저하 및 개발의 문제
• 검색, 추천엔진, Analytics등
!
• No Ground-Truth
!
• 불필요한 데이터를 처리할 때 발생할 수 있는 효율성의 저하와
비용 문제
!
• 그 외의 수많은 문제들
9. DEVIEW 2014 MyFitnessPal, Inc.
오늘 발표할 내용들
• 비정형 데이터의 노이즈를 제거 하기
• 데이터 Cleaning 사례 소개
• 음식 데이터의 Cleaning, Standardization & De-duplication
!!!
• 집단지성을 통해 축적된 빅데이터의 효율적인 이용
• Text Classification 사례 소개
• 음식 데이터의 Classification
!
Joint work with Aadhar, Joohyun, Jiang, Stu, Serge and others
SNS, Content, Web 2.0, Health 2.0등의 회사에서 보편적으로 다루어야 하는 데이터 과학 문제들
12. 회사명: McDonald’s
음식 이름: Cheese Burger
국가명: USA
DEVIEW 2014 MyFitnessPal, Inc.
음식 데이터의 Cleaning과 Standardization의 예
회사명: Non-Available
음식 이름: My Mcdonnald’s Cheese
Burger - USA
국가명: Non-Available
아직 정리 되지 않은 상태 정리된 상태
음식 이름 관련:
• Stop-words, punctuations, unnecessary
de-limiters의 제거
• 사용자들과 연관된 음식이름 제거/cleaning
• 음식 이름에서 국가명 및 음식 이름과 관련이 없
는 내용들은 삭제
• 저속한 단어들 제거
회사명 관련:
•Standardize
•Normalize
•음식 이름에 포함되어 있는 회사명은 제거
13. 음식 데이터의 Cleaning과 Standardization의 구현 방식
1번째 단계 : Cleaning Library 개발
Dictionary Based Heuristic
DEVIEW 2014 MyFitnessPal, Inc.
•기본적인 “Cleaning” 룰들과 Workflow를 디자인함
•기획자들과의 긴밀한 대화는 필수
•필요한 dictionary와 그에 필요한 자료 구조를 구현
•필요한 regular expression이나 library를 구현
•Parsing/Tokenize할때 자연어 처리 기술의 사용을 고려함
2번째 단계 : 개발한 Cleaning Library를 서비스나 Offline flow 에 embed
14. 고려해야 할 부분들
• 데이터 인프라 (data infrastructure)
• Streaming setting에서 on-line으로 처리할 지, 혹은
off-line으로 처리할 지를 결정하는 것이 중요함
• On-line일 경우: message passing을 이용한 infra
(e.g. Kafka & Akka Service) 를 고려해 볼 수 있음
!
• Off-line일 경우: Hadoop+Pig 또는 Spark의 사용을 고려
해 볼 수 있음
!
!
• 처리 속도 (computation speed)
• 대용량 데이터를 처리함에 있어 library의 속도 및 resource의
DEVIEW 2014 MyFitnessPal, Inc.
공유가 중요함 : dictionary, data model 등
15. 고려해야 할 부분들 - Cont.
• 버전 관리 및 Grand-fathering (version control)
• 새로운 dictionary나 데이터 모델 그리고 library에 맞게 기존
DEVIEW 2014 MyFitnessPal, Inc.
의 데이터를 변환시켜 주어야 함
!
!
• Internalization(i18n)/Localization(L10n):
• 영어 vs 중국어 처리 기술
16. 회사명을 Standardize & Normalize 하기 위한 기본적인 방법
회사명: Mcdonald, Mc Donalds, McDonald 회사명:McDonald's
회사명: Chipotle Restaurant, Chipotle 회사명: Chipotle
아직 정리가 되지 않은 상태 정리된 상태
DEVIEW 2014 MyFitnessPal, Inc.
Standardize
Normalize
Approximation String Matching 문제와 밀접한 관계
!
A. String Similarity의 문제 : 주어진 2개의 다른 문자열(String)의
similarity를 어떻게 찾을 것인가?
!
B. Approximate String Matching의 문제 : 문자열 A가 주어 졌을때
가장 비슷한 문자열 B를 어떻게 찾을 수 있는가?
17. 문자열(String)들을 비교할 때 사용될 수 있는 Similarity Measures
DEVIEW 2014 MyFitnessPal, Inc.
!
•Jaccard Similarity
!
•Hamming Distance
!
•Edit Distance (Damerau–Levenshtein
distance)
•Dynamic Programming방식을 사용함
•가장 보편적인 방식
!
•Smith–Waterman
Distance
•생명과학쪽에서 많이 사용함
•바이오의 유명한 BLAST에 사용됨
!
•etc.
!
18. DEVIEW 2014 MyFitnessPal, Inc.
Approximate String Matching 문제 (NN-Search)
사용 가능한 방식 1
!
•Tree/Trie를 사용하는 방식
•Radix Tree를 사용
•Time Complexity를 O(dnk)에서
O(dn log(k))로 획기적으로 줄일
수 있음
!
여기서
!
•n=대조해 보고자 하는 문자열(string) 수
•d=주어진 문자열 (string) 의 글자 수
•k=문자열(string) 길이의 평균 값
19. Approximate String Matching 문제 (NN-Search) - Cont.
DEVIEW 2014 MyFitnessPal, Inc.
사용 가능한 방식 2
•Dimension Reduction 방식
•Locality Sensitive Hashing 같은 방법들을 사용
!
•Time complexity를 constant time 즉 O(k+d)로
줄일 수 있음
•Text에 사용하기에는 한계가 있음
•False positives의 가능성
20. DEVIEW 2014 MyFitnessPal, Inc.
고려해야 할 부분들
!
• 사용되어질 다양한 자료 구조들의 concurrency 부분들에 대해서
신경을 써야함.
• 예: Google에서 개발한 concurrent tree library를 사용함
!
• Metric의 정의
• Data Scientist가 되기 위한 필수 조건
• Communication 스킬이 중요함
21. DEVIEW 2014 MyFitnessPal, Inc.
음식 데이터 Cleaning 결과
!
•회사명 개수를 25%으로 줄이는 데 성공
!
•25%-35%의 음식 아이템들을 “적합”
한 새로운 모습으로 변환 시킴
성공!
22. DEVIEW 2014 MyFitnessPal, Inc.
데이터 Cleaning 결과를 검색에 적용했을 때 1
Brand Misspellings/Errors “mcdonals”
Before After
23. Not so good Better
DEVIEW 2014 MyFitnessPal, Inc.
데이터 Cleaning 결과를 검색에 적용했을 때 2
검색 성능 개선
Before After
25. DEVIEW 2014 MyFitnessPal, Inc.
음식 데이터의 De-duplication이란?
채식짜장면
자장면
짜장면
생짜장면
간짜장면
짬뽕 잠뽕
짬뽕면
자장면
짬뽕
삼선짬뽕
삼선짜장
짜파게티
De-duplication 과 Clustering는 다름
(semantics 접근하고는 다름)
26. DEVIEW 2014 MyFitnessPal, Inc.
Near De-duplication의 간략한 역사
• 웹페이지, 전자 상거래 데이터, 의료 데이터, 주식시장 데이터, 기
상 데이터 등에서 de-duplication문제를 해결하기 위해 다양한
방법들이 동원 되어 왔음
!
• De-duplication을 풀기 위해 필요한 similarity를 정의 하는 방
법중에 가장 쉽고 보편적으로 사용되는 방식은 k-shingling 방식
!
• De-duplication 하려는 아이템의 종류에 따른 접근 방식
• 유럽권 언어를 기초로 한 텍스트를 다룰 때에는 spotsig을 사
용하면 성능이 여러가지로 개선됨
• 멀티미디어 데이터들에서는 다양한 dimension reduction 방
법들 중 Locality Sensitive Hashing 접근들이 인기
(SimHash,MinHash, etc)
27. DEVIEW 2014 MyFitnessPal, Inc.
Shingling을 이용한 de-duplication
문자열 A=McDonald Cheese Burger
문자열 B=McDonald Cheese Burger with
Onions
!
Fingerprints를 가지고 문자열들을 비교 할 수 있음
!
• K-Shingles 들을 문자열들로부터 만들기
• K-bit (e.g. 64) fingerprints들을 만들기
• 그렇게 해서 만들어진 fingerprints들을 가지고 문자열들의 similarity들을 계산할 수 있음
!
가장 보편적으로 사용할 수 있는 De-duplication algorithm 방식은 greedy algorithm을
incrementally하게 적용 하는 방식.
!
• near real-time으로 구현하기 위해 적합
K-Shingles(A)={McDonald Cheese,
Cheese Burger}
K-Shingles(B)={McDonald Cheese,
Cheese Burger, Burger Onions}
비교하고자 하는 2개의 문자열 비교하고자 하는 2개의 문자열의 K-Shingles
28. DEVIEW 2014 MyFitnessPal, Inc.
De-duplication을 구현할 때 고려해야 할 부분들
• 음식 아이템들은 짧은 텍스트이기에 shingle의 사이즈는 그렇게 중요하지 않음
!!
• 처리해야 할 데이터의 양이 늘어 날수록 shingling 방법이 충분하지 않을 수 있음.
!
• on-line greedy 방식으로 구현하게 되면 shingles, duplicate data info 데이
터들을 색인하는 속도와 Look-up 속도가 급속도로 (exponentially) 느려짐.
!
• 1억 단위의 문자열들을 처리하기에는 확장성의 한계가 있음
29. De-duplication을 구현할 때 고려해야 할 부분들 - cont.
DEVIEW 2014 MyFitnessPal, Inc.
!
• 최적화된 similarity 값을 찾는 것은 쉽지 않음.
• 특별히 문자열에 관한 데이터만을 이용해서 Near duplicates을 가지고 찾을 때
에는 한계가 분명이 있음.
• 예: McDonald Cheese Burger vs McDonald Cheese Burger with
Onions, Lettuce, Cheese, Pickles, Catchup
!
!
• 그래서 생각해 볼 수 있는 것이 dimension reduction의 접근
• Locality Sensitive Hashing
30. Locality Sensitive Hashing (LSH)의 기본적인 아이디어
DEVIEW 2014 MyFitnessPal, Inc.
• N개의 아이템들을 n차원 공간 속의 벡터들로 취급
!
• n차원 공간안에, k개의 hyper-plane들을 임의
(randomly)로 만든다
!
• 모든 hyper-plane을 상대로:
• 아이템이 hyper-plane의 상위에 존재하는지
(1로 표현) 아니면 하위에 존재하는지 (0으로
표현) 를 물어 본다.
!
!
• 여기서 중요한 것은 어떻게 hyper-plane을 임의
로 만들어 낼 수 있느냐
아이템 1
아이템 2
h1
h2
h3
n=2 , k =3
Hash(아이템 1) = 011
Hash(아이템 2) = 001
31. DEVIEW 2014 MyFitnessPal, Inc.
LSH + Shingling
• 음식 아이템의 “영양 정보”를 이용함
• 음식의 영양 정보를 벡터로 취급함
영양정보 벡터에 1차로 LSH 를 적용하여 비
슷한 음식들끼리 1차로 분류함
!
1단계
1차의 결과들을 shingling을 이용한
de-duplication으로 다시 처리
!
2단계
벡터의 Dimension이 Finite하기 때문에 가능
34. 음식 데이터의 classification (supervised learning 문제)
Dairy Eggs and Cheese
Bread, Cereal, Rice, and Pasta
Meat, Poultry, Fish, Dry Bean, Eggs, Nuts
DEVIEW 2014 MyFitnessPal, Inc.
Beverages
Snacks and Candy
Fruits
Vegetables
음식 아이템을 다양한 음식 종류로 분류하기
음식 종류에 따라
분류
Classify
이런 문제를 Multi-Label Classification 이라고 함
35. DEVIEW 2014 MyFitnessPal, Inc.
기계 학습(Machine Learning)의 기본 workflow
학습 데이터 학습 모델 실제 데이터 분류
Classification을 하는 기본적인 방식
• 학습 데이터의 확보가 문제!
• 학습 데이터 양의 문제
• 학습 데이터 질의 문제
• Clean한 데이터를 확보 하는 것이 중요함
!
• 데이터 => 성능
36. 학습 데이터 학습
DEVIEW 2014 MyFitnessPal, Inc.
+
Naive Bayes
SVM
Decision Trees
KNN
Ensemble Methods
…
기본적인 접근 방식
다양한 알고리즘
사람이 직접 하기
Crowd-Sourcing
서비스 이용
OR
37. 400만개가 넘는 음식 DB!
+
고려해 볼 수 있는 방법이 Semi-Supervised Learning 방식의 접근 또는
Representation Learning의 접근 방식 (딥러닝이 가장 좋은 예)
DEVIEW 2014 MyFitnessPal, Inc.
대용량 기계 학습
빅데이터
기계 학습
38. DEVIEW 2014 MyFitnessPal, Inc.
빅데이터를 가지고 학습 데이터 만들기
•Word2Vec이라는 기술을 이용하여 문자열(string)들의 상호 관계성을 계산함
•Deep learning적인 접근 방법
!
•문자열(string)들의 상호 관계성을 가지고 좀 더 rich한 feature vector를 만듬
• Transductive SVM을 Big Data로 구현함
•90% 이상의 accuracy를 자랑함 (20% 이상의 성능 개선)
•Word2Vec이나 transductive SVM 기술을 이용할 때 데이터를 cleaning하고
standardize 하는 것이 아주 중요함
39. DEVIEW 2014 MyFitnessPal, Inc.
고려해야 할 부분들
• 특화된 cleaning과 standardization 방식의 문제
!
!
• 정화된 데이터를 feature로 전환하는 방식의 문제
!
!
• 학습 데이터를 빅데이터에서 sampling 하는 부분
!
!
• 학습 데이터의 양을 최적화 하는 부분
40. 결론
• 데이터 과학 (data science) 에서 중요한 영역 중 하나
가 data preparation 분야
!
!
• 알고리즘과 heuristic 방식들을 적절하게 섞어서 사용하
는 것이 중요 (intuition이 중요)
!
!
• Engineering 접근과 science 접근의 적절한 조화
!
!
• 기획자들과의 소통이 중요함
DEVIEW 2014 MyFitnessPal, Inc.