티스토리 뷰

- 추천시스템이란

- 추천시스템의 제약 사항

- 추천시스템 파이프라인

- 고전 추천 알고리즘의 종류

- 연관 규칙 추천

 

추천시스템의 개요

추천 시스템?

유저아이템주변 정보와 상호작용 기록을 바탕으로 유저가 선호할 아이템을 예측하여 유저의 의사결정을 돕는 인공지능 서비스
  • User : 서비스를 이용하는 주체
  • Item : 서비스에서 판매 / 제공하는 대상 물품
  • Interaction / log : 서비스 내에서 유저가 남기는 일련의 행동 기록

→ 유저에게 유관한 정보만을 Filtering 해줌으로써 Information Overload로부터 도움!

→ 추천시스템은 커머스/ 컨텐츠 / POI 등의 어플리케이션에서 널리 사용되며 유저의 리텐션을 확보함으로써 기업의 직간접적인 수익창출에 기여

 

추천시스템의 한계 및 제약사항

1) 확장 가능성 (Scalability)
- 추천 시스템 특성 상, 운영중인 서비스의 한 파이프라인으로 적용됨

- 서비스의 특성과 자원 상의 제약 등 한계에서 자유로울 수 없음

- 유저와 아이템의 수가 증가함에 따라 확장성의 제약이 크게 증가하나, 정확도를 위해 복잡한 모델만을 사용할 순 없음

 

2) 도메인 종속성

- 서비스 도메인에 따라 추천 대상이 되는 아이템 특성이 다름

- 도메인 특성에 따라 적용되는 알고리즘과 시스템 구조가 적절히 고안되어야 함!

 

3) 비즈니스 목표의 다양성

- 비즈니스 목표는 다양하게 존재, 여러 비즈니스 목표가 충돌하는 경우가 발생

ex) CTR vs CVR: 자극적인 주제의 컨텐츠를 추천하면 CTR(클릭률)은 증가하지만 실제 구매로 이어지는 CVR은 감소 

CTR vs  Diversity : CTR만 고려한다면 인기 컨텐츠만을 추천하면 됨! but, 개인화 or 추천의 다양성을 늘리기 위해서는 CTR을 어느정도 포기해야 함!

 

4) Cold - Start Problem (feat. Sparsity) ⭐⭐

- 추천 시스템의 고질적 문제

- 신규 user 혹은 아이템에 interaction이 없어 추천 알고리즘의 추론이 잘 작동하지 않는 현상

- 이유1 : 서비스 내에 아이템 수는 대개 한 유저가 소비할 수 있는 양을 훨씬 뛰어 넘음 → interaction이 없는 유저-item 관계가 많이 발생

- 이유2 : 늦게 참여한 user의 경우, 소비한 아이템이 적으므로 interaction에 대한 정보 부족 (cold user)

- 이유3 : Long tail 현상 - 인기 상품이 아닌 대다수의 item의 경우 interaction을 갖지 못 함! 

Data Sparsity : 데이터가 sparse하게 (섬기게) 존재하는 현상

 

5) No Clear Ground Truth

- 고객 선호의 불분명성 : 유저의 선호도는 주관적이고, 동적임

- 유저 스스로 선호를 불분명하게 인지 

- "주니까 본다" : 추천시스템 모델의 판단 자체가 고객 행동에 영향을 미칠 수 있음

 

추천시스템의 파이프라인

1) 후보 생성 (Candidate Generation) : 무수히 많은 전체 상품 중, 그나마 관련이 있을 것으로 예상되는 일부 후보군을 추려냄 → 수백만개 사이의 연관성 파악은 비효율적이므로! Embedding vector라는 수치형태로!

 

2) 순위 매기기 (Ranking) : 알고리즘이 적용되는 단계! 추려낸 수백개의 후보군 내에서, 유저와 아이템의 연관성 점수를 상대적으로 더 정밀하고 복잡한 모델로 매김

 

3) 재정렬 (Reranking) : 순위를 매긴 유저-아이템 쌍 중에 유저와 무관하거나 비즈니스 목적에 맞지 않는 아이템을 제거

→ video feature 등 다양한 부가적인 정보들 반영, 이미 구매한 상품이나 부적절 상품은 걸러낸다!

 

고전적인 추천 알고리즘

고전적 추천 알고리즘의 종류

1) 인구통계 기반 필터링 (Demographic Filtering)  : 

- 연령, 나이, 직업 등 인구 통계학적 특성이 유사한 사용자는 선호도와 관심사가 비슷할 것이다라는 가정에서 출발

- 가장 단순한 형태의 feature 기반 필터링, cold - start에 대응 가능하며 해석 가능 but 개인화되지 않으며 고정관념에 기반

 

2) 인기도 기반 추천 (Popularity Based) :

- 가장 직관적. 상품의 인기도를 기준으로 추천

- 사용자별 정보나 선호도에 의존하지 않으므로, 구현이 쉽고 확장성 뛰어남

- 개인화 x, 필터 버블 / 에코 챔버 등의 문제, interaction이 없는 item은 끝내 추천하지 않는다는 cold start 한계 존재

* filter Bubble : 사용자가 비슷하거나 제한된 정보나 추천에 노출되는 현상, 다양성이 제한됨

 

3) 지식 기반 추천 (Knowledge Based)

- 전문가의 지식이나, 유저의 입력에 기반한 추천

 

4) 규칙 기반 추천 ( Rule - Based ) 

- 사전에 정의된 규칙에 의해 추천을 제공

 

연관 규칙 추천 ( Association Rule Mining )

기저귀를 샀던 김씨는 맥주도 사던데, 당신도 기저귀를 샀으니 맥주를 사는거 어때요?

: "A를 사면 B도 산다"는 규칙을 찾는 것

 

조건절(Antecedent) : IF 를 의미

결과절(Consequent) : THEN을 의미

 

- Item set : 조건절과 결과절을 구성하는 상품의 집합 

- 조건절에 들어가 있는 상품과 결과절에 들어가 있는 상품은 상호배반적(disjoint) 이어야 함!

ex) (햇반, 김치) → (맥주, 땅콩) : 가능 |  (맥주, 땅콩) → (맥주, 기저귀) : 맥주가 조건절, 결과절에 둘 다 들어가므로 불가능

- 하나의 장바구니로부터 많은 규칙을 만들어낼 수 있음 

ex) 기저귀, 맥주, 김치 장바구니
1) 기저귀 구매 - 맥주도 구매
2) 기저귀와 맥주 구매 - 김치도 구매
3) 김치가 구매 - 맥주도 구매

-  장바구니내 상품의 수에 따라 급속도로 증가 → 다양한 성능지표를 적용하여 연산 효율화

 

연관 규칙 성능 지표

1) 지지도 (Support) : A와 B가 동시에 등장할 확률

: A와 B를 동시에 포함하는 거래수 / 전체 거래수

 

2) 신뢰도 (Confidence) : A가 장바구니에 있을 때, B가 동시에 등장할 확률 

 

 

 

: 조건부 확률! A가 장바구니에 있을 때로 한정시킴!

 

3) 향상도 (Lift) : 둘이 등장할 확률이 독립이라고 할 때보다 얼마나 더 잘 같이 등장하나

 

 

 

→ 자주 등장하는 아이템에 대한 패널티를 주기 위한 지표

: 서로 독립이면 P(A)P(B)/P(A)P(B)=1이므로 향상도 1, 1보다 높으면 긍정적 관계 낮으면 부정적 관계

 

4) 레버리지(Leverage) : 이 규칙에서 등장하는 상품들이 얼마나 유의미하게 같이 등장하나

Leverage( A → B) = P(A,B) - P(A) X P(B)

- P(A,B)가 독립일때는 레버리지가 0이 됨!

 

규칙 생성 알고리즘

Apriori

: 오직 빈번하게 등장하는 아이템 셋에 대해서만 고려하는 방식

  •  Anti - monotone property 활용 ( ex. 햇반이 20번 나왔는데 (햇반, 김치)가 20번 이상 나올 수는 없음)
  •  한 상품 집합의 지지도는 그의 부분집합 지지도를 넘지 못한다는 지지도 수식의 특성을 이용해 불필요한 조합을 배제함으로써 연산량을 줄일 수 있다!

 

 

[ 참고 문헌 ]