ݺߣ

ݺߣShare a Scribd company logo
+
링크드인의 Big Data Recommendation Products
-어제의 데이터를 통해 내일을 예측한다-

김형진(Evion Kim), Senior Software Engineer
추천(Recommendation)이란?
내가 좋아하는 음식,
내가 보고싶어하는 영화,
내가 읽고 싶어하는 책,
내가 알만한 사람,
내가 데이트 하고싶은 여자(남자),
를 알려주세요.

…그걸 어떻게 알아?

+
+

추천(Recommendation)이란?

점쟁이의 돗자리다.

마녀의 수정구슬이다

= 예언 or
예측!
추천(Recommendation)이란?

+

예측(Prediction) 이다.
사용자에게 x1, x2, x3…로 구성되는 정보를 보여주었을 때, 과연 어떤 반응을
보일 것인가 예측

예측을 바탕으로 사용자에게 더 관련성 높은 정보를 제공
예측은 어떻게?

여자 손님은 스파게티를 좋아하시더라
20대 남자는 액션이 많고 플롯이 탄탄한 영화를 많이 보더라
개발자 남자에게는 개발자 여자를 소개팅 시켜주면 좋아하더라.
그러니까 이 메뉴/이 영화/이 개발자 를 추천해주자.
=>과거의 데이터를 기반으로 미래의 사용자의 행동을 예측

+
미리보는 결론 - 그래서, 링크드인에게 추천이란?

+

추천은 예측이다.

예측 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”
등을 참고 하였습니다.
발표자 - 김형진

Software Engineer/Data Scientist

+
오늘의 발표
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. 결론

+
1. Big Data @ LinkedIn
LinkedIn: 프로페셔널 소셜 네트워크

+

2억 3천 8백만 사용자
링크드인의 추천 프로덕트들

+

People You May Know – 친구 추천
Skills and Endorsements – 누구의 어떤 스킬을 승인(like)할 것인가?
Jobs You May be Interested In – 어떤 새 직장에 관심이 있을 것인가?
News Recommendation – 어떤 뉴스를 읽고 싶은가?
Skill Endorsements

+
+

특징 1. Big Data Ecosystem

하둡 클러스터

유저 인터랙션 데이터

Key/Value Store
특징 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)

데이터 모델링, 분석 레벨의 지식과
인프라스트럭쳐 레벨의 지식이 분리됨.
+

특징 3. Online VS. Offline

장점

사용자에게 최신의 정보를 제공
가능

더 빠른 개발과 iteration
Scale 쉬움
Failure toleration

단점

더 긴 개발시간
Scale 어려움
Failure handling에 더 신경써야함

최신의 정보를 제공 할 수 없음

Online

Offline

Massive Scale Machine Learning및 Data generation은 Offline에서,
Filtering, 최종 Business Logic 적용 등은 Online에서
2.Supervised Machine
Learning 기반의 추천
머신 러닝 기반의 추천

+

Supervised 머신 러닝
과거의 데이터를 통해 모델을 train
train 된 모델을 사용하여 실제로 예측
Binary Classification
결과가 1/0으로 나오는 supervised 머신 러닝 문제
다양한 Binary Classification 알고리즘들
Decision Tree, Support Vector Machine, Logistic Regression, …
머신 러닝 기반의 추천
과거
주어진 상황(feature f1, f2,~ fn) 하에서, 유저 x의 행동을 관찰
유저가 클릭: Score = 1
유저가 무시: Score = 0
현재
데이터를 바탕으로 모델을 training 시킬 수 있음
주어진 과거 데이터의 오류를 최소화 하는 모델을 만듬
미래
조건부 확률 P(Click y | user x views y with f1, f2, .. fn) 을 계산
만들어진 모델을 통해 미래의 유저 반응을 예측

+
3.Big Data Recommendation
Product 만들기 – Step By Step
+

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
+

Intuition

Feature
Extraction

Model
Building

Data
Generation

Serving
Data
Recommendation Product - 1. Intuition

+

프로덕트 아이디어와, 그 아이디어에 대한 가정에서 부터 시작
프로덕트 아이디어: Suggested Endorsements
어떤 사람의 어떤 스킬을 Endorse(승인) 할 것인지 추천하여 주자
가정
1. Overlap: 상호간에 학교, 회사등을 함께 다닌 기간이 길수록
2. Similarity: Industry, Title등이 유사할수록
3. Skill score: 해당 스킬에 대해 더 잘 알 수록

Endorse 버튼을 클릭 할 가능성이 높을 것!
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.
+

Intuition

Feature
Extraction

Model
Building

Data
Generation

Serving
Data
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.
Recommendation Product - 2. Feature Extraction

+

Problem:
한 유저가 얼마나 스킬을 잘 아는지를 feature 로 쓰고 싶다. 어떻게 해야
할까?
Solution:
Skills Score 라는 다른 프로덕트의 output을 Suggested Endorsement의
input으로 활용.
+

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
Skills Score

+

3. Bayes Theorem을 통해 각 프로필별 스킬에 대한 확률 계산이 가능

Apple 에 다니고, Software Engineer라면, “iPhone development”란
스킬을 알 확률이 높을 것이다.
P(iPhoneDevelopment | Apple, SoftwareEngineer) =

p(iPhoneDevelopment)p(Apple, SoftwareEngineer | Java)
p(Apple, SoftwreEnginer)
+

Intuition

Feature
Extraction

Model
Building

Data
Generation

Serving
Data
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
3. Model Building – Problem & Solution

+

Problem: Hadoop하에서 머신 러닝 모델링을 하기 위한 방법?
Solution:
1.Sampling 후 R 등의 통계 패키지를 이용한 모델 러닝
- Feature의 숫자가 적고, 빠른 iteration이 필요한 경우
2.ADMM framework
- Feature의 숫자가 많을 경우, 모델 러닝 자체를 분산 시스템 하에서
실행하고싶은 경우
- 여러 다른 머신에서 각자 learning후, 각각의 결과를 합산
- 합산된 결과를 바탕으로 다시 iterate
+

Intuition

Feature
Extraction

Model
Building

Data
Generation

Serving
Data
+

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
4. Data Generation – Problem
실제 한 데이터 프로덕트의
Workflow
Feature Generation, Join,
실제 모델 적용 등
다양한 Hadoop Job들 간의
dependency
Managing 할 Solution이 필요

+
4. Data Generation – Solution: Azkaban
Azkaban: Linkedin‟s open source project
Dependency 관리
다양한 Job type:
Pig, Hive, Java
스케쥴링
모니터링
로그 관리
Visualization
Configuration
Failure시 재시작
리소스 locking 관리

+
+

Intuition

Feature
Extraction

Model
Building

Data
Generation

Serving
Data
+

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
4. Analytics Examples
Data Scientist가 되고 싶다면?

+
유행하는 스킬?

+
지역별 스킬의 차이

+
+
San Francisco

Redwood City

Mountain View

San Jose
San Francisco

Application

Presentation
Redwood City

Network &
Transport

Mountain View

San Jose

Data Link &
Physical
5. 결론
결론 – 링크드인에게 추천이란?

+

추천은 예측이다.

예측 Algorithm
어제의 데이터를 분석하여 내일의 사용자의 행동을 예측하는 머신 러닝
알고리즘

예측 Infrastructure
Hadoop, Key-Value Store, 각종 오픈 소스 프로덕트를 활용한
링크드인의 빅데이터 에코시스템
data.linkedin.com

More Related Content

링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다

  • 1. + 링크드인의 Big Data Recommendation Products -어제의 데이터를 통해 내일을 예측한다- 김형진(Evion Kim), Senior Software Engineer
  • 2. 추천(Recommendation)이란? 내가 좋아하는 음식, 내가 보고싶어하는 영화, 내가 읽고 싶어하는 책, 내가 알만한 사람, 내가 데이트 하고싶은 여자(남자), 를 알려주세요. …그걸 어떻게 알아? +
  • 4. 추천(Recommendation)이란? + 예측(Prediction) 이다. 사용자에게 x1, x2, x3…로 구성되는 정보를 보여주었을 때, 과연 어떤 반응을 보일 것인가 예측 예측을 바탕으로 사용자에게 더 관련성 높은 정보를 제공
  • 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” 등을 참고 하였습니다.
  • 7. 발표자 - 김형진 Software Engineer/Data Scientist +
  • 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. 결론 +
  • 9. 1. Big Data @ LinkedIn
  • 10. LinkedIn: 프로페셔널 소셜 네트워크 + 2억 3천 8백만 사용자
  • 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) 을 계산 만들어진 모델을 통해 미래의 유저 반응을 예측 +
  • 19. 3.Big Data Recommendation Product 만들기 – Step By Step
  • 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
  • 39. Data Scientist가 되고 싶다면? +
  • 43. San Francisco Application Presentation Redwood City Network & Transport Mountain View San Jose Data Link & Physical
  • 45. 결론 – 링크드인에게 추천이란? + 추천은 예측이다. 예측 Algorithm 어제의 데이터를 분석하여 내일의 사용자의 행동을 예측하는 머신 러닝 알고리즘 예측 Infrastructure Hadoop, Key-Value Store, 각종 오픈 소스 프로덕트를 활용한 링크드인의 빅데이터 에코시스템