글쟁이, 코딩한다

0216 / k_digital 46일차 / 파이널프로젝트 본문

나는 코딩도 한다/TIL

0216 / k_digital 46일차 / 파이널프로젝트

Algori 2021. 2. 16. 23:34

0.

이상형 월드컵 기반 영화 추천 사이트

 

1.

추천 시스템을 이해하는데 시간을 많이 썼다. 팀장님이 주신 자료를 바탕으로 개인 자료도 더해서 공부했다.

 

추천 시스템

추천은 왜 중요할까. 추천의 중요함은 이제 모두들 알테다. 유튜브와 넷플릭스, 스포티파이와 아마존, 네이버 쇼핑과 웹툰... 상품 구매와 콘텐츠 등 대중을 상대로 한 장사에서 '추천'은 곧 성공으로 이어졌다. 취향은 이제 더는 개인의 영역이 아니다. 취향 역시 기업과 자본이 결정한다. 그리고 이 취향을 쥐락펴락하는 것, 그것이 추천.

 

너무 과한 버전이다. 아무튼 추천 시스템을 제대로 활용한다면 기업들이 큰 이득을 볼테다. 유튜브 최고 상품 담당자(CPO) 닐 모한은 지난해 뉴욕타임스와의 인터뷰에서 “유튜브 시청시간 70%가 추천 알고리즘에 의한 결과며, 알고리즘 도입으로 총 비디오 시청시간이 20배 이상 증가했다”고 했다. 단적인 예다.

내 유튜브 첫 화면은 모두 나의 관심사로 채워져 있다. 이 짧은 8개 화면이 최근 내 생활을 모두 대변하고 있다 해도 과언은 아닐 테다.


추천 시스템은 워낙 유명해서 조금만 검색해도 수많은 결과값이 나온다. 나는 영화 추천 시스템을 만들고 있으므로 이에 기반해 간단히 정리한다.

 

이 시스템은 크게 보면, 콘텐츠 기반 필터링과 협업 필터링으로 나뉜다.


1 콘텐츠 기반 필터링(content-based filtering)

 

 사용자가 이전에 본 영화 가운데 좋아한 것들과 유사한 영화를 추천한다. 기본적이며 좀 더 고전적인 접근 방식이다. 

 

 이 필터링(사용자에게 적합한 방식을 선택하기) 방식은 두 가지를 필요로 한다. 영화 정보와 사용자 정보다. 영화를 장르, 감독, 배우 등 세부 정보에 따라 분해한다. 이어 사용자가 좋아한 영화를 콕 집어 저렇게 분해한 정보를 바탕으로 이와 가장 유사한 영화를 추천한다.

 

장점 : 여러 사용자를 대상으로 쉽게 확장할 수 있다.

추천할 수 있는 상품의 가짓 수가 넓다. 꼭 대중이 많이 선택한 영화가 아닌 경우, 이용자가 관심사가 아니라고 생각했던 영화도 추천할 수 있다.

추천의 이유를 설명하기 좋다.

(큰 장점) 콘텐츠 기반 협업필터링은 새로운 item이 들어온 경우에도 추천이 가능하다(cold start 대응)

 

단점 : 영화 특징을 잘 추출해야 하는만큼 높은 수준의 도메인 지식이 필요하다.

기존 관심사항을 기반으로만 추천한다. 즉, 한 이용자에게는 맨날 추천하는 것만 똑같이 추천한다.

(큰 단점) 잘 정돈된 메타데이터를 구하기가 어렵다. 이용자들은 자기 취향을 잘 안 알려준다. 귀찮기 때문이다.

 

콘텐츠 기반 필터링. 이미지 출처 : https://c11.kr/mg1p

 

  적용 방식

1. 텍스트(Items)를 벡터 형태로 변환(BERT, word2vec, TF-IDF)

2. 벡터들간의 유사도를 계산

 

 1 단어 벡터화

 

1) TF-IDF

자주 나오는 단어는 중요도를 낮추고 특정 문서에서만 많이 나오는 단어의 중요도를 높인다. 빈도수를 기반으로 많이 나오는 단어를 잡아주는 Counter Vectorizer


특정 문서 내 단어 빈도(TF)와 전체 문서 내 특정 문서 안 특정 단어의 등장 횟수(DF)를 계산
TF : 특정 문서 d에서 특정 단어 t의 등장 횟수 ; DF : 특정 단어 t가 등장한 문서 수 ; IDF : DF(t)에 반비례 == TF x IDF

 

유사도 적용 ; 단점은 메모리 문제

 

2) Word2Vec

메모리 문제를 해결 ; 대규모 말뭉치 메모리 ; 학습 데이터를 한 번으로 진행 ; 학습으로 개선이 힘들다
단어간 유사도를 반영해 단어를 벡터로 바꿔준다. 어떤 주변 단어와 같이 나오느냐에 따라 유사도를 분석.

 

보통 중간 단어로 주변 단어를 예측하는 skip-gram 모델을 활용(조금 더 어려운 태스크를 활용해야 하기에 더 똑똑함). <=> 주변 단어로 중간 단어를 찾는 CBOW 모델은 정확도가 좀 떨어진다.

 

 2 유사도 구하기


1)유클리디안 유사도 : 유클리디안 거리의 역을 취한 방식 : p와 q 벡터 사이 거리
; 계산이 쉽다. 크기에 민감할 때 효과가 크다 ; 분포가 다르거나 범위가 다르면 문제가 생긴다

 

2)코사인 유사도 : 각도(방향, 기울기)에 따라 측정 : 가장 일반적인 방식
; 벡터 크기가 중요하지 않을 때 거리를 측정한다(단어 빈도수) ; 벡터 크기(2차원 그래프 기준 벡터값들 사이 거리)가 중요할 때는 잘 작동하지 않는다

 

3)피어슨 유사도 : 상관관계 분석 시 사용

 

4)자카드 유사도 : 집합 결합에 따른 거리

 

그 외 유사도를 구하는 방식은 굉장히 많다. 고객 집단에 따라 다른 유사도 지표를 적용할 수 있다. 상황에 맞게 모델을 적용하며 필요에 따라서는 유사도를 다수 섞기도 한다.

 

 

2 협업 필터링(Collaborative Filtering)


이용자의 행동양식을 기반으로 추천하기

 

협업 필터링은 대규모 이용자 정보에 힘입어 콘텐츠를 추천한다. 여태 쌓아올린 데이터를 바탕으로 이용자가 자기 취향을 밝히지 않아도, 적은 정보로 그의 취향을 찾아 제공해 주는 방식이다. 아마 어, 나는 별점 몇 개 안 줬는데 왜 이리 나를 잘 알아, 하는 반응을 이끌어낼테다.

 

장점 : 내가 대답을 안 해도 추천 시스템은 내 취향을 이미 알고 있다.

 

단점 : 새 콘텐츠는 이에 대한 정보가 쌓일 때까지 추천을 잘 못 한다. (Cold Start)

다양한 연산이 얽혀 있어서 시간이 오래 걸린다.

사람들이 좋아한 콘텐츠만 주구장창 추천해준다. 인기 없는 콘텐츠는 추천에서 배척당한다. (Long Tail)

 

; 그간 이런 영화를 좋다고 했으니 이 영화 역시 좋아할 거야.

사용자 기반 협업 필터링. 이미지 출처 : https://c11.kr/mg1p

협업 필터링은 다시 두 가지로 나뉜다. 최근접 이웃 기반 협업 필터링과 잠재 요인 기반 협업 필터링이다.

 

2 - 1 최근접 이웃 기반 협업 필터링  

  비슷한 데이터 분포를 가진 다른 사례를 찾아 추천하기.

 

2 - 1- 1) 사용자 기반 협업 필터링
선호도가 비슷한 고객들이 본 영화를 추천한다 ;  당신과 비슷한 선호도를 가진 고객들이 이 추천 영화를 재밌게 봤다!

 

비슷한 상품을 좋아한다고 취향이 같지는 않다 ; 아주 유명한 영화는 많은 사람이 보고 좋은 평가를 준다.

 

2 - 2 - 2)아이템 기반 협업 필터링

이 영화를 본 고객들이 높은 평점을 준 영화를 추천한다 ; 이 영화를 좋게 본 다른 이용자들은 이 추천 영화도 좋게 봤다!

 

간단하고 직관적 ; 추천의 이유를 정당화할 수 있다

이용자 기반 방법의 시간, 속도, 메모리가 많이 필요하다 ;; 많이 본 콘텐츠에만 평가가 들어간다

 

 

2 - 2 잠재 요인 협업 필터링

 

잠재적인 핵심 요인을 찾아내 뽑아내고 이를 기반으로 추천하는 방법.

 

=> 잠재 요인을 찾기 위해서는 행렬 분해를 진행한다.

원본 데이터가 있다. 빈 공간이 많다

 

=> 쪼갠다.
사용자-잠재 요인 행렬, 아이템-잠재 요인 행렬, 대각행렬 세 가지로 나뉜다. 이 과정에서 잠재 요인을 얻을 수 있다.

 

행렬 분해 과정에서 잠재 요인을 얻어냈다. 잠재 요인은 영화 장르다.

과정 1. A는 코미디 영화를 좋아하고 액션 영화를 싫어한다, B는 반대다.(사용자-잠재 요인 행렬)

과정 2. 영화 A는 코미디 요소가 2, 액션 요소가 3이고, 영화 B는 코미디 요소가 1, 액션 요소가 4, 영화 C는 코미디 요소가 5, 액션 요소가 0이다.(아이템-잠재 요인 행렬)
과정 3. 이 두 행렬을 합친 후 A에게는 영화 C를, B에게는 영화 B를 추천하는 것이다.(잠재 요인 기반 추천)

 

하지만 행렬 분해 과정에서 영향을 끼치는 잠재 요인이 무엇이 될 지는 보통 정확히 알 수 없다고 한다. 구매에 가장 많은 영향을 끼치는 특징일까?

 

공부용 자료

 

한국콘텐츠진흥원에서 발간한 인사이트 잡지. <콘텐츠 추천 알고리즘의 진화> 꼭지를 보면 이해가 쉽다. 서울대 서봉원 교수

 

한국콘텐츠진흥원

문화, 콘텐츠제작종합지원센터, 지원사업, 인프라구축, 인력양성, 문화사업 운영, 연구보고서

www.kocca.kr

추천시스템 정리와 예제. 아주 친절하고 세밀한 블로그.

 

추천 시스템(Recommendation system)이란? - content based filtering, collaborative filtering

포스팅 개요 이번 포스팅은 추천 시스템(recommedation system)에 대해서 알아봅니다. 또한, 추천 시스템에는 컨텐츠 기반 필터링(content based filtering)과 협력 필터링(collaborative filtering)이 있는데요...

lsjsj92.tistory.com

추천 시스템 적용에 관한 유튜브 영상. T아카데미 제공

 

오늘의 TML

 

추천 시스템을 위한 라이브러리 : scikit-surprise

이용자가 자기 선호도를 직접 표현한 데이터 = Explicit Feedback / ex. 별점 데이터

 

오늘 한 일

 

콘텐츠 기반 필터링으로 비슷한 장르 영화 추천하기

콘텐츠 기반 필터링을 거친 추천. 예시 영화는 토이스토리.

 

Comments