본문 바로가기
추천시스템

[빵그리의 오븐 추천 시스템 구축기]1. 도전의 시작과 어려움 (feat. 유저 데이터 부족)

by thrcle 2024. 10. 13.

안녕하세요. 오니입니다.👋

이번 포스팅은 제가 참여하고 있는 사이드프로젝트에 대해, 또 추천시스템 구축 여정과정에 대해 공유해보고자 합니다. 


Intro. 추천시스템과의 첫 만남 

저는 평소에 온라인쇼핑을 즐겨하는 편인데요. 여러 상품을 보다보니 가끔은 물건을 보는 것 자체에 피로를 느끼기도 했습니다.

'내가 원하는 상품을 효율적으로 빨리 찾고 싶다'는 생각에, 개인화 추천시스템에 대한 호기심이 자연스레 있었지만, '흥미' 수준에 머물러 있었습니다.

손가락 까딱하기도 귀찮구나.

 그러다가 2024년 6월 중순에 열린 pseudocon 컨퍼런스의 데모부스에서 빵그리의 오븐이라는 건강디저트 추천 플랫폼을 보았고, 평소 건강디저트에도 관심이 있었던 만큼 따로 연락을 드려 7월부터 프로젝트 멤버로 참여하는 기회를 얻게 되었습니다.🎉

 

현재 재직중인 회사에서는 오프라인 판매가 주고 자사 온라인몰은 타부서 관할 업무이다보니, 온라인 플랫폼은 저에게는 새로운 도전이었고  나름의 설레임과 기대를 가지고 시작하게 되었습니다.


 

1. 빵그리의 오븐 소개


앞서 빵그리의 오븐은 건강디저트를 추천해주는 플랫폼이라고 소개했는데, 아마 이 글을 읽으시는 분들은 '건강'의 정의가 뭐죠?라고 질문하고 싶어서 손가락이 간지러우실 것으로 예상됩니다. 빵그리 멤버들이 정의한 건강디저트의 기준은 다음과 같습니다.

건강디저트

저는 평소에 음식을 잘못 먹으면 피부에 금방 트러블이 올라오는 편이라, 건강디저트에 관심있는 유저의 입장에서도 생각해볼 수 있다는 점이 흥미로웠습니다. 


2. 프로젝트 합류 초기 업무와 고민

프로젝트에 합류했을 당시 기획,프론트,백엔드,디자인,마케팅 팀으로 구성되어있었는데요. 제가 합류하면서부터 데이터팀을 따로 분류했고 합류 초기에는 GA4에 대한 학습 및 운영진 회의에 참여하며 기획&BM에 대한 전략 수립 등을 진행했었습니다.

프로젝트를 진행하면서 들었던 고민은 플랫폼 구축에 있어서 바쁘게 돌아가는 백엔드, 디자인, 기획 사이에서 데이터 파트의 역할의 중심을 어떻게 잡아야 할지에 대한 것이었는데요. 여기저기 요청하러 다니기 바빴던 것 같습니다 😅


 

3. 추천 시스템을 구현해보자... 근데 어떻게 하지? 

 '내게 딱 맞는' 건강디저트를 추천하는만큼 추천시스템의 역할은 매우 중요한 상황이었으나 관련 경험이 없었기에 함께 할 참여멤버를 구해야했습니다.

무한 굴레에 빠진 나

방법을 찾다가 고민 끝에 인연의 시작이었던 가짜연구소에서 스터디 빌더로 신청을 하게 됩니다. 사실 모집시기 당시 '사실 나도 잘 모르는데 빌더의 역할이 맞는걸까'라는 엄청난 내적갈등이 있었습니다. 하지만 어느정도의 미움받을 용기(?)와, 도전의식을 가지고 빌더로 나섰습니다 (다행히 생각보다 많은 분들이 지원해주셨고, 현재 7명의 멤버들과 함께 지금까지 진행해오고 있습니다.)

나 떨고있냐

 

 


4. 플랫폼 초기단계의 추천시스템 구현의 어려움

첫번째 문제. 콜드 스타트 문제

- 프로젝트에 합류했을 당시, 맞춤 추천을 위해 입력하는 정보는 다음과 같았습니다.

 

프로젝트에 중간에 합류한 입장에서, 추천시스템을 구현해야 하는 입장에서  '개인화' 추천을 해야하는데, 활용할 수 있는 정보가 부족하다고 느껴졌습니다. 하지만 너무 많은 정보 입력을 요구하면 사용자의 피로도가 증가하여 이탈할 확률이 높아질테니 '적정선'이 필요했습니다.  (사람들은 정보를 입력하는 것은 귀찮아하면서도, 나에게 맞는 것을 추천해주길 바랍니다. 물론 저도 그렇습니다만..) 

 

이에 대한 절충안으로, '소거'전략을 취했습니다. 

선호하는 디저트의 경우 기분에 따라, 날씨 등에 따라 달라지기 쉽습니다. 스트레스 받는 날은 달달한 초콜릿이 땡겼다가도 우울할 땐 레몬사탕인 것처럼요. 하지만 내가 싫어하고 피해야 하는 성분은 변동성이 낮습니다. 따라서 기피재료와 건강고민정보를 입력하도록 의견을 제안했고, 멤버분들의 동의 및 협조를 통해 반영될 수 있었습니다.

 

 

두번째 문제. 배포 이전이라 유저 데이터가 없음

9월 초부터 추천시스템 프로젝트를 시작하여 4주동안 추천시스템 알고리즘에 대해 학습 후 10월 중순부터 이제 본격적으로 구현에 도입하기 시작했는데요. 원래 플랫폼이 8월 중순에 정식 배포 완료 예정이었으나 여러 상황들로 인해 시기가 늦춰졌고, 이로 인해 유저데이터가 없는 문제가 발생했습니다.

 

신규 플랫폼이라 사용자 데이터가 부족한 상황에서 취할 수 있는 접근은 크게 5가지가 있습니다. 

1. 인기 아이템 기반 추천 (Popularity-based Recommendation)

  •  인기 있는 제품을 추천하는 방법입니다. 모든 유저에게 동일한 상품, 순서로 노출됩니다. 

2. 룰 기반 추천 (Rule-based Recommendation)

  • 조회수, 리뷰수,찜 여부 등의 데이터를 활용해 계산 수식을 설정하는 방법입니다.

3.  초기 입력 정보 기반 추천

  • 처음 가입할 때 간단한 조사를 통해 사용자의 선호도를 파악한 후, 해당 정보를 바탕으로 제품을 추천하는 방식입니다. 

4. 콘텐츠 기반 필터링 (Content-based Filtering)

  •  제품의 메타데이터(예: 성분, 맛, 칼로리, 목적별 효능 등)를 활용하여 추천하는 방식입니다. 예를 들어, 특정 성분이 들어간 디저트찜한 사용자에게 비슷한 성분의 다른 디저트를 추천하는 방식입니다.

5. 협업 필터링 + 대체 데이터 활용

  • 협업 필터링은 충분한 사용자 데이터가 필요하지만, 초반에는 외부 데이터가상 사용자 프로필을 사용해 학습시키는 방법도 있습니다. 예를 들어, 유사한 건강 식단 플랫폼이나 데이터셋에서 가져온 트렌드를 반영해 디저트를 추천할 수 있습니다.

 

기존의 경우 조회수, 리뷰수, 찜 횟수 등의 정보를 활용한 룰 base로 적용이 되어있었고 추천시스템 구현을 위한 방안으로 다음의 추천시스템 구현을 고려하였습니다.

1. [상품 상세페이지(사용자가 특정 상품에 대해 찜버튼을 클릭 시) 추천] 상품의 메타데이터를 활용하여 유사도 기반 유사 아이템 추천 

2. [메인 홈화면 추천]: 사용자 데이터 기반 추천

 

2번의 경우는 사용자의 데이터가 필요하였기 때문에, 이를 위한 사용자 모집& 제한된 상황에서의 테스트를 진행하기로 하였습니다.

 

다음 포스팅은 사용자 테스트 진행 과정 및 분석 결과에 대해 다뤄보도록 하겠습니다.🍀