DEVIEW 2013 발표 내용입니다 - http://deview.kr/2013/detail.nhn?topicSeq=36
링크드인 플랫폼 상의 다양한 Recommendation Product들, 이 제품들의 키워드는 바로 'Relevance(연관성)' 입니다. 가장 관련있는 데이터들을 제공함으로써 사용자의 삶을 더 쉽고 편하게 만들어 주는것이 링크드인 데이터 팀의 목표라 할 수 있겠습니다. 그렇다면 어떻게 해야 사용자에게 가장 연관성 높은 데이터를 제공 할 수 있을까요? 이에 대한 답을 한문장으로 요약하자면 '어제의 데이터를 분석하여 내일의 사용자의 행동을 예측한다' 가 될 것 같습니다.
본 발표에서는 이 한 문장을 좀 더 길게 풀어보려 합니다. 링크드인에서는 Hadoop, Key-Value Storage, Machine Learning등의 기술을 어떤 식으로 활용하여 연관성 높은 Recommendation Product를 만들고 있는지에 대해 소개해보겠습니다.
1 of 46
Downloaded 189 times
More Related Content
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
1. +
링크드인의 Big Data Recommendation Products
-어제의 데이터를 통해 내일을 예측한다-
김형진(Evion Kim), Senior Software Engineer
5. 예측은 어떻게?
여자 손님은 스파게티를 좋아하시더라
20대 남자는 액션이 많고 플롯이 탄탄한 영화를 많이 보더라
개발자 남자에게는 개발자 여자를 소개팅 시켜주면 좋아하더라.
그러니까 이 메뉴/이 영화/이 개발자 를 추천해주자.
=>과거의 데이터를 기반으로 미래의 사용자의 행동을 예측
+
6. 미리보는 결론 - 그래서, 링크드인에게 추천이란?
+
추천은 예측이다.
예측 Algorithm
어제의 데이터를 분석하여 내일의 사용자의 행동을 예측하는 머신 러닝
알고리즘
예측 Infrastructure
Hadoop, Key-Value Store, 각종 오픈 소스 프로덕트를 활용한
링크드인의 빅데이터 에코시스템
본 발표의 내용은, Sam Shah(Principal Software Engineer, LinkedIn)의
“Building Data Products With Hadoop”,
“LinkedIn Endorsements: Reputation, Virality, and Social Tagging”,
“The ‘Big Data’ Ecosystem at Linkedin”
등을 참고 하였습니다.
8. 오늘의 발표
1. 링크드인의 빅데이터
1.
2.
3.
빅데이터 에코시스템
Encapsulation
Offline vs. Online
2. Supervised Machine Learning 기반의 추천
3. Recommendation Product 만들기 – Step By Step
1.
2.
3.
4.
5.
Intuition
Feature Extraction
Model training
Data Generation
Application & Evaluation
4. 분석 example
5. 결론
+
11. 링크드인의 추천 프로덕트들
+
People You May Know – 친구 추천
Skills and Endorsements – 누구의 어떤 스킬을 승인(like)할 것인가?
Jobs You May be Interested In – 어떤 새 직장에 관심이 있을 것인가?
News Recommendation – 어떤 뉴스를 읽고 싶은가?
13. +
특징 1. Big Data Ecosystem
하둡 클러스터
유저 인터랙션 데이터
Key/Value Store
14. 특징 2. Encapsulation
+
시스템에 대해 잘 모르는 데이터 사이언티스트가 Recommendation
Algorithm을 만들고 싶다면?
Analytics/Modeling Layer
R, Linkedin’s Azkaban(Hadoop workflow management),
Apache Pig, LinkedIn’s DataFu
Infrastructure Layer
Hadoop, LinkedIn’s Voldemort(Key/Value storage)
데이터 모델링, 분석 레벨의 지식과
인프라스트럭쳐 레벨의 지식이 분리됨.
15. +
특징 3. Online VS. Offline
장점
사용자에게 최신의 정보를 제공
가능
더 빠른 개발과 iteration
Scale 쉬움
Failure toleration
단점
더 긴 개발시간
Scale 어려움
Failure handling에 더 신경써야함
최신의 정보를 제공 할 수 없음
Online
Offline
Massive Scale Machine Learning및 Data generation은 Offline에서,
Filtering, 최종 Business Logic 적용 등은 Online에서
17. 머신 러닝 기반의 추천
+
Supervised 머신 러닝
과거의 데이터를 통해 모델을 train
train 된 모델을 사용하여 실제로 예측
Binary Classification
결과가 1/0으로 나오는 supervised 머신 러닝 문제
다양한 Binary Classification 알고리즘들
Decision Tree, Support Vector Machine, Logistic Regression, …
18. 머신 러닝 기반의 추천
과거
주어진 상황(feature f1, f2,~ fn) 하에서, 유저 x의 행동을 관찰
유저가 클릭: Score = 1
유저가 무시: Score = 0
현재
데이터를 바탕으로 모델을 training 시킬 수 있음
주어진 과거 데이터의 오류를 최소화 하는 모델을 만듬
미래
조건부 확률 P(Click y | user x views y with f1, f2, .. fn) 을 계산
만들어진 모델을 통해 미래의 유저 반응을 예측
+
20. +
Recommendation Product 만들기
머신 러닝 모델링을 바탕으로 한 추천
하둡 인프라 스트럭쳐 기반,
1. Intuition: 프로덕트 아이디어와 유저의 행동에 대한 가정.
2. Feature Extraction: 모델에 사용할 feature들을 선택하고 수집
3. Model Training: 선택된 feature를 이용하여 모델을 train.
4. Data Generation: Train 된 모델을 적용하여 데이터 생성
5. Serving Data: 추천 데이터 서빙
Intuition
Feature
Extraction
Model
Building
Hadoop Infrastructure
Data
Generation
Serving
Data
22. Recommendation Product - 1. Intuition
+
프로덕트 아이디어와, 그 아이디어에 대한 가정에서 부터 시작
프로덕트 아이디어: Suggested Endorsements
어떤 사람의 어떤 스킬을 Endorse(승인) 할 것인지 추천하여 주자
가정
1. Overlap: 상호간에 학교, 회사등을 함께 다닌 기간이 길수록
2. Similarity: Industry, Title등이 유사할수록
3. Skill score: 해당 스킬에 대해 더 잘 알 수록
Endorse 버튼을 클릭 할 가능성이 높을 것!
23. 1.Intuition – Problem & Solution
+
Problem: 머신 러닝 모델을 만들기 위해서는, Training Data Set이
필요하다.
„최초‟ 의 training 데이터를 어떻게 구할 수 있을까?
Possible Solutions:
Crowd Sourcing
이미 존재하는 데이터로부터 유추
Our Solution: Cold-Start 모델
Intuition에 따라 매뉴얼하게 만든 모델을 일단 활용 하여 데이터를 수집
Example) 유저간의 overlap, similarity에 따라 Sorting. 유저와 스킬사이의 skill
score에 따라 Sorting.
25. Recommendation Product - 2. Feature Extraction
+
모델의 input이 될 feature의 set을 결정하고(feature selection), 해당
데이터를 실제 유저 데이터로부터 가져오는(feature extraction) 과정.
Feature 의 예시:
Overlap: 상호간에 학교를 함께 다닌 개월 수
Similarity: 같은 IT 인더스트리인가?
Skill score: 해당 유저가 스킬을 알 확률을 점수로 나타낸다면
Feature Selection: 실제로 모델에 유용한 feature를 선정
example) Overlap 과 Skill Score가 유용함
Feature Extraction: feature을 모델에 사용가능한 형태로 가져옴
Kafka – 링크드인의 Open Source Distributed Messaging System.
26. Recommendation Product - 2. Feature Extraction
+
Problem:
한 유저가 얼마나 스킬을 잘 아는지를 feature 로 쓰고 싶다. 어떻게 해야
할까?
Solution:
Skills Score 라는 다른 프로덕트의 output을 Suggested Endorsement의
input으로 활용.
27. +
Skills Score
한 유저가 어떤 스킬을 가지고 있을 „확률‟을 계산
1. 각각의 프로필의 feature(타이틀, 회사, 인더스트리)와 스킬에 대해
프로필에서의 co-counts 를 계산
Software Engineer
Software Engineer & Java
Software Engineer & C++
…
1,000,000
100,000
88,000
1. Co-count 를 바탕으로 조건부 확률을 계산
P(Java | SoftwareEngineer) =
100, 000
= 0.1
1, 000, 000
28. Skills Score
+
3. Bayes Theorem을 통해 각 프로필별 스킬에 대한 확률 계산이 가능
Apple 에 다니고, Software Engineer라면, “iPhone development”란
스킬을 알 확률이 높을 것이다.
P(iPhoneDevelopment | Apple, SoftwareEngineer) =
p(iPhoneDevelopment)p(Apple, SoftwareEngineer | Java)
p(Apple, SoftwreEnginer)
30. Model Building
+
Binary Classification 문제로써의 Suggested Endorsements
유저 X가 (유저 Y, 스킬 Z)의 추천을 보았을때
실제로 endorse를 클릭한다면 -> 1
클릭하지 않는다면 -> 0
모델을 통해 P(User X endorses (User Y, Skill Z) | feature 1, feature
2, …)를 계산.
Evion 이 DJ Patti의 Data Mining을
endorse 할 확률 = 0.7
31. 3. Model Building – Problem & Solution
+
Problem: Hadoop하에서 머신 러닝 모델링을 하기 위한 방법?
Solution:
1.Sampling 후 R 등의 통계 패키지를 이용한 모델 러닝
- Feature의 숫자가 적고, 빠른 iteration이 필요한 경우
2.ADMM framework
- Feature의 숫자가 많을 경우, 모델 러닝 자체를 분산 시스템 하에서
실행하고싶은 경우
- 여러 다른 머신에서 각자 learning후, 각각의 결과를 합산
- 합산된 결과를 바탕으로 다시 iterate
33. +
Data Generation
Build 된 모델을 바탕으로 실제 추천 데이터를 만들어 내는 과정
다양한 Java/Pig/Hive Hadoop job 의 조합
각각의 job은 1분 미만 ~ 6시간 이상의 running time을 가짐
Pig Job: Feature 1
Java Job: Feature 2
Pig Job: Join Features
Java Job: Model Based Scoring
Pig Job: Validation
34. 4. Data Generation – Problem
실제 한 데이터 프로덕트의
Workflow
Feature Generation, Join,
실제 모델 적용 등
다양한 Hadoop Job들 간의
dependency
Managing 할 Solution이 필요
+
35. 4. Data Generation – Solution: Azkaban
Azkaban: Linkedin‟s open source project
Dependency 관리
다양한 Job type:
Pig, Hive, Java
스케쥴링
모니터링
로그 관리
Visualization
Configuration
Failure시 재시작
리소스 locking 관리
+
37. +
5. Data Push - Solution
Problem: HDFS에 생성된 추천 데이터를 실제로 유저에게 보여주기
위해선 어떻게 해야할까?
Solution:
Voldemort
Linkedin의 Key Value Storage
Amazon‟s Dynamo 바탕으로 구현
Distributed and Elastic
Horizontally Scalable
Bulk load pipeline from Hadoop
Suggested
Endorsements
Service
getRecommendations(memberId)
Voldemort
Batch load
Hadoop
45. 결론 – 링크드인에게 추천이란?
+
추천은 예측이다.
예측 Algorithm
어제의 데이터를 분석하여 내일의 사용자의 행동을 예측하는 머신 러닝
알고리즘
예측 Infrastructure
Hadoop, Key-Value Store, 각종 오픈 소스 프로덕트를 활용한
링크드인의 빅데이터 에코시스템