추천 시스템의 기본 - 협업필터링(Collaborative Filtering)
Mes itinéraires : 네이버 블로그 (naver.com)
협업 필터링, 당신의 추천 영화는?
협업 필터링의 이해
협업 필터링(collaborative filtering)은 다수의 사용자들로부터 얻은 기호정보(taste information)를 기반으로 사용자들의 관심사를 자동적으로 예측하는 기법입니다. 협업 필터링 접근법은 사용자들의 과거 경향이 미래에도 유지될 것이라고 가정합니다. 예를 들어, 음악 추천 시스템에서 협업 필터링은 사용자들의 기호(좋아함, 싫어함)에 대한 부분적인 목록을 이용하여 해당 사용자의 음악 기호를 예측합니다. 이 시스템의 특징은 특정 사용자의 정보에만 초점을 맞추는 것이 아니라 다수의 사용자들로부터 수집한 정보를 활용한다는 점입니다. 이는 각 아이템에 대한 관심사에 평균적인 평가를 처리하는 방법과 구별됩니다. 즉, 협업 필터링은 고객들의 선호도와 관심 표현을 바탕으로 유사한 패턴을 가진 고객들을 찾아내는 기법으로 사용됩니다. 서로 비슷한 취향을 가진 고객들에게 아직 구매하지 않은 상품을 교차 추천하거나, 분류된 고객의 취향이나 생활 형태에 따라 관련 상품을 추천하는 서비스를 제공하기 위한 목적으로 활용됩니다
두가지 협업 필터링
협업 필터링은 사용자를 기반으로 하는지 아이템을 기반으로 하는지에 따라 두가지로 나뉩니다.
https://medium.com/@toprak.mhmt/collaborative-filtering-3ceb89080ade
https://medium.com/@toprak.mhmt/collaborative-filtering-3ceb89080ade
Collaborative Filtering. In this blog, I’ll be covering a… | by Mehmet Toprak | Medium
Collaborative Filtering
In this blog, I’ll be covering a recommender system technique called collaborative filtering. So let’s get started. Collaborative…
medium.com
우선 협업 필터링의 두가지 기반에 대해 설명하기 전에 유사도를 계산하는 3가지 방식을 설명해드리겠습니다.
유사도 이해하기
코사인유사도는 평점을 벡터로 생각하기 때문에 측정 기준이 벡터의 각도입니다(각도의 코사인 값 = 유사도 값). 즉, 2개 벡터사이의 각도를 계산하고, 그 각도가 작을수록 가까이 있기 때문에 유사하다고 판단하는 방식입니다.
벡터 A,B 가 다음과 같이 정의될 때 A=(0, 1, 4), B=(2, 1, 3) 아래와 같이 계산될 수 있습니다. (각 스칼라값은 영화 평점을 예시로 들 수 있습니다 )
자카드 유사도(Jaccard similarity)는 두 집합 사이의 유사도를 나타내는 방법 하나로, 각 집합의 원소(element)의 개수가 얼만큼 겹치는가를 나타냅니다. 자카드 유사도는 합집합과 교집합의 개념을 이용하여 계산됩니다. 두 개의 집합 A와 B가 있을 때, 두 집합의 교집합의 크기를 합집합의 크기로 나눈 값으로 정의됩니다. 즉, 자카드 유사도 = (A와 B 사이의 교집합 크기) / (A와 B 사이의 합집합 크기) 이 값은 0과 1 사이의 값으로, 두 집합 사이의 유사도를 나타내게 됩니다. 공통된 원소가 없는 경우(두 집합이 독립된 경우) 값은 0이며, 모든 원소가 공통된 경우(두 집합이 완전히 같은 경우) 값은 1이 됩니다. 자카드 유사도는 대표적으로 여러 개의 원소나 단어로 구성된 문서나 문장들 간의 유사도를 판단하는 데에 사용됩니다. 두 문서나 문장 간에 공통으로 사용된 단어의 개수가 많다면 유사도가 높고, 그렇지 않다면 유사도가 낮다고 판단할 수 있습니다.
피어슨 상관계수(Pearson correlation coefficient)는 두 개의 변수(또는 벡터) 사이의 선형적인 관계를 측정하는 지표 중 하나입니다. 두 변수(또는 벡터) 간의 상관관계는 두 변수의 상관성이 얼마나 강한지를 표현합니다. 피어슨 상관계수는 -1과 1 사이의 값을 가지며, 1은 완전한 양의 선형 상관관계를, -1은 완전한 음의 선형 상관관계를 의미합니다. 값이 0일 때는 두 변수 간에 선형적인 상관관계가 없음을 나타냅니다. 두 벡터 X, Y 사이의 피어슨 상관계수는 다음과 같이 계산됩니다.
1. 먼저 두 벡터 X, Y의 평균값(mean)을 계산합니다.
2. 벡터 X와 Y를 정규화(normalize)합니다.
3. 두 벡터 X, Y 간의 코사인 유사도(cosine similarity)를 계산합니다.
4. 코사인 유사도에 분산이 들어간 표준화된 값으로 변환합니다
이렇게 구한 표준화된 값을 피어슨 상관계수로 정의합니다.
- 사용자 기반 협업 필터링(User-based Collaborative Filtering)
넷플릭스의 영화 추천 알고리즘 (brunch.co.kr)
이 방식에서는 사용자 간의 유사성을 기반으로 추천을 생성합니다. 여기서는 먼저 사용자와 다른 사용자 간의 유사도를 계산한 다음, 사용자가 아직 평가하지 않은 항목을 선택하여 예측 결과와 유사한 다른 사용자의 평가를 바탕으로 추천합니다. 이로써 사용자와 비슷한 취향을 가진 다른 사용자들이 좋아한 항목을 찾아 추천할 수 있습니다.
사용자 기반의 협업 필터링에서의 유사도는 두 사용자가 얼마나 유사한 항목(아이템)을 선호했는지를 기준으로 합니다. 사용자 기반에서는 한 사용자가 평가한 영화들의 점수들을 벡터로 나타낼 수 있습니다. 이 때 두 사용자 간의 유사도는 두 벡터 간의 유사도로 정의할 수 있다. 두 벡터 간의 유사도를 구하기 위해서 다양한 방법이 사용될 수 있는데 대개는 코사인 유사도, 피어슨 유사도 그리고 자카드 유사도가 이용됩니다. (해당 유사도 들은 아이템 기반 협업 필터링에서도 똑같이 적용됩니다)
- 아이템 기반 협업 필터링(Item-based Collaborative Filtering)
아이템 기반 협업 필터링(Item-based Collaborative Filtering)에서는 항목 간의 유사성을 기반으로 추천을 생성합니다. 여러 사용자가 평가한 항목을 기반으로 항목 간 유사도를 계산한 다음, 사용자가 아직 평가하지 않은 항목의 추천을 그와 관련된 항목의 평가를 바탕으로 생성합니다. 이렇게 하면 사용자가 과거에 관심을 보였던 항목과 유사한 새로운 항목을 찾아 추천할 수 있습니다. 아이템 기반도 사용자 기반과 매우 유사한 과정을 거칩니다. 다만 앞에서는 사용자에 대한 유사도를 계산했다면, 여기서는 아이템들에 대한 유사도를 계산합니다. 아이템 기반에서도 앞에서 처럼 아이템 수 * 아이템 수 크기의 유사도 행렬을 만들 수 있다. 이를 기반으로 역시 예측 점수를 구할 수 있습니다.
협업필터링, 장점만 있는걸까?
많은 사용자에게서 얻은 기호 정보로 새로운 아이템을 추천하는 협업필터링은 직관적으로 이해하기 쉽고, 합리적인 것처럼 보입니다. 하지만, 기존의 기록으로 분석하기 때문에 다음의 문제를 야기합니다.
첫째, 콜드 스타트(Cold start) 문제입니다. 새로운 아이템이나 사용자가 추가되면, 충분한 사용기록이 확보될 때까지는 적절한 추천을 하기 어렵습니다.
둘째, **롱테일(Long tail)**의 문제입니다. 인기 편향성의 문제라고도 합니다. 사용자가 소수의 아이템만 선호하여, 대다수의 비인기 아이템들은 추천을 위한 충분한 정보가 쌓이지 못합니다.
셋째, 사용기록 규모성의 문제입니다. 사용기록 데이터가 적으면, 추천의 정확성도 낮아지지만 사용기록이 너무 많을 경우에도 문제가 발생한다. 유사집단을 분류할 때 적용해야 하는 알고리즘이 많고, 처리시간도 길어지기 때문입니다.
넷플릭스의 추천시스템
- 넷플릭스의 성공 요인 중 하나: 추천 시스템
지금은 넷플릭스가 온라인 VOD 서비스 업체로 자리잡았지만, 처음에는 우편으로 DVD를 빌려주는 회사로 시작했습니다. 우편으로 DVD를 빌려주면 대여와 회수에 걸리는 시간이 일반 비디오 대여점보다 길다는 단점이 있습니다.
하지만 사람들의 DVD 선택 경향에서 문제가 있었습니다. 사람들이 최신작이나 인기작을 주로 빌린다는 점이었습니다. 아무리 다양한 영화를 구비해 놓아도 최신작만 빌려가면 순환이 제대로 되지 않습니다. 이를 극복하기 위해서는 많은 신작을 구매해야 해서 비용이 늘어납니다. 흥행이 끝난 영화는 더 이상 가치를 발휘하지 못하고 재고비용만 늘립니다.
넷플릭스의 이런 고민을 해결한 것이 추천 시스템입니다. 넷플릭스는 이용자 개개인의 취향에 맞는 영화를 추천해줍니다. 비록 몇 년 전에 나온 영화라도 내가 좋아할만한 영화를 알려주는 것입니다. 고객들이 이 추천시스템을 신뢰하게 되면서, 최신작이 아니라 오래된 영화를 빌려가는 고객이 늘어났습니다. 이는 신작구매 비용과 재고 비용을 줄여 넷플릭스의 수익구조를 개선했습니다.
이처럼 넷플릭스는 서비스 이용자들이 영화를 선택하는 것을 돕기 위해 이용자 개개인에 맞는 ‘맞춤형 추천’ 서비스를 도입하였고 수많은 개선 과정을 통해 후속 개발된 맞춤형 추천 서비스 알고리즘이야말로 넷플릭스 성공의 중요한 견인차 역할을 하고있습니다.
그러면 넷플릭스에서는 어떤 추천시스템을 활용할까요?
넷플릭스의 추천시스템
넷플릭스는 초기에 주로 협업 필터링(Collaborative Filtering) 기술을 활용하여 추천 시스템을 구현했습니다. 협업 필터링은 이전에 말한 바와 같이 사용자들의 이용 패턴과 콘텐츠의 상호작용을 분석하여 유사한 관심사를 가진 사용자들끼리 또는 유사한 특성을 가진 콘텐츠들끼리 연관성을 찾아내는 방식입니다. 예를 들어 히어로물을 좋아하는 이용자들을 같이 묶어놓고 A라는 사용자가 어벤져스를 보고 추천을 눌렀다면 같은 취향의 B에게 추천해주는 방식입니다.
하지만 현재 넷플릭스는 기술적인 발전과 데이터의 증가에 따라 협업필터링의 단점을 극복하고 더욱 정교한 추천 시스템을 구현하기 위해 딥러닝과 같은 머신러닝 기법들을 적극적으로 도입하려고 노력합니다. 현재에는 하이브리드 추천 시스템을 사용하여 더욱 개선된 추천을 제공하고 있습니다. 하이브리드 추천 시스템은 협업 필터링과 콘텐츠 기반 추천 기법을 조합하여 사용자 경험을 최적화합니다. 이렇게 하면 사용자들의 과거 평점이나 상호 작용 데이터와 더불어 영화나 드라마의 장르, 감독, 배우 등 콘텐츠 특성도 고려하여 보다 정확한 추천이 가능하게 됩니다. 이를 통해 넷플릭스는 개별 사용자의 시청 패턴과 취향에 맞춘 정교한 추천을 제공하여 서비스 이용자들의 만족도와 사용자 경험을 높일 수 있습니다.
넷플릭스는 왜 추천시스템에 집중할까?
우선 추천시스템은 사용자에게 다양한 경험을 선사해줄 수 있습니다. 넷플릭스는 많은 콘텐츠를 보유하고 있기 때문에 사용자들이 원하는 콘텐츠를 쉽고 빠르게 찾는 것이 중요합니다. 추천 시스템을 통해 맞춤형으로 콘텐츠를 제공함으로써 사용자들은 더욱 편리하게 원하는 콘텐츠를 발견하고 시청할 수 있습니다. 이로 인해 사용자들의 만족도가 증가하고, 넷플릭스를 오랫동안 이용하고자 하는 충성 고객들이 늘어나는 효과를 가져옵니다.
또한 추천시스템은 고객을 유치하고 이탈을 방지합니다. 최근 비디오 스트리밍 시장은 경쟁이 점점 치열해지고 있습니다. 고객의 이탈을 막는 것이 중요합니다. 추천 시스템은 사용자들에게 개인화된 콘텐츠를 제공하여 콘텐츠의 다양성과 품질을 높여주기 때문에 고객 유치에 큰 도움이 됩니다. 또한, 추천 시스템을 통해 사용자들이 지속적으로 새로운 콘텐츠를 발견하고 이용하게 되면 이탈 가능성을 줄일 수 있습니다.
처음에 말한 부분과 같이 추천시스템은 콘텐츠 활용도도 증가시킵니다. 넷플릭스가 콘텐츠를 구매하거나 생산하는 데에는 많은 비용이 투자됩니다. 추천 시스템은 사용자들이 다양한 콘텐츠를 발견하고 시청할 수 있도록 도와주므로, 단순히 신규 VOD만 스트리밍 되는 것이 아니라 다양한 콘텐츠의 활용도를 높여주는 역할을 합니다. 이는 기존 콘텐츠의 가치를 더욱 극대화시키고 새로운 콘텐츠를 성공적으로 홍보하는 데에도 도움이 됩니다.
따라서 넷플릭스는 사용자들에게 더욱 가치있는 콘텐츠 경험을 제공하기 위해 추천 시스템에 집중하고 있으며, 이를 통해 고객 만족도와 이용자들의 재생 시간 증가에 크게 기여하고 있습니다. 맞춤형 추천 서비스는 넷플릭스의 경쟁력을 높이는 데에 핵심적인 역할을 하고 있으며, 지속적인 기술적 발전과 데이터 분석을 통해 더욱 정교한 추천 시스템을 구축하고 개선해 나갈 것으로 기대됩니다.
더 세부적으로는 추후에 다루도록 하겠습니다.