‘추천 시스템’을 설계할 때 가장 중요하게 고려해야 할 사항은 무엇일까요?
바로 ‘인기 편향(Popularity Bias)’ 문제가 발생하지 않도록 하는 것입니다. 인기 편향 문제란, 이미 잘 팔리고 있는 상품들이 추천으로 더 많이 노출돼 고객의 구매가 인기 있는 상품에 편중되는 현상을 의미합니다.
이러한 문제가 발생하는 이유는 고객과 상품의 상호작용 데이터만을 기반으로 추천 알고리즘을 설계하거나 AI 모델에게 학습시키기 때문입니다. 이런 방식에서는 의도적으로 상호작용이 적은 상품을 추천에 노출시키지 않았을 때 고객과 상호작용이 많은 상품만 더 많이 추천되어 피로감을 주거나 클릭률이 떨어집니다.
추천 알고리즘을 사용하는 많은 플랫폼이 이 문제를 해결하기 위해 노력 중입니다. 가령, 유튜브에서는 인기 편향 문제를 해결하기 위해 조회수가 낮더라도 최근에 새로 업로드된 영상을 중간중간 노출합니다. 만약 유튜브에서 고객들에게 조회수가 높은 영상들만 추천했으면 지금처럼 다양한 콘텐츠가 노출되는 일은 적었을 것입니다.
그렇다면 인기 없는 상품을 어떤 방법으로 자연스럽게 추천에 반영할 수 있을까요?
이번 글에서는 추천 알고리즘에 관한 인기 편향 문제를 줄일 수 있는 여러 방법론 중 블럭스가 활용하는 ‘인과추론(Causal Inference)’에 대해 알아보겠습니다.
인과추론이란?
모든 사건은 원인과 결과로 관계가 되어 있습니다. 다만 이 관계는 순차적으로 일어나거나 논리적으로 말이 되어야만 합니다. 예를 들어, 미래에 일어난 일이 현재의 원인이 될 수는 없습니다. 이처럼 인과추론이란 ‘원인(Cause)’과 ‘결과(Outcome)’ 사이의 관계를 나타내고, 이를 이론적으로 풀어내는 분야입니다.
인과 추론에서 원인과 결과의 관계는 화살표로 표시하기도 합니다. 아울러 결과는 원인에 의해 결정되기 때문에 함수로 표현할 수 있습니다. 아래 이미지처럼 X가 원인, Y가 결과라면 다음과 같은 식으로 나타낼 수 있습니다.
인과추론을 통해 변수 간의 인과 관계를 파악하면 이를 토대로 정확한 비즈니스적 의사 결정을 내릴 수 있습니다. 만약 서비스 매출을 늘리기 위한 결정이 필요할 때라면 어떤 이유로 고객이 서비스에서 상품을 구매하는지를 알아야 이를 개선할 수 있습니다. 또한 고객 행동 분석에서 어떤 요인이 고객의 리텐션 유지에 영향을 주는지도 알아볼 수 있을 것입니다.
인기 편향 문제를 해결하기 위해 인과추론이 필요한 이유
블럭스에서 상품 추천 서비스를 적용하기 위해 클라이언트와 미팅하다 보면 이러한 인기 편향 문제에 대한 고민을 토로합니다.
“품질이 좋은데 고객에게 노출이 되지 않아서 팔리지 않는 상품들을 추천을 통해 노출할 수 있으면 좋겠어요.”
사실 이러한 문제를 해결하는 간단한 방법은 추천 사이에 랜덤하게 인기 없는 상품을 노출하는 것입니다. 가령, 신상품을 지속적으로 노출해 고객이 소비하는 상품의 다양성을 높이는 방식입니다. 이는 단기적으로 서비스 성장에 도움을 줄 수 있습니다. 그렇지만 품질이 제대로 검증되지 않은 신상품, 특히 고객과 크게 상관없는 제품이 추천에 지속적으로 노출되면 해당 고객의 클릭률은 자연스럽게 하락하고 맙니다.
그렇다면 어떤 기준으로 상품을 추천해야 할까요?
일단 고객이 상품을 클릭하는 데 영향을 줄 수 있는 변수들과 인과관계를 알아야 합니다. A, B 두 가지 상품이 있다고 가정해 보겠습니다. A 상품은 고객에게 100번 노출이 되었고, 클릭률이 10%가 나왔습니다. B 상품은 고객에게 10번 노출되었고 클릭률은 20%를 달성했습니다.
담당자의 입장에서 둘 중 어떤 상품을 추천해야 할까요? B상품이 고객에게 훨씬 덜 노출되었지만, 클릭률이 더 높으니까 추천해야 할까요? 만약 B상품이 최근 기획전으로 할인을 진행했다면 어떻게 판단해야 할까요?
이때 필요한 것이 기존에 클릭한 상품 데이터를 바탕으로 ‘이 고객은 왜 이 상품을 선택했을까?’라는 분석입니다. 결국, 고객이 클릭할 만한 상품을 제대로 추천하기 위해서는 고객이 인기상품, 할인율, 기획전, 취향 등 어떤 이유로 상품을 클릭했는지 알아야 합니다. 아울러 해당 이유의 영향을 제거했을 때 고객이 상품을 얼마나 클릭할지도 예측해야 합니다.
이렇게 원인과 결과를 찾아서 다른 변수의 영향을 제거해 고객이 상품을 클릭한 이유를 찾는 것이 ‘인과추론을 활용한 방법’입니다.
상품 추천에 인과추론을 어떻게 적용할 수 있을까?
블럭스가 해결하려는 문제는 판매량이 저조한 신상품을 고객에게 노출했을 때 기존 데이터를 기반으로 클릭률을 높이는 방법입니다. 이때 인과추론 없이 AI 추천 알고리즘을 만들게 되면 인기에 편향된 데이터로부터 모델을 학습하기 때문에 정확한 상품의 클릭률을 예측할 수 없습니다.
사실 편향되지 않은 데이터를 모으는 쉬운 방법도 있습니다. 고객에게 랜덤하게 상품을 보여주고 클릭률을 측정하는 방식입니다. 다만 이 방법은 고객의 이탈을 유발할 수 있기 때문에 사실상 불가능합니다.
대신 인과추론을 활용하면, 상품별로 (고객에게 노출된 정도는 다르지만) 이러한 불균형한 정보를 없앤 상태를 가정하고 클릭률을 예측하기 때문에 고객의 이탈을 유발할 수 있는 추가 데이터의 수집 위험 없이 인기 편향 문제를 해결할 수 있습니다.
이와 함께 AI 알고리즘에 인과추론을 적용할 때 ‘판매량’처럼 상품에 대한 인기도를 나타낼 수 있는 변수를 고려해야 합니다. 이러한 변수를 ‘교란변수(Confounder)’라고 합니다.
교란변수는 원인과 결과에 동시에 영향을 끼치는 변수입니다. 가령, 상품 판매량이 많을수록 인기 상품 순위에서 노출이 더 많이 되기 때문에 상대적으로 고객에게 노출될 확률이 높습니다. 무엇보다 고객은 판매량을 통해 클릭할지 말지를 고민하기 때문에 고객의 상품 클릭률에도 영향을 줄 수 있습니다. 이러한 인과관계를 그래프로 그리면 다음과 같습니다.
이 인과관계를 고려하지 않고 노출된 상품에 대한 고객의 클릭률률만을 예측해 알고리즘을 적용하면 문제가 발생할 수 있습니다. 판매량이 상품의 노출 확률에 영향을 미치기 때문에 이를 고려하지 않으면 편향된 클릭률을 예측하기 때문입니다. 판매량이 높은 상품은 노출될 확률이 더 높고, 이에 따라라 클릭률도 더 높게 예측되어 잘못된 정보로 알고리즘이 적용됩니다. 그러면 해당 고객의 추천 목록에서는 판매량이 높은 인기 상품만이 계속 노출됩니다.
교란변수와 같은 판매량 변수의 영향을 없앤 상태에서 특정 고객에게 상품을 추천하고 싶을 때는 판매량이 상품의 노출에 주는 영향을 끊는 ‘디컨파운딩(Deconfounding, 교란변수의 영향을 제거하는 것)’을 진행하면 됩니다. 그래야 신상품 중 고객이 좋아할 만한 제품이 노출될 수 있기 때문입니다.
▶ 이 글도 같이 보면 좋아요!
판매량 영향이 없는 클릭률 계산하기
판매량을 제외한 클릭을 계산할 수 있어야 고객에게 맞춤 상품을 노출할 수 있습니다. 판매량(Z)이 상품의 노출에 주는 영향을 없애고 싶으면, 고객(U)과 상품 노출(I)에 대해서 ‘개입(Intervention)’을 진행하면 됩니다. 개입이란 인과추론에서 특정 변수에 대해 다른 변수들이 해당 변수에 미치는 영향을 없애고 해당 변수의 값을 고정하는 것을 의미합니다.
인기 없는 상품을 노출하기 위해 고객(U)과 상품 노출(I) 두 변수에 대해서 개입을 진행하면 위와 같이 판매량(Z)과 상품 노출(I)에 대한 인과관계가 없는 새로운 인과 그래프(Causal Graph)를 그릴 수 있습니다.
‘Causal Intervention for Leveraging Popularity Bias in Recommendation’ 논문을 참고하면 위 함수와 같은 순서로 고객과 상품에 대한 클릭 확률 분포식을 전개합니다. 자세한 전개 과정이 궁금하다면 해당 논문이나 인과추론의 ‘백도어 크리테리언(Backdoor Criterion)’을 참고해 보시기를 추천합니다.
위 식은 고객, 상품, 판매량을 토대로 고객에 대한 상품의 클릭률을 최종적으로 예측할 수 있는 모델입니다. 이때 클릭률을 예측하는 모델은 상품의 판매량이 상품 노출 확률에 미치는 영향이 제거된 상태에서 유도되었습니다. 따라서 이 모델의 결괏값은 판매량에 편향되어서 클릭이 예측되는 결과를 막을 수 있습니다.
만약 인과추론을 사용하지 않고 클릭률을 예측하면 어떻게 될까요?
위 식을 보면 개입(Intervention)을 한 수식과 다르게 편향된 정보인 ‘P(I|z)’가 곱해지게 됩니다. 인기 상품이라면 해당 상품은 고객에게 노출될 확률이 높기 때문에 ‘P(I|z)’의 값이 높아집니다. 즉, 인기 상품에 편향되어 계산되고, 개입을 한 모델에 비해 고객에게 비슷한 인기 상품만 계속 추천하게 됩니다.
이처럼 인과추론 방법론을 활용해 개입을 적용한 모델은 판매량이 많은 인기 상품과 판매량이 적은 신상품이 동일하게 노출되었을 때를 가정하고 클릭률을 예측합니다. 덕분에 AI 알고리즘이 ‘인기 상품이라고 해서 더 클릭 될 확률이 높다고 예측하는 것을 줄이고, 반대로 판매량이 적은 신상품에 대해서도 상대적으로 클릭 될 확률이 낮다고 예측하는 것을 높일’ 수 있습니다.
따라서 이 방법을 적용하면 다른 변수들에 의해 편향되지 않고, 정말로 품질이 좋아서 고객이 선택한 상품들의 클릭률을 정확하게 예측할 수 있습니다.
더 좋은 추천을 위한 블럭스의 노력
이번 글에서는 인과추론을 활용하여 신상품 중에서 노출은 적지만, 노출되면 클릭률이 높을 가능성이 있는 상품을 추천하는 방법을 소개했습니다. 이처럼 추천 시스템의 역할은 특정 인기 상품만을 노출하는 것이 아니라 고객의 취향에 맞는 더 다양한 상품들을 추천하는 데 있습니다.
블럭스 상품 추천 팀에서는 추천 시스템을 단기적 성과를 높일 수 있는 용도로만 보지 않고, 장기적으로 클라이언트의 서비스 성장과 성과에 기여할 수 있는 매개체로 바라보고 있습니다. 이를 위해 클라이언트의 다양한 요구를 만족할 수 있는 좋은 추천에 대해 항상 고민하고 연구하고 있습니다. 앞으로도 ‘회사 성과’와 ‘고객 만족도’라는 두 마리 토끼를 잡는 추천 시스템을 제공하기 위해 꾸준히 노력하겠습니다.