관련 아이템을 어떻게 추천할까

https://medium.com/@ashutoshsingh93/recommendation-system-for-e-commerce-using-collaborative-filtering-fa04d6ab1fd8

쇼핑몰에서 아이템 상세 페이지에 들어갔을때, 그 아이템 1개만 보여주면 심심하다. 관련 아이템들을 여러개 추천하면 쇼핑에 도움이 될 것이다. 그럼 그런 관련 아이템들을 어떻게 추천할까?

가장 쉬운 것은 각 아이템 별로 연관 아이템을 미리 지정해놓는 것이다. 하지만 일일이 사람 손으로 정하니까 손이 많이 간다. 아이템이 적으면 사람이 할 수 있겠지만, 몇 백만개, 몇 천만개가 되면 다 할 수 없다. 그럼 그 나머지들을 자동으로 지정할 수 없을까?

단순히 그 아이템의 벤더나 카테고리에서 가장 잘 팔리거나, 별점이 높거나, 최신 아이템들을 보여줄 수 있다. 그러면 대체로 고객이 보고 싶은 아이템이 나올 것이다. 하지만 한 벤더가 다양한 아이템들을 취급하면 별 상관없는 다른 아이템이 추천될 수 있고, 또한 카테고리가 너무 두리뭉실해도 그럴 수 있다. 그리고 어떤 고객들은 꼭 잘 나가는 아이템이 아니라, 자기가 좋아할만한 아이템을 보고 싶을 수 있다. 그럼 이런 필터링을 더 자세하게 할 수 없을까?

협업 필터링 (Collaborative filtering)을 해보자. 각 고객이 본 아이템, 클릭한 아이템, 쇼핑 카트에 넣은 아이템, 체크아웃한 아이템 등으로 고객 간 유사도를 계산해서, 고객A가 좋아한 아이템을 비슷한 고객B에게도 추천하는 것이다. 그래서 고객B가 로그인하면 홈페이지에 고객A가 좋아하는 아이템들을 보여준다.

그럼 이런 클릭한 아이템, 쇼핑 카트에 넣은 아이템, 체크아웃한 아이템 등 여러 요소들을 어떤 가중치로 반영할까? 사람이 임의로 가중치를 정할 수도 있겠지만, 머신 러닝으로 학습할 수도 있다.

그런데 협업 필터링은 비슷한 고객들끼리 잘 묶이면 괜찮은데, 이게 잘 안 묶이면 효과가 떨어진다. 어떤 아이템은 비슷한 고객들이 잘 없을 수도 있다. 그럼 다른 방법은 없을까?

장바구니 분석(Market Basket Analysis)을 해보자. 여러 아이템을 한 바구니에 담아 살 테니까, 아이템A와 아이템B를 같이 사는 비율을 구할 수 있다. 너무 안 나가는 아이템을 기준으로 잡으면 의미가 없으니까, 잘 나가는 아이템들을 뽑아서 기준으로 잡고, 거기서부터 연관 규칙을 찾는다. 그러면 관련 상품을 추천할 수 있다.

그럼 협업 필터링을 할까, 장바구니 분석을 할까? 다 하자. 사람이 고른 것도 보여주고, 협업 필터링으로도 보여주고, 장바구니 분석으로도 보여준다. 고객이 스크롤을 내리면 이런 추천, 저런 추천을 계속 보여준다. 그럼 그 중에 뭐라도 걸릴 것이다.

Published
Categorized as xacdo

By xacdo

Kyungwoo Hyun

Leave a comment

Your email address will not be published.