추천 시스템 입문 1-4장
1.1 추천 시스템
추천 시스템 : 우리가 다음에 무엇을 하면 좋을지 의사 결정을 지원하는 기술
이 책에서는 추천 시스템을 여러 후보 가운데 가치 있는 것을 선정해서 의사 결정을 지원하는 시스템이라 정의하고 설명
'여러 후보 가운데 가치 있는 것을 선정한다' = 비즈니스 목적에 맞춰 알고리즘을 적절하게 선택해서 사용해야 한다는 의미
1.2 추천 시스템의 역사
1990년대 인터넷 발전과 함께 정보화되고 여러 후보 가운데 가치 있는 것을 선정하는 기술이 중요해짐.
제록스 팔로알토 연구소의 연구자 골드버그는 대표적인 추천 알고리즘의 하나인 협조 필터링을 처음으로 조합한 추천 시스템을 제안했음.
그가 제안한 추천 시스템은 태피스트리라 불렸으며 날로 늘어나는 전자 메일중 유익한 메일을 선택하는 것.
협조필터링을 사용한 메일 스코어링을 제안했음.
1.3 추천 시스템의 종류
추천 시스템은 입력(데이터 입력), 프로세스(추천 설계), 출력(추천 결과 제시)의 3요소로 정리할 수 있음.
1.3.1 입력(데이터 입력)
추천 시스템에 사용하는 데이터는 주로 콘텐츠와 인터렉션 두 종률가 있음.
사용자와 아이템의 콘텐츠 정보
사용자의 콘텐츠 정보는 나이, 성별, 주소 등 프로필 정보이다.
아이템의 콘텐츠 정보는 카테고리, 상품 설명문, 발매일, 가격, 제작자 등이다.
콘텐츠 정보를 이용하는 추천을 내용 기반 필터링이라 부른다.
사용자와 아이템의 인터렉션 정보
인터렉션 정보는 사용자가 서비스 안에서 행동한 이력 데이터를 말한다.
인터렉션 정보를 사용하는 추천을 협조 필터링이라 부른다.
콜드 스타트 문제 : 사용자나 신규 아이템 데이터가 적어 추천이 어려워지는 것
1.3.2 프로세스(추천 설계)
개요 추천(개인화 없음)
모든 사용자에게 동일한 내용을 제시한다.
기술은 매우 간단하지만 업종에 따라서는 개인화를 적용한 것보다 클릭률이나 구매율이 높은 경우도 있다.
연관 아이템 추천
연관 아이템 추천은 사용자가 사이트 안에서 체류하는 시간을 늘리고 원하는 아이템을 쉽게 만나게 한다.
연관 아이템 설계에는 각 아이템 유사도를 사용한다.
유사도 설계에는 아이템 설명문/카테고리 정보 등 콘텐츠 정보를 기반으로 설계한 내용 기반 필터링 방법과 사용자 행동 이력을 기반으로 함께 확인하기 좋은 아이템을 유사한 것으로 설계하는 협조 필터링 방법이 있다.
개인화 추천
개인화 추천 : 사용자의 프로필이나 행동 이력을 기반으로 각 사용자에 맞춰 추천하는 것
콘텐츠 기반으로 추천할 때는 나이나 거주지 등 프로필 정보를 기반으로 그에 맞는 앙이템 그룹을 설계한다.
사용자와 아이템의 인터렉션 데이터를 기반으로 추천할 때는 협조 필터링 등의 방법을 사용한다.
사용자 행동 이력을 기반으로 추천하는 방법 중에서도 열람 이력을 그대로 표시하는 추천은 구현 비용이 적은 방법이다.
이는 구현 비용이 낮은 것에 비해 효과가 높다.
열람 이력과 연관 아이템 추천 구조를 조합해서 사용하기도 한다.
1.3.3 출력(추천 결과 제시)
제시 방법이 나쁘면 사용자의 행동을 이끌어낼 수 없다.
다양한 방법으로 아이템을 사용자에게 도달하도록 할 수 있고 추천 이유를 곁들이거나 적절한 시점을 예측하는 등 제시 방법도 다양하다.
1.4 검색 시스템과 추천 시스템
1.4.1. 검색 시스템
검색 시스템 : 키워드를 입력해서 원하는 문장을 찾아내는 기술
검색 시스템은 웹 사이트 검색에 사용되는 방법으로 구글 창업자가 발명했으며 페이지 랭크라 불리는 알고리즘이 많이 알려져 있다.
1.4.2 검색 시스템과 추천 시스템 비교
검색과 추천은 모두 '많은 아이템에서 가치 있는 아이템을 선택'하는 것
사용자는 이 둘을 다른 목적으로 사용하며 'Pull 타입'인지 'Push 타입'인지로 설명되기도 한다.
검색에선 사용자가 원하는 것을 미리 파악하고 있으며 검색 키워드(쿼리)를 입력해 능동적으로 알고자 하는 정보나 상품을 많은 후보 가운데 끌어낸다.(Pull 타입).
검색에서는 쿼리의 의도를 읽어 연관도가 높은 아이템을 표시하는 것이 중요하다.
추천에서는 사용자가 원하는 것을 미리 명확하게 파악하고 있지 않더라도 사용자는 검색 키워드 등을 입력하지 않으며 사용자가 좋아하는 상품을 시스템잉 제시한다.(Push 타입)
검색과 추천은 한쪽만 조합해선 충분하지 않고, 서로 협력할 필요가 있다.
2.1 추천 시스템 개발에 필요한 3가지 스킬
데이터 과학자에게 필요한 스킬셋으로 '비즈니스 문제 해결 능력', '데이터 사이언스 능력', '데이터 엔지니어링 능력'의 3가지 스킬이 필요하다고 정의했다.
비즈니스 문제 해결 능력
비즈니스 관점에서 추천 시스템을 도입함으로써 무엇을 기대할 수 있는지 정의하는 것이 중요하다.
추천 시스템을 도입함으로써 사용자의 어떤 행동 변화를 기대하는가에 대한 Key Goal Indicator(KGI) 또는 fKey Performance Indicator (KPI) 책정이 매우 중요하다.
사용자의 어떤 행동을 최대화하고 싶은지에 따라 구현할 추천 시스템이 달라진다.
KPI를 책정할 때는 대상 시스템에 관해 숙지하고 서비스상에서의 사용자 행동에 관해 깊이 이해해야 한다.
KPI를 책정할 때는 현재 얻은 데이터에서 생각하지 말고 사용ㅈ자 행동의 본질을 담은 지표부터 검토한 후 만약 해당 데이터가 없다면 개발자와 협력하면서 로그를 정비해나가야 한다.
데이터사이언스 능력
우선 전통적인 방법을 사용해 얼만큼의 정확도가 나오는지 확인하고 이상과 현실의 차이가 너무 크지 않은지 검토하며 적정 비즈니스 관점부터 내부와 커뮤니케이션하는 것이 중요하다.
그리고 그 시행 착오 과정에서 데이터의 성질이나 각 추천 알고리즘의 장단점을 파악하는 것이 중요하다.
데이터 엔지니어링 능력
계산이 빠르게 완료되도록 처리를 병렬화하거나 데이터베이스 설계, 튜닝 등을 해야 한다.
그리고 매일 추천 시스템에 사용하는 데이터를 가공하고 추천 목록 작성 연산을 수행하며 추천 목록을 데이터베이스에 저장하는 일련의 처리(파이프라인)를 조정해야 한다.
2.2 추천 시스템 프로젝트 진행 방법
3가지 역할을 가진 사람이나 팀이 협업하여 프로젝트를 진행하는 방법에 대해 프로세스를 7단계로 나눈 후 전자상거래 사이트를 개선하는 구체적인 예를 살펴본다.
1 과제 정의
2 가설 수립
3 데이터 설계/수집/공
4 알고리즘 선정
5 학습/파라미터 튜닝
6 시스템 구현
7 평가 및 개선
주로 1, 2, 7은 비즈니스 부서에서 담당하며 3, 4, 5, 6, 7은 데이터 과학자나 데이터 개발자가 맡아 프로젝트를 진행한다.
2.2.1 과제 정의
비즈니스상의 목적을 명확히 해야한다.
비즈니스 지표(KPI)를 결정해간다.
KPI의 목표와 현재의 차이를 확인한 뒤 현재 자사 사이트의 과제를 정리하고 적절한 조치를 검토한다.
분석에는 데이터를 사용해 분석하는 정량적 방법과 사용자와 인터뷰하는 정성적 방법이 존재한다.
정량적 분석에서는 웹 사이트 사용자의 행동 로그 데이터를 분석함으로써 현재 상태의 과제를 알 수 있음.
사용자 인터뷰에서는 잠재적인 사용자의 심리 상태에 관한 인사이트를 얻을 수 있음.
데이터와 사용자 인터뷰를 모두 활용해 현재 상태의 과제 정확도를 높이고 이번 비즈니스 목표를 달성하기 위한 각 과제의 중요도를 결정한다.
2.2.2 가설 수립
각 과제를 해결하는 방법과 그것을 실현하기 위한 비용을 검토하고 비용 대비 효과가 높은 이니셔티브부터 실행
이처럼 추천 시스템을 도입하는 것보다 비용이 낮은 다른 방법으로 비즈니스 목표를 해결할 수 있다면 그 방법을 먼저 검토하는 것이 좋다.
특히 검색 시스템의 기능을 개선하는 것이 비용 대비 효과가 높은 경우가 많으므로 굳이 추천 시스템을 도입하지 않고 검색 기능을 확장하는 가능성도 검토한다.
검색 시스템을 개선한 다음에는 중요한 과제인 각 아이템의 상세 화면에서 비슷한 아이템을 추천하는 기능을 개발한다.
이번 비즈니스 단계에서는 적절한 추천 알고리즘을 선택해야 한다. 어떤 유사도 분석을 구현할 것인지는 사용자의 필요에 따라 정리해나간다.
2.2.3 데이터 설계/수집/가공
현재 어떤 데이터가 축적되어 있는지 정리한다. 추천 시스템 개발에 필요한 데이터는 주로 다음 2종류이다.
- 사용자와 아이템의 콘텐츠 정보
- 사용자와 아이템의 인터렉션 정보
사용자 정보는 나이, 성별 등 프로필 정보와 어떤 장르의 아이템을 좋아하는가 하는 기호도 정보이다.
아이템 정보는 아이템 설명문이나 태그, 카테고리, 등록일 등의 정보이다.
사용자와 아이템의 인터랙션은 열람, 북마크, 구입, 시청, 평가 등의 정보이다.
먼저 자사 서비스가 어떤 데이터를 갖고 있는지 정리하고 그 데이터로 추천 시스템을 구축할 수 있는지 검토한다.
2.2.4 알고리즘 선정
알고리즘 계산 시간, 필요한 데이터, 요구되는 예측 정확도 등 다양한 관점에서 비즈니스 목표에 적합한 것을 선택한다.
비용이 들기도 한다. 서비스 초기에는 먼저 간단한 알고리즘부터 구현하는 것이 좋다.
2.2.5 학습/파라미터 튜닝
온라인으로 추천 시스템의 좋고 나쁨을 검증한다.
온라인에서 추천 시스템의 정확도를 검증할 때는 이 아이템을 넣으면 어떤 아이템이 나오는지 확인하고 그 결과가 납득되는지 확인해야 한다.
온라인에서 검증할 때는 데이터 편향(bias)에 주의해야 한다.
그러므로 이 편향들을 제거한 후 추천 시스템을 만들어서 평가해야 한다.
2.2.6 시스템 구현
추천 알고리즘의 학습이나 예측 변경 빈도, 신규 아이템이나 사용자에 대한 추천을 어떻게 할지, 추천에 연관된 데이터 파이프라인 설계를 어떻게 할지 등을 고려해야 한다.
배치 추천
배치 추천은 1일 1회 또는 1주 1회 등 정해진 시점에 해당 시점의 정보를 기반으로 추천 목록을 업데이트하여 사용자에게 제공하는 것이다. 추천 목록은 추천 모델 학습, 추천 모델에 의한 예측의 2단계 처리를 통해 작성된다.
추천 모델에 의한 예측은 사용자가 얼마나 되는지에 따라 계산 구조가 달라진다.
실시간 추천
실시간 추천은 사용자의 직접 행동 이력을 즉시 반영해 추천 목록을 만드는 것이다.
2.2.7 평가 및 개선
테스트 같은 구조로 일부 사용자에게만 추천 기능을 제공해 추천했을 때와 그렇지 않을 때 사용자의 구입 금액이나 체류 시간을 검증한다.
3.1 UI/UX의 중요성
실제 서비스에 추천 시스템을 도입할 때 어느 정도 고도화된 추천 알고리즘을 사용해 사용자에게 가치가 있는 아이템을 선택할 수 있다고 해도 최적의 형태로 전달하지 못하면 그 가치도 전달되지 않는다. 즉, 사용자의 의사 결정을 지원할 수 없게 된다.
3.2 서비스를 사용하는 사용자의 목적에 적합한 UI/UX 사례
사용자의 목적은 서비스 특성이나 도메인 등에 따라 다양하지만 여기에서는 J. Herlocker¹를 참고해서 다음 4가지 분류에 따라 설명한다.
- 적합 아이템 발견
- 적합 아이템 나열
- 아이템 계열 소비
- 서비스 내 체류
3.2.1 적합 아이템 발견
사용자가 목적을 달성하는 데 충분할 정도로 사용자의 기호에 적합한 최소한의 아이템을 확실하게 발견하는 것이 적합 아이템 발견의 목표이다.
사용자는 이 리스트를 위에서부터 순서대로 열람하며 자신의 기호에 맞는 아이템을 빠르게 찾아낼 수 있다.
따라서 사용자가 아이템에 흥미를 갖고 상세 정보를 보기 위해 클릭할 수 있도록 충분한 정보를 적절히 취사선택해 리스트에 표시해야 한다.
3.2.2 적합 아이템 나열
적합한 아이템을 가능한 모든 서비스에서 발견하는 경우를 말한다.
특성상 사용자의 기호를 가급적 확실하게 나타낼 필요가 있는 경우가 많으며 특히 등과 같이 누락 없이 모든 적합 아이템을 발견해야 하는 것은 검색 시스템으로 분류된다고 생각할 수도 있다.
사용자의 조건이 까다로워서 표시되는 아이템 수가 너무 적을 경우, 사용자가 입력한 조건에는 맞지 않지만 사용자의 목적을 달성할 가능성이 있는 조건의 아이템을 의도적으로 표시하는 것도 도움이 된다.
이처럼 같은 종류의 아이템을 취급하는 서비스라도 사용자가 다른 목적을 가지고 있다면 제공해야 할 UI/UX가 다를 수 있으므로, 사용자의 어떤 요구에 부응하는 서비스를 만들지 명확히 하는 것이 중요하다.
3.2.3 아이템 계열 소비
아이템 계열 소비는 열람, 소비하는 동안 추천된 아이템 계열 전체에서 가치를 누리는 것을 목적으로 하는 경우이다.
아이템 계열 소비의 독특한 특징으로는 같은 아이템을 여러 번 추천해도 사용자 만족도가 향상 된다는 점에 있다.
3.2.4 서비스 내 체류
서비스 내 체류는 사용자가 사용하는 서비스 본래의 목적을 달성하는 거서이 아니라 그저 아이템을 열람하는 것 자체를 목적으로 서비스 안을 돌아다니는 경우
3.3 서비스 제공자의 목적에 맞는 UI/UX 사례
추천 시스템을 활용하는 서비스 제공자 측의 대표적인 비즈니스 목적을 다음 5가지로 분류한다.
- 신규/사용 빈도가 낮은 사용자의 정착
- 서비스에 대한 신뢰성 향상
- 사용 빈도 향상 및 이탈 사용자의 복귀
- 교차 판매(cross selling)
- 장기적으로 사용자의 충성도 향상
3.3.1 신규/사용 빈도가 낮은 사용자의 정착
소위 개요 추천(broad recommendation)을 사용한다.
개요 추천이란 서비스 내 데이터 통계 정보나 서비스 지식이 풍부한 편집자의 선택을 기반으로 추천하는 것을 의미한다.
통계 정보에 기반한 추천이란 ‘이번 주 시청 순위’와 같이 서비스 전체의 사용 빈도 순위, ‘만화 매출 순위’ 같은 특정 카테고리 안의 매출 순위 같은 것을 의미한다.
편집자의 선택에 기반한 추천이란 ‘영화 평론가들이 선정한 추천 목록’이나 ‘이번 주 특집 상품 목록’과 같이 서비스 편집자나 전문가가 직접 선택해 작성한 추천 리스트를 나타낸다.
3.3.2 서비스에 대한 신뢰성 향상
기본적으로 사용자의 이익을 추구하는 것이 서비스 제공자의 이익과도 연결되므로 극단적으로 서비스 제공자의 이익만 우선하여 추천하거나 광고를 노출시키지는 않을 것이다.
그것을 사용자가 믿고 서비스를 사용하도록 신뢰성을 높여야 한다.
이러한 목적을 달성하는 데 사용자 평가가 효과적인 경우가 있다.
사용자 평가는 서비스 안의 사용자 사이에서 추천을 구현하는 것이다.
가급적 빠르고 정확하게 사용자의 기호에 맞는 아이템을 추천하는 것이 효과적이다.
처음에는 서비스의 인기 아이템 등을 표시함으로써 서비스 안에 자신의 기호에 맞는 아이템이 있을지도 모른다는 기대를 심어주는 것이 중요하다.
‘현재 개인화 중입니다’라는 메시지를 전달하는 것도 효과적이다.
3.3.3 사용 빈도 향상 및 이탈 사용자의 복귀
사용 빈도가 낮은 사용자나 이미 이탈해버린 사용자 등 애초에 서비스 안에서 만족도를 향상시키기 어려운 경우도 있다.
이런 때는 알림 서비스가 효과적이다.
알림 서비스란 사용자가 서비스를 사용하지 않을 때 메일이나 푸시 알림 등의 방법으로 추천을 보내는 것이다.
강한 의지를 보이는 표현이기 때문에 서비스 미사용자에게는 알림 방법에 따라 불쾌감을 주어 오히려 역효과를 낼 수도 있으므로 주의해서 설계해야 한다.
이때는 먼저 알림을 보내는 빈도를 적절하게 설계해야 한다.
3.3.4 교차 판매
어떤 상품의 구매를 검토하고 있는 사용자에게 다른 상품을 함께 구입하도록 단가를 높이는 방법을 교차 판매라고 부른다.
교차 판매는 서비스 제공자 입장에서 매출 향상을 도모할 수 있고 사용자 입장에서도 필요한 물건을 함께 구입할 수 있어 만족도가 높은 방법이다.
연관 아이템 추천을 들 수 있다.
연관된 아이템을 사용자에게 표시하는 것이다.
3.3.5 장기적으로 사용자의 충성도 향상
충성도를 높여 서비스를 계속 사용하도록 하는 것도 모든 서비스에서 중요하다.
개인화란 서비스 내에서 수집한 사용자 정보나 행동 이력을 활용해 그 사람에게 맞는 아이템을 추천하는 즉, 개인화된 추천 결과를 제공하는 형태를 나타낸다. 예를 들면 ‘여러분에게 추천합니다’라는 문구와 함께 아이템이 나열된 모습을 본 적이 있을 것이다.
이에 따라 사용자 만족도가 높아지고 다른 서비스와의 차별화로 이어져 장기적으로 사용자의 충성도를 향상시킬 수 있다.
4.1 추천 알고리즘 분류
먼저 내용 기반 필터링(content-based filtering)과 협조 필터링(collaborative filtering) 2가지로 나눌 수 있다.
내용 기반 필터링은 책의 제목이나 저자, 장르 등과 같이 아이템의 내용을 나타내는 정보를 사용한다.
사용자가 선호하는 정보를 기반으로 내용이 비슷한 아이템을 계산함으로써 추천을 수행하는 알고리즘이다.
협조 필터링은 자신과 선호도가 비슷한 지인이 재미있게 읽은 책을 알려주며 ‘이 책 어때?’라고 추천을 내는 과정처럼 서비스 내에 있는 다른 사용자의 과거 행동 등을 통해 얻어진 기호 경향을 활용하여 추천하는 알고리즘이다.
메모리 기반 방법은 추천 시스템이 사용할 때까지 시스템에 사용자의 데이터를 축적하기만 하고 예측을 위한 계산은 수행하지 않는다. 그리고 예측을 수행하는 시점에 축적된 데이터 중 필요한 데이터를 모두 사용해 예측 계산을 수행한다.
모델 기반 방법에서는 추천 시스템을 사용하기 전에 미리 시스템 내 축적된 데이터의 규칙성을 학습한 모델을 만들어두고 예측 시 미리 만들어진 모델과 추천을 제공하는 대상 사용자의 데이터만 사용해 계산을 수행한다.
4.2 내용 기반 필터링
4.2.1 개요
내용 기반 필터링은 사용자가 어떤 내용의 아이템을 좋아하는지 나타내는 사용자 프로필과 아이템의 다양한 성질을 나타내는 특징을 추출한 아이템 특징과의 일치도, 즉, 유사도를 계산함으로써 좋아할 만한 아이템을 사용자에게 추천하는 알고리즘이다.
아이템 특징 획득 : 내용 기반 필터링에서 사용할 앙이템의 특징을 획득하는 방법은 아이템의 성질에 따라 다양하다.
사용자 프로필 획득 : 아이템 내용에 대한 사용자의 선호도를 나타내는 사용자 프로필 획득 ㄱ방법은 크게 2가지.
첫 번째는 사용자의 과거 행동 이력에 기반해 사용자 프로필을 작성하는 간접 지향형
두번째는 사용자에게 자신이 선호하는 아이템의 특징을 명시적으로 지정하도록 하는 직접 지정형
4.3 협조 필터링
사용자–사용자 메모리 기반 방법과, 추천받을 사용자가 선호하는 아이템과 비슷한 아이템에 착안하여 추천하는 아이템–아이템 메모리 기반 방법으로 나눌 수 있다.
4.3.1 사용자 메모리 기반 방법 알고리즘 개요
먼저 서비스 내의 다른 사용자 중 추천받을 사용자인 사용자 1과 아이템 선호도가 비슷한 사용자를 찾는다. 이번에는 서비스 내의 다른 사용자 6명 중 4명을 사용자 1과 선호도가 비슷한 사용자로 찾았다.
사용자 1과 선호도가 비슷한 사용자들이 선호하는 아이템을 사용자 1에게 추천할 후보 아이템 중에서 선택한다. 사용자 1과 선호도가 비슷한 사용자들은 아이템 B보다 아이템 A를 선호한다고 가정한다.
마지막으로 사용자 1과 선호도가 비슷한 사용자가 선호하는 아이템을 사용자 1에게 추천한다. 이것이 기본적인 사용자–사용자 메모리 기반 방법의 알고리즘이다.
이번에는 사용자의 구매 이력에서 아이템 선호도를 추측해 선호도 경향이 비슷한 사용자를 찾아낸다.
이렇게 아이템의 구체적인 속성 정보 등을 사용하지 않는 것이 협조 필터링의 큰 특징이다.
4.3.2 기호 데이터 획득과 평갓값 행렬
기호 데이터를 획득하는 방법은 크게 명시적 피드백과 암묵적 피드백으로 나눌 수 있다.
명시적 피드백은 사용자에게 5단계 평가로 아이템을 리뷰하도록 하거나 선호하는 아이템의 장르 등을 물어서 대답하도록 하는 등 사용자에게 아이템의 좋고 싫음이나 관심 여부에 관해 질문하고 답변을 받아 기호 데이터를 획득하는 방법이다.
암묵적 피드백은 사용자가 아이템을 구입하거나 찜으로 등록하고 열람하는 등 서비스 내 사용자의 행동 이력으로부터 아이템에 대한 관심을 추정해 기호 데이터로 간주하는 방법이다.
평가값을 성분으로 하는 사용자×아이템의 행렬을 평가값 행렬이라 한다.
이렇게 예측의 구체적인 수치가 나온 경우에는 서비스 미사용자에게는 알림 방법에 따라 불쾌감을 주어 오히려 역효과를 낼 수도 있으므로 주의해서 설계해야 한다.
서비스에서 예측 평가값을 사용할 때는 사용자가 열람하는 아이템의 보조 정보로 예측 평가값을 그대로 표시하는 경우가 있고, 예측 평가값에 기반해 정렬된 아이템 리스트를 표시하는 경우가 있다. 아이템 리스트를 표시할 때는 일반적으로 사용자가 이미 평가한 아이템(구매 완료 등의 아이템)을 리스트에 포함시키지 않는다.
4.3.3 모델 기반 방법 알고리즘 개요
4.3.4 메모리 기반 방법과 모델 기반 방법의 협조 필터링 비교
먼저 ‘추천에 걸리는 시간’ 관점에서 비교하겠다. 메모리 기반 방법에서는 추천 시 매번 모든 데이터에서 비슷한 사용자나 아이템을 찾은 뒤 예측하므로 시간이 걸린다. 한편 모델 기반 방법은 데이터의 규칙성을 바탕으로 모델을 미리 만들어두고 만들어진 모델만 사용해 예측하므로 곧바로 추천을 수행할 수 있어 시간이 걸리지 않는다.
다음에는 ‘운용성’ 관점에서 비교해보겠다. 메모리 기반 방법은 사용자나 아이템 데이터가 변경돼도 추천할 때마다 모든 데이터를 사용하므로 항상 최신 데이터를 반영해 추천할 수 있다. 그러나 모델 기반 방법에서 사용자나 아이템 데이터가 변경되고 그 변경을 반영해 추천하려면 모델을 새로 만들어야 하므로 모델 업데이트 시점이나 재학습에 걸리는 계산 비용 등을 고려해야 하기 때문에 운용이 비교적 어렵다고 할 수 있다.
4.4 내용 기반 필터링과 협조 필터링 비교
여기서는표준적인 협조 필터링과 내용 기반 필터링의 성질에 관해 비교한다.
다양성 향상과 도메인 지식을 다루는 비용 및 일반적인 예측 정확도 관점에서는 협조 필터링 쪽이 적절하다.
콜드 스타트 문제에 대한 대응과 사용자 수가 적은 서비스에서의 추천 및 커버리지 향상과 아이템 특징 활용 관점에서는 내용 기반 필터링 쪽이 바람직하다고 할 수 있다.
이렇게 알고리즘의 장점과 단점을 고려하여 해결하고자 하는 태스크의 성질에 맞춰 적절한 알고리즘을 선택해야 한다.
알고리즘을 선택할 때는 반드시 어느 한쪽만 선택해야 하는 것이 아니라 상황에 따라 구분해서 사용하거나 2가지를 조합해서 장점만 취할 수도 있다.
물론 알고리즘이 복잡할수록 구현 비용이나 운용 비용이 높아지므로 균형을 잘 맞추면서 다양한 선택지 중 적절한 알고리즘을 선택할 수 있는 역량을 갖추는 것이 중요하다.
4.5 추천 알고리즘 선택
먼저 일반적인 방침으로 서비스 내 데이터의 양에 맞춰 알고리즘을 선택하는 방법을 생각할 수 있다.
추천 시스템을 설계할 때, 서비스의 특성과 데이터의 양, 그리고 추천의 목적에 따라 내용 기반 필터링과 협조 필터링 중 적절한 알고리즘을 선택하는 것이 중요하다.
먼저 데이터의 양이 적은 초기 단계 서비스나 신규 사용자 및 신규 아이템이 많은 환경에서는 협조 필터링을 적용하기 어렵기 때문에, 내용 기반 필터링이 적합하다. 이 방식은 사용자 프로필이나 아이템 자체의 속성을 이용하여 추천하기 때문에, 사용자 수나 상호작용 데이터가 충분하지 않아도 활용이 가능하다.
반면, 사용자 수가 많아지고 사용자의 행동 이력과 아이템 데이터가 충분히 축적되면, 협조 필터링이 더 효과적이다. 협조 필터링은 사용자 간의 유사성이나 아이템 간의 유사성을 바탕으로 정교한 추천이 가능하며, 예측 정확도 측면에서 우수한 성능을 낼 수 있다.
추천 시스템의 목적에 따라서도 알고리즘 선택이 달라진다.
- 개요 추천(인기 순 추천)은 단순 통계 정보만으로도 구현할 수 있어, 내용 기반 필터링(직접 지정형)이 적합하다.
- 연관 아이템 추천은 메모리 기반 협조 필터링이 많이 쓰이며, 빠른 계산이 필요한 경우에는 내용 기반 필터링이 대안이 될 수 있다.
- 개인화 추천, 알림 기반 추천처럼 사용자별 맞춤성이 중요한 경우에는 사용자–사용자 기반 협조 필터링이 유리하다.
또한, 데이터가 충분히 축적된 이후에는 예측 정확도와 성능을 높이기 위해 모델 기반 협조 필터링으로 전환하는 것도 고려할 수 있다.
마지막으로, 다양성의 중요도도 고려해야 한다. 사용자가 원하는 것이 명확한 경우(예: 특정 색상의 펜 구매)에는 내용 기반 필터링이 적합하고, 새로운 제품이나 예상치 못한 아이템을 제안하는 탐색적 추천이 필요한 경우(예: 새로운 간식 추천)에는 협조 필터링이 더 효과적이다.
따라서 추천 시스템의 사용 목적, 데이터의 축적 정도, 서비스의 성장 단계, 다양성의 요구 수준 등을 고려하여 상황에 맞는 알고리즘을 유연하게 선택하거나, 경우에 따라 혼합 방식을 적용하는 것이 바람직하다.