Live
 Broadcasting
 
  
추천
 시스템 
최규민
 |
 2014.9.30
저(최규민)는
저(최규민)는 아프리카TV에서
저(최규민)는 아프리카TV에서 추천 방송을
저(최규민)는 아프리카TV에서 추천 방송을 만들고 있습니다.
오늘은 이 추천 방송을 대하여 
이야기해 보겠습니다.
아프리카TV는? 
BJ 방송 
시청자
아프리카TV는?
  
SNS
 플랫폼
 
 
 
 
 
 
 
 
 
 
 
아프리카TV 
100 
75 
50 
25 
0 
하루에
 100
 K
 방송이
 만들어지고
  
하루에
 3
 M
 명의
 시청자가
 방문하고
  
하루에
 20
 M
 번의
 방송이
 시청되고
  
하루에
 20
 M
 건의
 채팅이
 이루어
 지고
 
  
하루에
 평균
 120분
 시청합니다
오늘
 할
 이야기는
  
추천이란? 
아프리카TV 
방송 추천하기 Touch 
the void 
효과 김대리의 
하루 
아마존 
추천 
관심도 
와 연관도 
구 
현 시스템 
유사도 
이야기 
AB 
테스트 
아키텍쳐 
실대처 
추천 
적용
추천이란 뭘까요?
최규민씨의 하루생활
출근을 할 때 안막히는 도로를 ! 
추천 받고
출근 후 뉴스를 보면 ! 
관련 기사를 또 보여 주고
이 메일을 확인하면 ! 
볼만한 동영상이 수신되어 있고
점심 시간에 모바일 게임을 접속하면! 
형태기반 띠 광고를 보게 되고
주말에 볼 영화를 찾기위해 ! 
Watcha에 접속하면 영화가 추천되고 
http://watch.net
이렇게 우리의 모든 행위는 기록되고! 
필요할 때 적절히 추천 됩니다.
그럼 왜 이렇게 추천할까요?
“Touching the void 책” 이야기 
출처: http://www.elhablador.com/blog/wp-content/uploads/2012/
1988년 출간 
산악인의 생존 실화를 
다룬 책 
! 
“Touching the 
void” 
평가 좋지만 판매는 그 
닥!!! 
그리고 절판됨
10년 뒤 
“Into Thin Air” 
산악소설이 붐!!! 
! 
이 책과 유사한 
“Touching the 
void” 
가 독자에 의해 
책 서평 등록 
출처: www.amazon.com
100 
75 
50 
25 
0 
절판된 책이 판매량 증가
서점에서는 다시 프로모션을 하고
1000 
750 
500 
250 
0 
판매량의 급증
추천의
 힘!!
아마존 책 매출의 57%는 ! 
서점에서 팔지 않는 책에서 ! 
발생합니다.
이런 추천 시스템은 ?
이러한 추천 시스템은 대부분 협업 필터링과 
같은 알고리즘을 사용합니다. ! 
! 
협업 필터링은 ! 
유저 기반 추천, 아이템 기반 추천 ! 
분류됩니다.
유저 기반 추천! 
- 나와 유사한 유저가 본 아이템을 추천 
나 유사한 유저 그들이 본 아이템
아이템 기반 추천! 
- 내가 본 아이템과 유사한 아이템을 추천하는 방식 
나 내가 본 아이템 유사한 아이템
아프리카TV 은! 
큰 틀에서 아이템 기반 추천
아프리카TV의 방송 추천 
에 대하여 알아 보겠습니다.
큰 그림
BJ 관심도 BJ 연관도 
` 
오래 시청한 
자주 추천한 
많이 선물한 
내가 관심BJ와 유사한 
연관BJ의 
방송추천
BJ
 관심도
 측정
1.0 (관심도) 0.0 
평준화 
[0.0 , 1.0] 
시간 
가중치 
항목 
가중치
0.0 
평준화 
[0.0 , 1.0] 
시간 
가중치 
항목 
가중치 
방송 시청 이력 
uno 
! 
BJID 시청시간 평균 
10001 rani0224 10’ 9’ 
10001 afkbo1 120’ 95’ 
10001 afmlb1 32’ 93 
추천이력 
uno 
! 
BJID Y/N 
10001 rani0224 T 
10001 afkbo1 T 
아이템 사용이력 
uno 
! 
BJID 개수 
10001 rani0224 50 
10001 afkbo1 10 
방송 시청 이력 
uno 
! 
BJID 시청시간 
10001 rani0224 0.57 
10001 afkbo1 0.73 
10001 afmlb1 0.21 
추천이력 
uno 
! 
BJID Y/N 
10001 rani0224 1.0 
10001 afkbo1 1.0 
아이템 사용이력 
uno 
! 
BJID 개수 
10001 rani0224 0.5 
10001 afkbo1 0.1 
평균 평준화 
Boolean Value 
! 
[ F, T ] → [ 0 , 1] 
Scale 
! 
[0 , 100] → [0.0 1.0] 
1.0 (관심도)
0.0 
1.0 (관심도) 
평준화 
[0.0 , 1.0] 
시간 
가중치 
항목 
가중치 
30 
22.5 
15 
7.5 
0 
D D -2 D -4 D -6 D -8 D -10 D -12 D -14 D -16 D -18 D -20 D -22 D -24 D -26 D -28
0.0 
1.0 (관심도) 
평준화 
[0.0 , 1.0] 
시간 
가중치 
항목 
가중치 
30 
22.5 
15 
7.5 
0 
[ Tips. 시간 가중치 간단하게 처리 하는 법] 
= 데이터값 ÷ (경과일) = D/1 + D/2 + D/3 … D/30 
= 데이터값 ÷( (경과일) 
= 데이터값 ÷( log(경과일) ) 
D D -2 D -4 D -6 D -8 D -10 D -12 D -14 D -16 D -18 D -20 D -22 D -24 D -26 D -28
0.0 
1.0 (관심도) 
평준화 
[0.0 , 1.0] 
시간 
가중치 
항목 
가중치 
0.5 
0.375 
0.25 
0.125 
0 
0.1 
0.2 0.2 
0.5 
시청데이터 추천데이터 별풍선 스티커 
항목 가중치의 합은 = 1.0
0.0 
0.623573 0.57521 0.34565 0.21736 
1.0 (관심도) 
세부
 구현은?
0.0 
0.623573 0.57521 0.34565 0.21736 
1.0 (관심도) 
방송 시청 
이벤트 
추천 
이벤트 
아이템선물 
이벤트 
HDFS 방송시청 
평준화 
HQL 
Redis 
Cluster 
Sorted 
Set 
Hive 
External 
Table 
시간 
가중치 
HQL 
BJ 
관심도 
계산 
HQL 
(항목 
가중치) 
Redis 
Save 
(UDF) 
HQL 
추천 
평준화 
HQL 
아이템 
평준화 
HQL 
시간 
가중치 
HQL 
시간 
가중치 
HQL
0.0 
0.623573 0.57521 0.34565 0.21736 
1.0 (관심도) 
방송 시청 
이벤트 
추천 
이벤트 
아이템선물 
이벤트 
HDFS 방송시청 
평준화 
HQL 
Redis 
Cluster 
Sorted 
Set 
HIVE 
External 
Table 
시간 
가중치 
HQL 
Redis 
Save 
(UDF) 
HQL 
추천 
평준화 
HQL 
아이템 
평준화 
HQL 
시간 
가중치 
HQL 
시간 
가중치 
HQL 
MR-Hive 
Compati 
ble 
BJ 
관심도 
계산 
HQL 
(항목 
가중치)
0.0 
0.623573 0.57521 0.34565 0.21736 
1.0 (관심도) 
방송 시청 
이벤트 
추천 
이벤트 
아이템선물 
이벤트 
HDFS 방송시청 
평균화 
HQL 
Redis 
Cluster 
Sorted 
Set 
HIVE 
External 
Table 
시간 
가중치 
HQL 
Merge 
HQL 
Redis 
Save 
(UDF) 
HQL 
평균화 
추천 
HQL 
아이템 
평균화 
HQL 
시간 
가중치 
HQL 
시간 
가중치 
HQL 
MR-Hive 
Compati 
ble 
Query Base Processing
0.0 
0.623573 0.57521 0.34565 0.21736 
1.0 (관심도) 
방송 시청 
이벤트 
추천 
이벤트 
아이템선물 
이벤트 
HDFS 방송시청 
평균화 
HQL 
Redis 
Cluster 
Sorted 
Set 
HIVE 
External 
Table 
시간 
가중치 
HQL 
Merge 
HQL 
Redis 
Save 
(UDF) 
HQL 
평균화 
추천 
HQL 
아이템 
평균화 
HQL 
시간 
가중치 
HQL 
시간 
가중치 
HQL 
MR-Hive 
Compati 
ble 
Query Base Processing 
In 
Memory 
Store
BJ
 연관도
 측정
1.0 
0.0 
연관도 
Clustering BJ 유사도 
Matrix 
유사할것 같은 
BJ 끼리 묶음 
묶인 BJ간에 
유사도 측정
1.0 
0.0 
연관도 
Clustering BJ 유사도 
Matrix 
목적 : 
n=bj수, m=cluster 크기
Clustering 
Graph Clustering 
BJ 유사도 
Matrix
Clustering BJ 유사도 
Matrix 
클러스터링 결과
Clustering BJ간 
Similarity
 클러스터
 내
 
  
BJ간
 유사도
 계산
  
0.0 
연관도
잠깐!!
  
유사도(또는
 거리)
 알고리즘에
  
대하여
 알아
 보자
 ?
  
! 
Euclidean
 Distance
  
Cosine
 Similarity
  
Jaccard
 coefficient

[2B4]Live Broadcasting 추천시스템