106
추천시스템이 Word2Vec을 만났을때 최규민([email protected]) | 2015.08.29

2015 py con word2vec이 추천시스템을 만났을때

Embed Size (px)

Citation preview

Page 1: 2015 py con word2vec이 추천시스템을 만났을때

추천시스템이����������� ������������������  ����������� ������������������  Word2Vec을����������� ������������������  만났을때����������� ������������������  

최규민([email protected]) | 2015.08.29

Page 2: 2015 py con word2vec이 추천시스템을 만났을때

저(최규민)는

Page 3: 2015 py con word2vec이 추천시스템을 만났을때

저(최규민)는 아프리카TV에서

Page 4: 2015 py con word2vec이 추천시스템을 만났을때

저(최규민)는 아프리카TV에서 추천 방송을

Page 5: 2015 py con word2vec이 추천시스템을 만났을때

저(최규민)는 아프리카TV에서 추천 방송을 만들고 있습니다.

Page 6: 2015 py con word2vec이 추천시스템을 만났을때

오늘����������� ������������������  할����������� ������������������  이야기는����������� ������������������  

영화리뷰 학습결과

자연어처리 ML

Word2Vec

Python 구현

추천시스템

영화 별점 예측

UB

MovieLens

만났을때

Movie2Vec추천 적용

영화분류

Page 7: 2015 py con word2vec이 추천시스템을 만났을때

Word2Vec이란?

Page 8: 2015 py con word2vec이 추천시스템을 만났을때

Word2Vec이란?

• 2013년 구글에서 발표한 자연어 처리 머신러닝

• Word를 100차원, 200차원의 한정된 Vector로 효율적으로 표현것입니다.

• 2003년 bengio를 NNLM 기반으로 만들어진 Language Model.

Page 9: 2015 py con word2vec이 추천시스템을 만났을때

NNLM

2003년 Bengio 2013년 Mikolov (구글)

혁신•Accuracy Skip-gram Continuous Bag Of Word

•Fast Training Hierarchical Softmax Nagative Sampling Subsampling for frequent word

참고 논문 : Efficient Estimation of Word Representations inVector Space

word2vec

X2 X7

Page 10: 2015 py con word2vec이 추천시스템을 만났을때

• 주어진 문서에서 단어 w가 Context(c)의 단어 결합확률이 최대가 되도록 단어 w의 vector값을 학습

• 예를들어 “파이콘은 세계 각국의 파이썬 프로그래밍 언어 커뮤니티에서 주관하는 비영리 컨퍼런스입니다.”와 같은 파이콘2015 행사 개요 문서를 학습 할 경우

• “파이콘”과 “파이썬” 비슷한 vector값을 가지도록 즉, 이 처럼 단어의 순서가 근접하여 자주 출현할 수록 두단어의 vector값이 유사하도록 학습하는 것이 목적

NNLM����������� ������������������  (neural����������� ������������������  net����������� ������������������  language����������� ������������������  model)

Page 11: 2015 py con word2vec이 추천시스템을 만났을때

• '139분 상영동안 눈을 뗄수가 없을 만큼 흥미진진했어요. 6인6색 예고처럼 배우들 연기력도 좋았고 그 시대에 볼거리가 풍성해서 인상적이었어요. 특히 염석진을 따라다니던 명우라는 배우의 엔딩씬은 특별히 기억에 남네요. 대박의 조짐이 현실이되길 조심스럽게 기대해 봅니다. Good!'

• '대박이네 꼭바야' '일본 방송 출연 못해서 안달은 자들의 애국놀이라... '

• '시사회 봤습니다. 이야기가 뒤로 갈수록 점점 더 흥미진진해 지네여~ 특히 마지막 이정재의 연기는 정말 압권입니다!!! 이정재 연기력에 진심 감탄^^'

• '배우 앙상블 언제나 좋고 소재와 캐릭터도 언제나 좋아요. 드라마 구성 완성도 까지...잘 봤습니다. '

• 'ㅋㅋ혹시 왜나라 연예계에 자리없을까 걱정하는 자들이 우리 광대들인데 다른 영화(외화) 예매 다 막아놓고 해묵은 일베충 드립질하면 다음에서 지지받는다 하든? 알바들아 답글 좀 써봐라... '

• '하반기 대박 영화.. 역사에 기반을둔 반전있는 탄탄한 스토리 대한독립의 의미를 되새겨주는 영화 강추합니다'

• '전지현이여서, 가능한 영화였따 그치만 이정재 하정우 역시 멋있다 ㅎㅎ 그리고 가슴이 아프다 우리네 역사가 .. 그 시절 독립운동이란 우리에게 주는 의미가 되새겨 진다 긴 런닝타임 손에 땀을 쥐고

파이콘 행사개요 ‘암살’ 영화리뷰

다음����������� ������������������  문장을����������� ������������������  학습하면

Page 12: 2015 py con word2vec이 추천시스템을 만났을때

•파이콘

•파이썬

•전지현

•암살

•이정재

x1

x2

•파이콘

•파이썬

•전지현

•암살

•이정재

x1

x2

•암살

•전지현

•파이썬

학습전 (랜덤) 학습후

다음����������� ������������������  문장을����������� ������������������  학습하면

Page 13: 2015 py con word2vec이 추천시스템을 만났을때

실제 word2vec 학습을 통해 확인해 보자

Page 14: 2015 py con word2vec이 추천시스템을 만났을때

영화����������� ������������������  “암살”����������� ������������������  리뷰����������� ������������������  100개• '139분 상영동안 눈을 뗄수가 없을 만큼 흥미진진했어요. 6인6색 예고처럼 배우들 연기력도 좋았고 그 시대에 볼거리가 풍성해서 인상적이었어요. 특히 염석진을 따라다니던 명우라는 배우의 엔딩씬은 특별히 기억에 남네요. 대박의 조짐이 현실이되길 조심스럽게 기대해 봅니다. Good!'

• '대박이네 꼭바야' '일본 방송 출연 못해서 안달은 자들의 애국놀이라... '

• '시사회 봤습니다. 이야기가 뒤로 갈수록 점점 더 흥미진진해 지네여~ 특히 마지막 이정재의 연기는 정말 압권입니다!!! 이정재 연기력에 진심 감탄^^'

• '배우 앙상블 언제나 좋고 소재와 캐릭터도 언제나 좋아요. 드라마 구성 완성도 까지...잘 봤습니다. '

• 'ㅋㅋ혹시 왜나라 연예계에 자리없을까 걱정하는 자들이 우리 광대들인데 다른 영화(외화) 예매 다 막아놓고 해묵은 일베충 드립질하면 다음에서 지지받는다 하든? 알바들아 답글 좀 써봐라... '

• '하반기 대박 영화.. 역사에 기반을둔 반전있는 탄탄한 스토리 대한독립의 의미를 되새겨주는 영화 강추합니다'

• '전지현이여서, 가능한 영화였따 그치만 이정재 하정우 역시 멋있다 ㅎㅎ 그리고 가슴이 아프다 우리네 역사가 .. 그 시절 독립운동이란 우리에게 주는

Page 15: 2015 py con word2vec이 추천시스템을 만났을때

영화����������� ������������������  “암살”����������� ������������������  리뷰����������� ������������������  100개• '139분 상영동안 눈을 뗄수가 없을 만큼 흥미진진했어요. 6인6색 예고처럼 배우들 연기력도 좋았고 그 시대에 볼거리가 풍성해서 인상적이었어요. 특히 염석진을 따라다니던 명우라는 배우의 엔딩씬은 특별히 기억에 남네요. 대박의 조짐이 현실이되길 조심스럽게 기대해 봅니다. Good!'

• '대박이네 꼭바야' '일본 방송 출연 못해서 안달은 자들의 애국놀이라... '

• '시사회 봤습니다. 이야기가 뒤로 갈수록 점점 더 흥미진진해 지네여~ 특히 마지막 이정재의 연기는 정말 압권입니다!!! 이정재 연기력에 진심 감탄^^'

• '배우 앙상블 언제나 좋고 소재와 캐릭터도 언제나 좋아요. 드라마 구성 완성도 까지...잘 봤습니다. '

• 'ㅋㅋ혹시 왜나라 연예계에 자리없을까 걱정하는 자들이 우리 광대들인데 다른 영화(외화) 예매 다 막아놓고 해묵은 일베충 드립질하면 다음에서 지지받는다 하든? 알바들아 답글 좀 써봐라... '

• '하반기 대박 영화.. 역사에 기반을둔 반전있는 탄탄한 스토리 대한독립의 의미를 되새겨주는 영화 강추합니다'

• '전지현이여서, 가능한 영화였따 그치만 이정재 하정우 역시 멋있다 ㅎㅎ 그리고 가슴이 아프다 우리네 역사가 .. 그 시절 독립운동이란 우리에게 주는

# Word2Vec으로 학습 model = Word2Vec( corpus, # review 문장 size=3, # 3차원 Vector min_count=3, # 3회이상 출현 window=10 # 10개 단어씩 )

Page 16: 2015 py con word2vec이 추천시스템을 만났을때

Word2Vec����������� ������������������  학습����������� ������������������  결과

Page 17: 2015 py con word2vec이 추천시스템을 만났을때

‘하정우’:[-0.07607, 0.033019, -0.01204]‘전지현’:[ 0.11024777, -0.08181, -0.09407]

‘이정재’:[ 0.03348, 0.09194, 0.09699]

한정된 공간에 Vector값을 표현 = Embedding !!!

Page 18: 2015 py con word2vec이 추천시스템을 만났을때

최고의 연기…스토리 너무 기대가 …

전지현 하정우 감독님과 배우들이 짱…

시사회로 봤는데 개봉하면…

문서에서 근접 단어(neighbors)끼리 가장가까운 vector 값을 가지도록 최적화

Page 19: 2015 py con word2vec이 추천시스템을 만났을때

좀더 많은 데이터로 학습 해 보겠습ㄴ다.

Page 20: 2015 py con word2vec이 추천시스템을 만났을때

영화����������� ������������������  리뷰(60만건)

• 토픽 모델링 패키지인 Gensim에서 패키징한 word2vec을 사용

• 아래 영화 리뷰 데이터의 title, review를 word2vec으로 트레이닝해 보자

Page 21: 2015 py con word2vec이 추천시스템을 만났을때

데이터 로드

트레이닝하기 위한 단어/문장 단위로

분리

Word2Vec으로 학습(100D)

word2vec����������� ������������������  트레이닝

Page 22: 2015 py con word2vec이 추천시스템을 만났을때

word2vec����������� ������������������  트레이닝����������� ������������������  결과

• 트레이닝 결과 :

• ‘이정재’ 벡터값 :

Page 23: 2015 py con word2vec이 추천시스템을 만났을때

“이정재” “암살”

단어의 의미(인물,영화) 해석됨

Page 24: 2015 py con word2vec이 추천시스템을 만났을때

“이정재”����������� ������������������  +����������� ������������������  “수양”

이정재가 수양대군 역활을 한 “관상”의 배우들이 나옵니다.

Page 25: 2015 py con word2vec이 추천시스템을 만났을때

word2vec의����������� ������������������  쓰면서����������� ������������������  느낀점

사용이 심플하다. 10줄이면 코딩끝.

라벨링 되지 않은 데이터로 Supervised Learning

왜 이렇게 결과가 나오는지 명확한 해석이 어려움 (머신러닝 대표 특징)

의도적인 성능 향상을 위해서는 많은 삽질이 필요사용의 편리성에 비해 엄청난

정확도를 보여 준다.

Page 26: 2015 py con word2vec이 추천시스템을 만났을때

추천 시스템

Page 27: 2015 py con word2vec이 추천시스템을 만났을때

추천하면 생각나는것이 뭘까요?

Page 28: 2015 py con word2vec이 추천시스템을 만났을때

상품 친구

영화 광고 뉴스

Page 29: 2015 py con word2vec이 추천시스템을 만났을때

상품 친구

영화 광고 뉴스

영화 추천 : 별점 예측

Page 30: 2015 py con word2vec이 추천시스템을 만났을때

나의 별점 예측은 어떻게 할까요?

Page 31: 2015 py con word2vec이 추천시스템을 만났을때

ME

영화 취향이 비슷한

사람들

4.5 5.0

3.53.0

4.54.0

그들이 평가한 별점으로 나의 별점예측

weighted sum

Page 32: 2015 py con word2vec이 추천시스템을 만났을때

이렇게����������� ������������������  예측한����������� ������������������  별점이����������� ������������������  높은����������� ������������������  영화를����������� ������������������  추천해주는����������� ������������������  방식이����������� ������������������  

User����������� ������������������  Based����������� ������������������  ����������� ������������������  CF����������� ������������������  (Collaboration����������� ������������������  Filtering)

Page 33: 2015 py con word2vec이 추천시스템을 만났을때

실제구현����������� ������������������  과정을����������� ������������������  ����������� ������������������  보겠습니다.

Page 34: 2015 py con word2vec이 추천시스템을 만났을때

과정

영화 별점 데이터 로드

!User-Movie Vector 변환

모든 유저 간 유사도 측정

!그중 최근접 이웃을 찾음

최근접 이웃의 별점 정보로 내가 보지 않은 영화의 별점 예측

Data Processing Neighborhood Prediction

Page 35: 2015 py con word2vec이 추천시스템을 만났을때

영화 별점 데이터 로드

!User-Movie Vector 변환

모든 유저 간 유사도 측정

!그중 최근접 이웃을 찾

Data Processing Neighborhood

Page 36: 2015 py con word2vec이 추천시스템을 만났을때

영화����������� ������������������  별점����������� ������������������  데이터����������� ������������������  (Grouplens:MovieLens)����������� ������������������  

•미네소타 대학의 GroupLens 연구실에서 수집 CF를 연구를 위해 영화 데이터 수집

•개인정보가 없이 제공됨

• 100K, 1M, 10M , 20M 별점 데이터셋 제공

•영화 별점, 영화메타, 태그 데이터 제공

Page 37: 2015 py con word2vec이 추천시스템을 만났을때

데이터����������� ������������������  :����������� ������������������  ml-latest-small

706 users. 8,552 movies 100,022 ratings

Page 38: 2015 py con word2vec이 추천시스템을 만났을때

User����������� ������������������  X����������� ������������������  Movie����������� ������������������  Rating����������� ������������������  Matrix

영화 유저ME 4 4.5 5 예측대상 예측대상

A 4.5 4 3 3.5

B 4 5 4

C 2 5 3 3

D 4 5 4 4

E 2 1 1 5

F 5 1 1 1 5

G 2 2 2

Page 39: 2015 py con word2vec이 추천시스템을 만났을때

User����������� ������������������  x����������� ������������������  Movie����������� ������������������  Vector����������� ������������������  변환����������� ������������������  ����������� ������������������  

Page 40: 2015 py con word2vec이 추천시스템을 만났을때

706 vectors. 8,552 dimensions = 706 x 8,552 values

NaN Values : 5.94M ( 98.34% ) !

sparse vector!!

User����������� ������������������  x����������� ������������������  Movie����������� ������������������  Matrix����������� ������������������  ����������� ������������������  

Page 41: 2015 py con word2vec이 추천시스템을 만났을때

20M Dataset은 138,493 Vectors(user)

26,744 dimensions(movie) NaN Values : 3.68G(99.46%)

User����������� ������������������  x����������� ������������������  Movie����������� ������������������  Matrix����������� ������������������  ����������� ������������������  

Page 42: 2015 py con word2vec이 추천시스템을 만났을때

User-Movie가����������� ������������������  ����������� ������������������  증가����������� ������������������  할수록����������� ������������������  Sparsity����������� ������������������  속성이����������� ������������������  두드러진다.

Page 43: 2015 py con word2vec이 추천시스템을 만났을때

참고)����������� ������������������  Sparsity����������� ������������������  줄이기����������� ������������������  위해����������� ������������������  

• Dimensionality Reductions

• PCA : 주성분 분석

• SVD : 특이값 분해

• 일반적으로 실제 구현 시에는 dict타입 collection구성

• { userid : { movieid:rating } , … }

Page 44: 2015 py con word2vec이 추천시스템을 만났을때

영화 별점 데이터 로드

!User-Movie Vector 변환

모든 유저 간 유사도 측정

!그 중 최근접 이웃을 찾음

최근접 이웃의 별점 정보로 내가 보지 않은 영

화의 별점 예측

Data Processing Neighborhood Prediction

Page 45: 2015 py con word2vec이 추천시스템을 만났을때

유사도����������� ������������������  측정• 유사도 측정

!

!

• 유사도값의 신뢰하기 위해 교차평가한 영화가 일정 수 이상만 유사도 측정

• 유사도 측정의 대표적 함수

• Jaccard, Cosine , Euclidean, Correlation, …

유저 Movie1 Movie2 Movie3 Movie4 Movie5 Movie6 Movie7ME 4 5 4.5 3.5A 4.5 4 3 3.5 4

교차로 평가한 영화의 별점 정보로 유사도 측정

Page 46: 2015 py con word2vec이 추천시스템을 만났을때

Jaccard : !상품간의 교집의 크기 Euclidean Distance!

상품간의 거리

상품1

상품2

Jaccard,����������� ������������������  Euclidean,����������� ������������������  Cosine,����������� ������������������  Corr

θ Cosine Similarity! 상품간의 각도

상품1 상품2

변량의����������� ������������������  상관도����������� ������������������  

Correlation

Page 47: 2015 py con word2vec이 추천시스템을 만났을때

Jaccard : !상품간의 교집의 크기 Euclidean Distance!

상품간의 거리

상품1

상품2

Jaccard,����������� ������������������  Euclidean,����������� ������������������  Cosine,����������� ������������������  Corr

θ Cosine Similarity! 상품간의 각도

상품1 상품2

변량의����������� ������������������  상관도����������� ������������������  

Correlation

별점 예측의 정확도가 가장 높은 유사도 함수를 선택!!

Page 48: 2015 py con word2vec이 추천시스템을 만났을때

유사도함수별����������� ������������������  별점예측����������� ������������������  오차값(MAE)

평균����������� ������������������  별점

Euclidean

Cosine

Correlation

����������� ������������������  MAE(Mean����������� ������������������  Absolute����������� ������������������  Error)

0.0 0.2 0.4 0.6 0.8

0.531

0.465

0.263

0.706

← 가장 적합한 함수

Page 49: 2015 py con word2vec이 추천시스템을 만났을때

����������� ������������������  Neighborhood����������� ������������������  연산

가장 유사한 유저 TopN 결과를 리턴

모든 유저와 유사도를 측정 (Brute Force)

최소 3개 이상의 교차 평가가 있는 유저만 유사도 측정

유사도가 높은 순으로 Top N

Page 50: 2015 py con word2vec이 추천시스템을 만났을때

����������� ������������������  Neighborhood����������� ������������������  연산

입력값과 가장 유사한 유저와 TopN 결과를 리턴

최소 3개 이상의 같은 영화에 평점을 매긴 유저만 측정

유사도가 높은 순으로 Top N

모든 유저와 유사도를 측정 (Brute Force)

!- Scalability 문제 - 성능 = ( n:유저수 ) - 유사할것 끼리 클러스터 묶어서 클러스터 내에서만 Neighborhood 연산 - 성능 : ( c : 클러스터의 유저수 )

Page 51: 2015 py con word2vec이 추천시스템을 만났을때

클러스터링����������� ������������������  알고리즘들

K-Means����������� ������������������  

Hierarchical����������� ������������������  ����������� ������������������  Clustering����������� ������������������  

Minhash,����������� ������������������  LSH,����������� ������������������  density����������� ������������������  based����������� ������������������  …⋯����������� ������������������  

Page 52: 2015 py con word2vec이 추천시스템을 만났을때

모든 유저 간 유사도 측정

!그중 최근접 이웃을 찾

최근접 이웃의 별점 정보로 내가 보지 않은 영화의 별점 예측

Neighborhood Prediction

Page 53: 2015 py con word2vec이 추천시스템을 만났을때

유저 영화 별점 유사도 weighted none

A Nan 0.61 -

B 4 0.91 3.64 4

C 3 0.63 1.89 3

D 4 0.91 3.64 4

합계 9.17 11

예측별점 3.74 3.67

나와����������� ������������������  유사한����������� ������������������  유저의����������� ������������������  별점을����������� ������������������  더욱더����������� ������������������  신뢰하도록����������� ������������������  별점����������� ������������������  예측

XX

XX

0.61

0.91

0.630.91 =

=

=

Page 54: 2015 py con word2vec이 추천시스템을 만났을때

최근접 유저의 유사도를 측정해서

근접유저 중 4명이상 별점을 준 영화들에 대하여

별점����������� ������������������  Prediction

평점을 매신 유저들의 유사도를 가중치로 적용하여 평점계산

Page 55: 2015 py con word2vec이 추천시스템을 만났을때

유저����������� ������������������  1번의����������� ������������������  별점����������� ������������������  예측����������� ������������������  결과평가한 별점 예측한 별점

Page 56: 2015 py con word2vec이 추천시스템을 만났을때

별점����������� ������������������  예측����������� ������������������  정확도(MAE)����������� ������������������   MAE(Mean Absolute Error)

0.0

0.2

0.4

0.6

0.8

평균 별점 예측별점

0.263

0.706

2.6배 정확도가 좋아짐

Page 57: 2015 py con word2vec이 추천시스템을 만났을때

User����������� ������������������  Based����������� ������������������  CF

참고: recsys-2014-tutorial-the-recommender-problem-revisited p19

최소한의 기본 지식만 구현가능

다양한 적용 사례에서 적절한 정확도를 보장

고차원 저밀도 Vector = Sparsity

하드한 Neighborhood연산 = Scalability

Page 58: 2015 py con word2vec이 추천시스템을 만났을때

User����������� ������������������  Based����������� ������������������  CF

참고: recsys-2014-tutorial-the-recommender-problem-revisited p19

최소한의 기본 지식만 구현가능

다양한 적용 사례에서 적절한 정확도를 보장

고차원 저밀도 Vector = Sparsity

하드한 Neighborhood연산 = Scalability

Memory based CF 알고리즘

Page 59: 2015 py con word2vec이 추천시스템을 만났을때

Model based Collaboration Filtering?

Page 60: 2015 py con word2vec이 추천시스템을 만났을때

Model based Collaboration Filtering?

머신러닝과 같이 트레이닝 데이터로 패턴을 찾아 내어 추천을 하는 알고리즘

Probability Model Clustering Model

SVD PCA Matrix Factorization

Page 61: 2015 py con word2vec이 추천시스템을 만났을때

추천 시스템이 Word2Vec만났을때

Page 62: 2015 py con word2vec이 추천시스템을 만났을때

실제로����������� ������������������  하고자����������� ������������������  하는것����������� ������������������  !

Movie����������� ������������������  2����������� ������������������  Vec

Page 63: 2015 py con word2vec이 추천시스템을 만났을때

추천할����������� ������������������  영화을����������� ������������������  한정된����������� ������������������  공간에����������� ������������������  Embedding

암살

신세계 관상

즐거운 인생

7번방의 기적

미세스 다웃 파이어

님은 먼곳에

인사이드아웃

쉰틀러 리스트

베테랑

유주얼 써스펙트

친정엄만

Page 64: 2015 py con word2vec이 추천시스템을 만났을때

유사한����������� ������������������  영화끼리����������� ������������������  잘����������� ������������������  뭉치도록����������� ������������������  Movie2Vec����������� ������������������  학습이����������� ������������������  목적

암살신세계 관상

즐거운 인생7번방의 기적

미세스 타웃 파이어님은 먼곳에

인사이드아웃

쉰틀러 리스트

베테랑

유주얼 써스펙트

친정엄만

Page 65: 2015 py con word2vec이 추천시스템을 만났을때

내가����������� ������������������  높은����������� ������������������  별점����������� ������������������  준����������� ������������������  영화(▲)와����������� ������������������  

암살신세계 관상

즐거운 인생7번방의 기적

미세스 다웃 파이어님은 먼곳에

인사이드아웃

쉰틀러 리스트

베테랑

4.5:유주얼 써스펙트

5.0 : 친정엄만

Page 66: 2015 py con word2vec이 추천시스템을 만났을때

유사한����������� ������������������  영화를����������� ������������������  추천해����������� ������������������  주는

암살신세계 관상

즐거운 인생7번방의 기적

미세스 다웃 파이어님은 먼곳에

인사이드아웃

쉰틀러 리스트

베테랑

4.5:유주얼 써스펙트

5.0 : 친정엄만

Page 67: 2015 py con word2vec이 추천시스템을 만났을때

유사한����������� ������������������  영화를����������� ������������������  추천해����������� ������������������  주는

암살신세계 관상

즐거운 인생7번방의 기적

미세스 다웃 파이어님은 먼곳에

인사이드아웃

쉰틀러 리스트

베테랑

4.5:유주얼 써스펙트

5.0 : 친정엄만

Movie2Vec 관심 영화 추천

Page 68: 2015 py con word2vec이 추천시스템을 만났을때

중심점����������� ������������������  거리����������� ������������������  기반으로����������� ������������������  ����������� ������������������  영화를����������� ������������������  상세����������� ������������������  군집화(부류)하여

암살신세계 관상

즐거운 인생7번방의 기적

미세스 타웃 파이어님은 먼곳에

인사이드아웃

쉰틀러 리스트

베테랑

유주얼 써스펙트

친정엄만

Page 69: 2015 py con word2vec이 추천시스템을 만났을때

관심����������� ������������������  영화����������� ������������������  부류를����������� ������������������  추천에����������� ������������������  주는����������� ������������������  ����������� ������������������  ����������� ������������������  

암살신세계 관상

즐거운 인생7번방의 기적

미세스 타웃 파이어님은 먼곳에

인사이드아웃

쉰틀러 리스트

베테랑

유주얼 써스펙트

친정엄만

Movie2Vec 관심 부류 영화 추천

Page 70: 2015 py con word2vec이 추천시스템을 만났을때

Movie2Vec����������� ������������������  학습하기

Page 71: 2015 py con word2vec이 추천시스템을 만났을때

학습할����������� ������������������  Corpus����������� ������������������  생성

• 문서 Corpus가 아닌 영화 시청(별점) 이력 Corpus로 학습

단어 영화ID문장 유저단위 [영화, 영화2, …]문서 별점이력 [ [영화1,영화2 … ],

[영화1,영화2 … ], [영화1,영화2 … ], … [영화1,영화2 … ] ]

Page 72: 2015 py con word2vec이 추천시스템을 만났을때

영화����������� ������������������  별점����������� ������������������  이력����������� ������������������  Corpus

[ 924,919,2683,1584,1079,653,2959,337,1304,3996,151,112,1374,1246,1370 ] [ 1356,3159,2951,1974,1210,62,1121,469,589,110,2948,2858,2791,3513,3959 ] [ 2011,1188,589,1721,2118,2857,10,2676,2541,2567,2722,2448,2505,2694,2574] [ 380,165,329,356,10,454,480,589,377,19,367,420,586,32,350 ] [ 141,736,62,17,648,780,608,1073,708,788,104,140,631,671,832 ] [ 141,62,1,780,17,736,648,494,3,1073,733,7,52,260,788 ] [ 1230,908,364,1196,3081,912,1617,3469,3062,2993,1210,4848,4896,4993,4963] [ 592,590,380,150,296,349,588,344,165,153,316,329,527,21,610 ] [ 3785,1219,858,356,2279,4034,4022,3994,3999,4030,3979,4369,4533,4519,450] [ 1204,527,912,356,1960,1196,1250,2028,1242,1208,1222,1094,2529,2058,260 ] [ 4643,170,531,616,1093,2140,2722,1077,3396,671,2313,2688,1982,2428,3113 ]

Page 73: 2015 py con word2vec이 추천시스템을 만났을때

우선����������� ������������������  Visualization을����������� ������������������  위해����������� ������������������  ����������� ������������������  2차원,����������� ������������������  150건����������� ������������������  이상����������� ������������������  별점����������� ������������������  받은����������� ������������������  ����������� ������������������  영화만����������� ������������������  학습����������� ������������������  하였습니다.����������� ������������������  

학습 데이터셋 : MovieLen ml-last-small

Page 74: 2015 py con word2vec이 추천시스템을 만났을때

Movie2Vec����������� ������������������  결과(60개����������� ������������������  영화)

Page 75: 2015 py con word2vec이 추천시스템을 만났을때

userId����������� ������������������  3번의����������� ������������������  시청(별점)����������� ������������������  내역

Page 76: 2015 py con word2vec이 추천시스템을 만났을때

합쳐서����������� ������������������  보면

Page 77: 2015 py con word2vec이 추천시스템을 만났을때

영화����������� ������������������  시청의����������� ������������������  경향성����������� ������������������  있음

Page 78: 2015 py con word2vec이 추천시스템을 만났을때

userId 1

userId 10userId 7

userId 2

사용자별����������� ������������������  다양한����������� ������������������  시청����������� ������������������  경향이����������� ������������������  나타남

Page 79: 2015 py con word2vec이 추천시스템을 만났을때
Page 80: 2015 py con word2vec이 추천시스템을 만났을때

별점데이터 10만건 Vector 2차원 이런 조건에서도 영화 60편

그럴싸한 결과가 나오는듯함

Page 81: 2015 py con word2vec이 추천시스템을 만났을때

별점데이터 2,000만건 Vector 100차원 조건에서 영화 13,620편

Movie2Vec을 학습해 보자

Page 82: 2015 py con word2vec이 추천시스템을 만났을때

Movie2vec����������� ������������������  학습

20m 별점 데이터 로드

Movie corpus 만들기

Word2Vec 학습

유사한 영화 찾기 쿼리

총 13 줄의 코드

Page 83: 2015 py con word2vec이 추천시스템을 만났을때

Movie2vec����������� ������������������  학습

20m 별점 데이터 로드

트레이닝할 corpus 만들기

Word2Vec 학습

테스트

총 13 줄의 코드!

현재발표하는 맥북에어(2014’)에서 !

학습 시간 : 단 8분!!

Page 84: 2015 py con word2vec이 추천시스템을 만났을때

Movie2Vec����������� ������������������  추천����������� ������������������  만들기����������� ������������������  ����������� ������������������  ����������� ������������������  

관심 영화 추천 관심 부류 영화 추천

1000개의 영화 부류People Who Liked This Also Liked..

Page 85: 2015 py con word2vec이 추천시스템을 만났을때

관심 영화 추천

!People Who Liked This Also Liked

Page 86: 2015 py con word2vec이 추천시스템을 만났을때

model.most_similar( positive=[‘유주얼 서스펙트’] )

Also Liked

Page 87: 2015 py con word2vec이 추천시스템을 만났을때

IMDB 추천 결과Movie2Vec 결과 vs

Page 88: 2015 py con word2vec이 추천시스템을 만났을때

Corpus 재구성 후 (3.0 미만 별점은 제외)

Movie2Vec 결과 vs

Page 89: 2015 py con word2vec이 추천시스템을 만났을때

Corpus 재구성 후 (3.0 미만 별점은 제외)

Movie2Vec 결과 vs

!

Word2Vec 학습 시 Corpus 구성 및 비교 테스트가 중요

Page 90: 2015 py con word2vec이 추천시스템을 만났을때

0.0

5.0 4.5 4.0 3.0

1.0

영화 유사도

1.0

0.0

나의 평점

Page 91: 2015 py con word2vec이 추천시스템을 만났을때

0.0

5.0 4.5 4.0 3.0

1.0

영화 유사도

1.0

0.0

나의 평점

Page 92: 2015 py con word2vec이 추천시스템을 만났을때

0.0

5.0 4.5 4.0 3.0

1.0

영화 유사도

1.0

0.0

나의 평점

인기도 추가

Page 93: 2015 py con word2vec이 추천시스템을 만났을때

0.0

5.0 4.5 4.0 3.0

1.0

영화 유사도

1.0

0.0

나의 평점

인기도 추가

개봉일

Page 94: 2015 py con word2vec이 추천시스템을 만났을때

0.0

5.0 4.5 4.0 3.0

1.0

영화 유사도

1.0

0.0

나의 평점

인기도 추가

개봉일

다양한 Feature(축) 를 추가하여 추천의 랭킹 문제를 풀수있습니다.

Page 95: 2015 py con word2vec이 추천시스템을 만났을때

관심 영화 부류 추천

1000개의 영화 부류

Page 96: 2015 py con word2vec이 추천시스템을 만났을때

넷플릭스의����������� ������������������  마이크로����������� ������������������  장르에����������� ������������������  대하여����������� ������������������  잠시����������� ������������������  알아보자

Page 97: 2015 py con word2vec이 추천시스템을 만났을때

����������� ������������������  76,894개����������� ������������������  마이크로����������� ������������������  장르

참고 : http://digxtal.com/insight/20140107/76897-altgenres/

8~10 세를 위한 고양이가 나오는 폭력 스릴러 !

악마 같은 아이가 나오는 컬트 공포 영화 유럽 배경의 60년대 영국 공상과학/판타지물 비평가들에게 호평받은 감동적 패배자 영화

!

… 나머지 76,894개 장르.

Page 98: 2015 py con word2vec이 추천시스템을 만났을때

개인화를����������� ������������������  위한����������� ������������������  세분화

참고 : http://digxtal.com/insight/20140107/76897-altgenres/

지역(Region) + 수식어(Adjectives) + 장르(Noun Genre) + 원작(Based On…) + 배경(Set In…) + 시대(From the…) + 주제(About…) + 나이(For

Age X to Y 그외에도 배우, 감독, 제작자 등으로 조합하여 분류 !

영화 전문가 40명이 재택 알바로 영화 감상 후 1000개의 테그로 테깅 작업을 수행 후 영화를 군집화 시킴

Page 99: 2015 py con word2vec이 추천시스템을 만났을때

우리도����������� ������������������  비슷하게����������� ������������������  상세한����������� ������������������  영화����������� ������������������  부류를����������� ������������������  만들어����������� ������������������  보자

Page 100: 2015 py con word2vec이 추천시스템을 만났을때

영화 군집화 과정영화를 중심 거리 기반으로

인접 영화끼리 군집화(K-Means) 군집화된 영화들의 Tag를 수집

Signs , My Big Fat Greek Wedding , Ice Age , Matrix Reloaded, The , I, Robot , Terminator 3: Rise of the Machines , Men in Black II

(a.k.a. MIIB), A.I. , Ring, The ,

Star Wars: Episode II - Attack of the Clones

sci-fi, artificial intelligence, robots, dystopia, virtual reality

30

Page 101: 2015 py con word2vec이 추천시스템을 만났을때

영화����������� ������������������  군집화����������� ������������������  결과

Page 102: 2015 py con word2vec이 추천시스템을 만났을때

영화����������� ������������������  군집화����������� ������������������  결과

3032

34

Page 103: 2015 py con word2vec이 추천시스템을 만났을때

영화별����������� ������������������  인기����������� ������������������  Tag만����������� ������������������  추리면

sci-fi, artificial intelligence, robots , dystopia, virtual

reality32

politics, based on a true story,

India Woody Harrelson

election

tense, thriller, twist ending,

Edward Norton, courtroom drama

Page 104: 2015 py con word2vec이 추천시스템을 만났을때
Page 105: 2015 py con word2vec이 추천시스템을 만났을때

나의����������� ������������������  별점(시청)����������� ������������������  영화의����������� ������������������  부류(장르)����������� ������������������  비율로����������� ������������������  영화를����������� ������������������  추천

[부류3] twist ending|sci-fi|dark comedy|psychology|Quentin

[부류20] tense|thriller|twist ending|Edward Norton|courtroom drama

[부류530] sci-fi|dystopia|aliens|space|Bruce Willis

0.5

0.3

0.1

0.1 [부류799] fantasy|dragon|Adventure| muppets |sci-fi

Page 106: 2015 py con word2vec이 추천시스템을 만났을때

감사합니다.����������� ������������������