[Recommendation System] e-커머스 추천

Sion Park·2022년 6월 13일
0

안녕하세요! 최근 패스트 캠퍼스에서 추천시스템 강의(The RED : 현실 데이터를 활용한 추천시스템 구현)를 듣고 있어 이에 대한 내용을 간략하게 공유하고, 스스로도 정리해보고자 이 포스트를 게시하게 되었습니다.

현재 계속 수강중이며 내용은 계속해서 추가하겠습니다!

이전의 포스트를 나누어 게시한 게시물입니다.

3. e-커머스 추천

이번 챕터에서는 e-커머스에 주로 사용되는 추천 방법들을 적용해보는 실습과정으로, postgreSQL을 psycopg2를 이용해 Python에 연결해서 사용해봤습니다. 실습내용은 포스트에 포함되지 않았습니다!

3.1. e-커머스 사용자 흐름

e-커머스에서 기본적으로 사용자들의 흐름에 대해 설명해보면

  • \rightarrow 검색, 제품 상세
  • 검색 \rightarrow 제품 상세
  • 제품 상세 \rightarrow 장바구니, 구매
  • 장바구니 \rightarrow 구매

와 같은 흐름으로 이루어 진다고 합니다. 이때 홈, 제품 상세, 장바구니에서 각각의 요건에 따라 다른 추천방식이 적용될 수 있습니다.

각 흐름에 따라 살펴보기 위해 제가 좋아하는 KFC어플을 통해 예를 들어보겠습니다.

  • 홈 : 개인화 추천, 인기 상품 추천, 성별/연령 기반 추천
    • e.g. 방문 매장과 관련된 메뉴 추천, 사용자의 구매이력을 통한 메뉴 추천, 방문한 시간의 특징/온도 등을 바탕으로한 추천
        \;
  • 제품 상세 : 연관 대체 상품 추천 (음료 - 음료, 푸드 - 푸드 등 동일한 카테고리 추천)
    • e.g. 메뉴 상세 페이지 대체 상품 추천, 미판매 및 품절 시 대체 상품 추천
        \;
  • 장바구니 : 연관 보완 상품 추천 (음료 - 푸드 등 다른 카테고리간의 유사한 상품 연결하여 추천)
    • e.g. 담기 팝업 보완 상품 추천, 메뉴 상세 페이지 보완 상품 추천, 메뉴 리스트 베스트 Badge

즉, 각 단계별로 필요한 요건의 추천을 하여 사용자로 하여금 더욱 많은 상품들을 살펴보고 구매할 수 있도록 합니다.

3.1.1. 추천 알고리즘 선택

  • Hybrid Approach : e-커머스의 경우 대부분 CF를 이용하지만, CBF방법을 결합하여 이용하기도 한다고 합니다.

  • CF

    • User-based : 적용하기 어려우며, 아이템 수보다 사용자 수가 더 많은 경우 계산량에 매우 많으며, 신규로 추가되는 상품이 많은 경우 적용하기 어려움
    • Item-based : e-커머스에서 대부분 사용하는 방법임
  • 사용자 메타 정보 (연령, 성별 등) 및 상품 정보를 이용하여 구축

  • 결합 규칙

    • 정적 결합 : 사전 정보를 바탕으로한 가중치를 사용
    • 동적 결합 : 사용자의 프로파일, 아이템 특성에 따라 다른 가중치 사용
  • Display 정책에 따른 추천 시스템 구축

3.2. Best 추천

Best 추천은 무조건 많이 팔리거나 이용된 상품들을 추천하기보다 그룹을 설정하여 해당 그룹에 속한 사용자에게는 그룹의 Best 상품을 추천해 줄 수 있습니다.

그룹은 전체, 시간대 별, 브랜드 별, 카테고리 별, 성별에 따른 베스트 등으로 나눌 수 있으며, 구매 베스트, 클릭 베스트 등 여러 기준을 통해 베스트 상품을 산출해 낼 수 있습니다.

  • 매장 별 베스트 : 매장 특성에 따라 여러 매장 그룹을 정의하고, 판매 상품 카테고리 마다 별도의 스코어링을 이용
  • 시간대 베스트 : 시간대 그룹을 정의 하여(오전, 오후, 저녁 등) 카테고리 마다 별도의 스코어링

  • 온도 그룹 베스트 : 다른 특징을 보이는 온도를 그룹화 하고 이에 따라 별도의 베스트 상품 스코어링

  • 칼로리 베스트 : 제품의 칼로리를 고칼로리, 저칼로리로 그룹화하고 베스트 상품 스코어링

3.3. 연관 추천

연관 추천의 경우 특정 기준을 정하고 Transaction 데이터를 이용해 아이템 연관성 추출하여 이용합니다.

  • 사용자 기준: 동일 사용자가 같이 본 아이템들은 연관성이 존재

    • 장점 : 취향이나 선호도를 반영하기에 적합, 다양한 상품 추천
    • 단점 : 관련이 적은 상품이 추천될 수 있음
    • 위의 그림에서 사용자 기준 특성을 추출할 경우, [[1, 1], [1, 1]].
  • 세션 기준: 동일 세션에서 같이 조회한 아이템듫은 연관성 존재

    • 장점 : 사용자의 의도를 반영하기에 적합함
    • 단점 : 추천되는 상품의 다양성이 떨어질 수 있음
    • 위의 그림에서 세션 기준 특성을 추출할 경우, [[1, 1], [1, 1], [1, 0], [1, 1], [1, 1]].
  • 인접 기준: 동일 사용자 로그의 인접한 아이템들은 연관성 존재

    • 장점 : 사용자의 의도를 반영하기에 적합함
    • 단점 : 추천되는 상품이 한정적일 수 있음
    • 위의 그림에서 인접 기준 특성을 추출할 경우, [[1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1]].

즉, 사용자 -> 세션 -> 인접 순으로 다양한 상품을 추천하며, 인접 -> 세션 -> 사용자 순으로 사용자의 의도 등을 더욱 강하게 파악하는 것으로 보입니다.

유사도 지표

  • Co-occurrence : n(ij)n(i \wedge j)

  • Conditional Probability : P(ji)=n(ij)/n(i)P(j\mid i ) = n(i \wedge j) / n(i)

  • Cosine Similarity : cos(i,j)=n(ij)/(n(i)n(j))cos(i,j) = n(i \wedge j)/ \left( \sqrt{n(i)}\sqrt{n(j)}\right)

Tip

  • 카운팅 횟수가 많은 경우 y=log(x+1)y = log(x+1) 등의 변환을 이용하여 유사도 계산

  • 자주 구매한 상품의 가중치를 낮추기 위해 TF-IDF를 통한 개선 가능

  • 상품의 횟수를 고려하지 않고 구매가 발생되면 1로 계산하는 이진값을 통한 계산 가능

  • 추천 결과가 부족한 경우

    • CBF 결과 활용
    • Best 추천 결과를 보완 로직으로 이용
    • 추천 결과의 연관 상품까지 결과로 이용

3.4. 개인화 추천

  • 연관 추천을 이용한 개인화

  • 유사한 사용자 기반 개인황 (kNN)

  • 사용자 활동 로그를 활용하여 프로파일 생성

3.4.1. 연관 추천을 이용한 개인화

연관 추천을 이용할 때, 사용자 uu에 대한 아이템 jj의 개인화 추천 스코어링 방법은 다음과 같은 식으로 나타낼 수 있습니다.

  \;
S(u,j)=eHus(i,j)r(t)S(u,j) = \sum_{e \in H_u} s(i,j)\cdot r(t)
  \;

  • r(t)=λt0tαr(t) = \lambda^{\frac{t_0 - t}{\alpha}} : 시간에 따른 weight로 현재와 멀 수록 낮은 값의 가중치를 부여함

  • Hu={ee=(i,t)}H_u = \{e \mid e = (i,t)\} : 활동 이력 집합으로 ii는 아이템 tt는 시간을 의미

예를 들어, 사용자가 아이템 A을 구매하고 이후에 아이템 B를 구매하였다고 해봅시다!

이때 아이템 A와 B의 연관 추천 세트를 살펴보면

  • 아이템 A 연관 세트

    아이템점수
    아이템 C0.5
    아이템 D0.45
    아이템 F0.4
  • 아이템 B 연관 세트

    아이템점수
    아이템 C0.5
    아이템 D0.45
    아이템 G0.4

여기서 아이템 A를 구매한 시점에 가중치 값을 0.5, 아이템 B를 구매한 시점의 가중치 값을 1이라고 하면,

아이템점수
아이템 C0.75
아이템 D0.675
아이템 G0.4
아이템 F0.2

와 같이 개인화 추천 점수를 계산할 수 있습니다!

3.4.2. kNN 방법

머신러닝에서 흔히 이용되는 kNN알고리즘과 같이 k명의 유사한 사용자를 찾아 추천하는 것입니다.

kNN 방법에서 사용자 uu에 대한 아이템 jj의 스코어는

  \;
S(u,j)=bSUusim(u,v)S(v,j)S(u,j) = \sum_{b \in SU_u} sim(u,v) \cdot S(v,j)

  \;

  • SUuSU_u 는 사용자 uu와 유사한 사용자 집합

  • 사용자를 document로 아이템을 word로 고려하면 TF-IDF 값으로 적용 가능

Tip

  • 사용자 간의 유사도 계산에서, 각 사용자의 특성을 나타낼 수 있는 기준 선정

    • 사용자의 전체 접근 아이템 스코어
    • 세션내 일정 숫자 이상의 아이템을 클릭한 아이템 스코어
  • TF-IDF값을 이용한 스코어링

  • 사용자에게 추천할 상품을 생성하기 위한 기준 선정

    • 최근 클릭한 아이템
    • 최근 구매한 아이템
    • 최근 세션내 가장 많이 클릭한 아이템
profile
Statistician, Data Analyst

0개의 댓글