비전공자도 이해할 수 있는 AI지식 -나와 취향이 비슷한 사람이 본 것을 추천해준다-

1. 콘텐츠 기반 필터링 - 내가 좋아하는 것과 비슷한 것을 추천해준다

 

유튜브나 영화나 영상의 기본적인 추천 방식은 크게 다르지 않습니다

 

먼저 추천 시스템은 보통 다음과 같은 2가지 방식을 대표적으로 사용합니다.

 

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

 

내가 선호하는 영화와 비슷한 영화를 추천하는 방식

 

2) 협업 필터링(Collaborative filtering)

 

나와 비슷한 고객이 시청한 영화를 추천하는 방식

 

https://velog.io/@ijune97/RecommendationAlgorithm

 

 

먼저 콘텐츠 기반 필터링부터 살펴보겠습니다. 콘텐츠 기반 필터링은 고객이 선호하는 영화의 특징에 기반해 유사한 영화를 추천해줍니다.

 

예를 들어 액션 영화를 선호하면 또 다른 액션 영화를, 공포 영화를 선호하면 또 다른 공포영화를 추천하는 식이죠

 

영화/특징 공포-드라마 판타지-현실
살인의 추억 -0.56 0.33
겨울왕국 0.74 -0.95
부산행 -0.81 -0.66
건축학개론 0.84 0.77
추격자 -0.64 0.49

 

 

5편의 영화를 살펴보고 각각의 특징을 수치로 표현해봤습니다.

 

2가지 특징으로 정의했습니다. 하나는 공포-드라마이고 또 다른 하나는 판타지-현실입니다.

 

예를 들어 공포-드라마가 -1에 가깝다면 공포 영화에 가깝고, 1에 가깝다면 드라마에 가까운 영화입니다.

 

<살인의 추억>의 경우 공포-드라마 점수가 -0.56으로 다소 무서운 영화이고,

 

판타지-현실은 0.33으로 어느 정도 현실에 가까운 이야기입니다.

 

실제로 <살인의 추억>은 실화를 기반으로 한 영화이기도 하죠.

 

이제 <살인의 추억>을 감상한 고객에게 어떤 영화를 추천하면 좋을까요?

 

좀 더 직관적으로 이해할 수 있도록 2차원 좌표계에 표현해보겠습니다.

 

 

영화의 특징을 좌표 공간에 시각화했습니다.

 

콘텐츠 기반 필터링으로 <살인의 추억>을 감상한 고객에게 영화를 추천하려면 표에서 가장 가까이에 있는 <추격자>를 추천해주면 될 것 같습니

 

비슷한 장르의 영화이기 때문에 큰 불만 없이 볼 것 같습니다.

 

참고로 '가까이'의 기준은 앞에서 살펴본 코사인 거리를 이용하면 됩니다.

 

코사인 거리가 가장 가까운 영화를 비슷한 영화로 추천하는 거죠.

 

 

 

이렇게 콘텐츠의 특징에 따라 영화를 추천하면 다른 고객 데이터는 필요하지 않습니다. 오로지 현재 고객이 선호하는 특징만 알 수 있으면 되죠.

 

영화에 대한 특징 정보를 갖고 있다면, 고객이 선호하는 특징과 일치하는 영화를 제안할 수 있습니다.

 

다른 고객은 거의 관심을 갖지 않는 희귀한 영화도 문제 없습니다.

 

영화의 특징만 추출할 수 있다면 아주 희귀한 영화도 추천할 수 있습니다.

 

그런데 영화에서 특징을 추출한다는 게 쉬운 일은 아닙니다. 특징을 규정짓는 것 자체가 어렵죠.

 

'코미디, 전쟁, 역사'등의 장르로만 분류한다면 충분할지 아니면 또 다른 뭔가를 얼마나 더 추출해내야 할지 규정하기가 어렵습니다.

 

사실 특징이라는 건 얼마든지 계속해서 만들어낼 수 있고 또 대부분은 사람이 직접 분류해야합니다.

 

무엇보다 이렇게 특징을 추출한다 해도 어느 정도 이상의 성능을 기대하기는 어렵습니다.

 

특징을 세분화한다고 해서 고객의 관심사를 확장하기는 어렵기 때문입니다.

 

<살인의 추억>을 좋아하는 고객에게서 공포, 스릴러의 특징을 추출해 <추격자> 같은 영화만 계속해서 추천해서는 곤란하겠죠.

 

 

2. 협업 필터링 - 비슷한 고객의 취향을 추천해주다 -

 

이처럼 콘텐츠 기반의 필터링은 한계가 분명합니다.

 

때문에 고객이 선호하는 영화 자체의 특징에 집중하기보다는 범위를 좀 더 확장하여 유사한 고객의 정보를 활용해볼 수 있습니다.

 

이렇게 하면 추출한 특징에서 벗어나기 어려운 콘텐츠 기반 필터링의 한계를 극복해볼 수 있죠

 

예를 들어 내가 액션 영화광이라면 나처럼 액션 영화를 즐겨보는 또 다른 고객이, 전쟁 영화도 많이 본다는 사실을 알면,

 

나에게 전쟁 영화를 추천해줄수도 있습니다.

 

즉 관심사를 확장할 수 있는 거죠. 이 같은 방식을 협업 필터링이라고 합니다.

 

이제 협업 필터링으로 영화를 추천해보겠습니다.

 

고객/영화 살인의 추억 겨울왕국 부산행 건축학개론 추격자
태연 4 1 - - -
아이유 2 2 1 ? -
수지 2 3 1 5 -
민경 - 5 3 - 1

 

아이유는 <살인의 추억>에 2점, <겨울왕국>에 2점, <부산행>에 1점을 주었습니다.

 

그렇다면 아이유에게 어떤 영화를 추천해주면 좋을까요?

 

먼저 성향이 가장 비슷한 고객을 찾습니다.

 

비슷한 점수를 부여한 고객을 찾으면 됩니다. 수지는 아이유와 비슷하게 영화들에 점수를 주었습니다.

 

수지는 <건축학개론>에 5점 만점을 주었습니다. 수지에게 가장 만족스러운 영화였다고 생각할 수 있고 수지와 성향이 비슷한 아이유에게도 <건축학개론>을 추천해준다면 어떨까요?

 

수지가 5점을 주었으니 아이유도 충분히 만족할 것입니다.

 

여기까지가 협업 필터링의 기본 원리입니다. 이처럼 협업 필터링은 고객과 영화 사이의 관계에 중점을 둡니다.

 

여러 고객이 영화에 점수를 매기고, 매겨진 점수의 유사성에 따라 영화간의 유사성을 결정하는 거죠.

 

여기서 핵심은 고객 간의 유사도입니다. 유사도가 큰 고객들을 연결해 관심이 있어할 만한 영화를 추천해주는 거죠.

 

 

 

TAGS.

Comments