링크드인의 big data recommendation products - 어제의 데이터를 통해 내일을...

46
링링링링링 Big Data Recommendation Products - 링링링 링링링링 링링 링링링 링링링링 - 링링링 (Evion Kim), Senior Software Engineer +

Upload: evion-kim

Post on 28-Nov-2014

2.844 views

Category:

Technology


1 download

DESCRIPTION

DEVIEW 2013 발표 내용입니다 - http://deview.kr/2013/detail.nhn?topicSeq=36 링크드인 플랫폼 상의 다양한 Recommendation Product들, 이 제품들의 키워드는 바로 'Relevance(연관성)' 입니다. 가장 관련있는 데이터들을 제공함으로써 사용자의 삶을 더 쉽고 편하게 만들어 주는것이 링크드인 데이터 팀의 목표라 할 수 있겠습니다. 그렇다면 어떻게 해야 사용자에게 가장 연관성 높은 데이터를 제공 할 수 있을까요? 이에 대한 답을 한문장으로 요약하자면 '어제의 데이터를 분석하여 내일의 사용자의 행동을 예측한다' 가 될 것 같습니다. 본 발표에서는 이 한 문장을 좀 더 길게 풀어보려 합니다. 링크드인에서는 Hadoop, Key-Value Storage, Machine Learning등의 기술을 어떤 식으로 활용하여 연관성 높은 Recommendation Product를 만들고 있는지에 대해 소개해보겠습니다.

TRANSCRIPT

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

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

김형진 (Evion Kim), Senior Software Engineer

+

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

+추천 (Recommendation) 이란 ?

내가 좋아하는 음식 ,내가 보고싶어하는 영화 ,내가 읽고 싶어하는 책 ,내가 알만한 사람 ,내가 데이트 하고싶은 여자 ( 남자 ),

를 알려주세요 .

… 그걸 어떻게 알아 ?

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

+추천 (Recommendation) 이란 ?

점쟁이의 돗자리다 . 마녀의 수정구슬이다

= 예언 or 예측 !

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

+추천 (Recommendation) 이란 ?

예측 (Prediction) 이다 .

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

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

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

+예측은 어떻게 ?

여자 손님은 스파게티를 좋아하시더라 20 대 남자는 액션이 많고 플롯이 탄탄한 영화를 많이 보더라개발자 남자에게는 개발자 여자를 소개팅 시켜주면 좋아하더라 .

그러니까 이 메뉴 / 이 영화 / 이 개발자 를 추천해주자 .

=> 과거의 데이터를 기반으로 미래의 사용자의 행동을 예측

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

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

추천은 예측이다 .

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

예측 InfrastructureHadoop, 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”

등을 참고 하였습니다 .

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

+발표자 - 김형진

Software Engineer/Data Scientist

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

+오늘의 발표

1. 링크드인의 빅데이터1. 빅데이터 에코시스템2. Encapsulation3. Offline vs. Online

2. Supervised Machine Learning 기반의 추천3. Recommendation Product 만들기 – Step By Step

1. Intuition2. Feature Extraction3. Model training4. Data Generation5. Application & Evaluation

4. 분석 example5. 결론

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

1. Big Data @ LinkedIn

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

+LinkedIn: 프로페셔널 소셜 네트워크

2 억 3 천 8 백만 사용자

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

+링크드인의 추천 프로덕트들

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

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

+Skill Endorsements

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

+특징 1. Big Data Ecosystem

하둡 클러스터 Key/Value Store

유저 인터랙션 데이터

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

+특징 2. Encapsulation

시스템에 대해 잘 모르는 데이터 사이언티스트가 Recommendation Algorithm 을 만들고 싶다면 ?

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

R, Linkedin’s Azkaban(Hadoop workflow management), Apache Pig, LinkedIn’s DataFu

Hadoop, LinkedIn’s Voldemort(Key/Value storage)

Analytics/Modeling Layer

Infrastructure Layer

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

+특징 3. Online VS. Offline

Massive Scale Machine Learning 및 Data generation 은 Offline에서 ,

Filtering, 최종 Business Logic 적용 등은 Online 에서

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

더 빠른 개발과 iterationScale 쉬움Failure toleration

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

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

Online Offline

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

2.Supervised Machine Learning 기반의 추천

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

+머신 러닝 기반의 추천

Supervised 머신 러닝과거의 데이터를 통해 모델을 traintrain 된 모델을 사용하여 실제로 예측

Binary Classification결과가 1/0 으로 나오는 supervised 머신 러닝 문제

다양한 Binary Classification 알고리즘들Decision Tree, Support Vector Machine, Logistic

Regression, …

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

+머신 러닝 기반의 추천

과거주어진 상황 (feature f1, f2,~ fn) 하에서 , 유저 x 의 행동을 관찰유저가 클릭 : Score = 1유저가 무시 : Score = 0

현재데이터를 바탕으로 모델을 training 시킬 수 있음 주어진 과거 데이터의 오류를 최소화 하는 모델을 만듬

미래조건부 확률 P(Click y | user x views y with f1, f2, .. fn) 을 계산 만들어진 모델을 통해 미래의 유저 반응을 예측

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

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

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

+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

Data Generation

Serving Data

Hadoop Infrastructure

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

+

Intuition Feature Extraction

Model Building

Data Generation

Serving Data

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

+Recommendation Product - 1. Intuition

프로덕트 아이디어와 , 그 아이디어에 대한 가정에서 부터 시작

프로덕트 아이디어 : Suggested Endorsements어떤 사람의 어떤 스킬을 Endorse( 승인 ) 할 것인지 추천하여

주자

가정1. Overlap: 상호간에 학교 , 회사등을 함께 다닌 기간이 길수록 2. Similarity: Industry, Title 등이 유사할수록 3. Skill score: 해당 스킬에 대해 더 잘 알 수록

Endorse 버튼을 클릭 할 가능성이 높을 것 !

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

+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.

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

+

Intuition Feature Extraction

Model Building

Data Generation

Serving Data

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

+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.

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

+Recommendation Product - 2. Feature Extraction

Problem:한 유저가 얼마나 스킬을 잘 아는지를 feature 로 쓰고 싶다 . 어떻게 해야 할까 ?

Solution:Skills Score 라는 다른 프로덕트의 output 을 Suggested Endorsement 의 input 으로 활용 .

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

+Skills Score

한 유저가 어떤 스킬을 가지고 있을 ‘확률’을 계산

1. 각각의 프로필의 feature( 타이틀 , 회사 , 인더스트리 ) 와 스킬에 대해 프로필에서의 co-counts 를 계산

2. Co-count 를 바탕으로 조건부 확률을 계산

Software Engineer 1,000,000

Software Engineer & Java 100,000

Software Engineer & C++ 88,000

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

+Skills Score

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

Apple 에 다니고 , Software Engineer 라면 , “iPhone development” 란 스킬을 알 확률이 높을 것이다 .

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

+

Intuition Feature Extraction

Model Building

Data Generation

Serving Data

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

+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

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

+3. Model Building – Problem & Solution

Problem: Hadoop 하에서 머신 러닝 모델링을 하기 위한 방법 ?

Solution:1.Sampling 후 R 등의 통계 패키지를 이용한 모델 러닝- Feature 의 숫자가 적고 , 빠른 iteration 이 필요한 경우

2.ADMM framework- Feature 의 숫자가 많을 경우 , 모델 러닝 자체를 분산 시스템

하에서 실행하고싶은 경우- 여러 다른 머신에서 각자 learning 후 , 각각의 결과를 합산- 합산된 결과를 바탕으로 다시 iterate

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

+

Intuition Feature Extraction

Model Building

Data Generation

Serving Data

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

+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

Pig Job: ValidationJava Job: Model Based Scoring

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

+4. Data Generation – Problem

실제 한 데이터 프로덕트의 Workflow

Feature Generation, Join, 실제 모델 적용 등 다양한 Hadoop Job 들 간의 dependency

Managing 할 Solution 이 필요

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

+4. Data Generation – Solution: Azkaban

Azkaban: Linkedin’s open source project

Dependency 관리다양한 Job type: Pig, Hive, Java스케쥴링모니터링로그 관리VisualizationConfigurationFailure 시 재시작리소스 locking 관리

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

+

Intuition Feature Extraction

Model Building

Data Generation

Serving Data

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

+5. Data Push - Solution

Problem: HDFS 에 생성된 추천 데이터를 실제로 유저에게 보여주기 위해선 어떻게 해야할까 ?

Solution:Voldemort

Linkedin 의 Key Value StorageAmazon’s Dynamo 바탕으로 구현

Distributed and ElasticHorizontally ScalableBulk load pipeline from Hadoop

Hadoop

Voldemort

Suggested Endorsements

Service

Batch load

getRecommendations(memberId)

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

4. Analytics Examples

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

+Data Scientist 가 되고 싶다면 ?

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

+유행하는 스킬 ?

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

+지역별 스킬의 차이

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

+

San Francisco

Mountain View

San Jose

Redwood City

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

San Francisco

San Jose

Redwood City

Mountain View

Application

Network &Transport

Presentation

Data Link &Physical

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

5. 결론

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

+결론 – 링크드인에게 추천이란 ?

추천은 예측이다 .

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

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

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

data.linkedin.com