[Recommender System] Recommender System Project

BBaeng·2024년 3월 22일
0

Recommendation System

목록 보기
2/4

해당 챕터에서는 추천 시스템을 진행하기 위한 팀, 프로세스에 대한 설명을 시작합니다.

추천 시스템 개발에 필요한 3가지 스킬

  • 비즈니스 문제 해결 능력
  • 데이터 사이언스 능력
  • 데이터 엔지니어링 능력

비즈니스 문제 해결 능력

추천 시스템 도입시에 기대할 수 있는 무언가를 정의해야합니다.

즉, 추천 시스템을 도입함으로써 사용자의 어떤 행동 변화를 기대하는가에 관한 KGI, KPI 책정이 되어야합니다.

(추가보충)

데이터 사이언스 능력

위에서 비즈니스 목표를 설정하였다면 이를 달성하기 위한 이상적인 추천 시스템을 실제 구현 가능한 시스템으로 만들어낼 수 있는 것에 직결되는 능력입니다.
이는 데이터의 양과 종류, 비즈니스마다 구현의 복잡도가 달라집니다.

오픈 소스 소프트웨어로 공개된 사용 가능한 알고리즘 다수 존재하지만 아이템 혹은 유저 정보를 고려하기 어려운 경우 독자적으로 정식화한 알고리즘을 검토하고 코드화 해야합니다.

데이터 엔지니어링 능력

서비스의 비즈니스 요건을 고려해 구현하고 안정적으로 가동시켜야 합니다.
예를 들어 추천 리스트 작성 연산이 24시간 안에 종료되어야 하는 경우 추천 모델을 만들어도 계산에 100시간이 걸린다면 실제 비즈니스에서 사용이 불가능합니다.

그러기 위해 필요한 데이터 엔지니어링 능력으로 다음의 처리(파이프라인)과정을 조정할 수 있어야합니다.

  • 처리를 병렬화
  • 데이터베이스 설계
  • 튜닝

프로젝트 진행 방법

해당 책에서는 위의 역량을 가진 사람들이 협업하는 과정을 7단계의 프로세스로 나누어 설명합니다.

  1. 과제 정의
  2. 가설 수립
  3. 데이터 설계/수집/가공
  4. 알고리즘 선정
  5. 학습/파라미터 튜닝
  6. 시스템 구현
  7. 평가 및 개선

개발자가 담당하는 부분은 3, 4, 5, 6, 7 이고 비즈니스 부서가 담당하는 부분은 1, 2, 7 입니다.

하지만 여기서는 1, 2, 7의 내용 또한 가볍게 다룰 것 입니다. 왜냐하면 비즈니스 성격을 이해하고 시작하는 능동적인 개발자가 되는 것이 저는 매우 중요하다고 생각하기 때문입니다. 실제로 스타트업에서 개발을 진행하였을 때 이 비즈니스에 대한 주입도 많이 사수분에게 받았고 이것이 내가 개발하는 것에 어떤 영향을 서비스에 미치는지에 대한 영향을 느꼈기 때문입니다.

과제 정의

매출 2배, 회원 등록 2배는 명확하게 다른 비즈니스 상의 목적입니다. 이에 대한 기준을 명확히 정해 KPI를 결정하여 현재와 비교해 적절한 조치를 정리하는 과정이 필요합니다.

가설 수립

각 과제를 해결하는 방법 및 그것을 실현하기 위한 비용을 검토하여 비용 대비 효과가 높은 것부터 실행합니다.

데이터 설계/수집/가공

현재 어떤 데이터가 축적되어 있는지 정리하는 과정입니다. 주로 1장에서 말한 콘텐츠 정보인터렉션 정보를 다룹니다.

우선 자사 서비스에서 갖고 있는 데이터를 정리 후 해당 데이터를 통해 추천 시스템을 구축할 수 있는지에 대한 검토를 진행합니다. 초기 단계의 서비스라면 인터렉션 정보가 없기에 콘텐츠 정보를 이용해서 만들기도 합니다.

예를 들어 책에 '자기 계발', 'IT'라는 카테고리를 나타내는 태그가 부여되어 있는 경우에 해당 테그를 이용해 유저가 선호하는 태크의 책을 추천하는 시스템을 생각해봅니다.
해당 데이터가 부족한 경우에는 크라우드 소싱을 활용해 추천 시스템을 활용할 수 있는 형태로 정리해야합니다.

크라우드 소싱
업활동의 전 과정에 소비자 또는 대중이 참여할 수 있도록 일부를 개방하고 참여자의 기여로 기업활동 능력이 향상되면 그 수익을 참여자와 공유하는 방법

알고리즘 선정

알고리즘 계산 시간, 필요 데이터, 요구되는 예측 정확도 등 다양한 관점 중 비즈니스 목표에 적합한 것을 선택합니다.

주로 서비스 초기에는 간단한 알고리즘(적은 비용)으로도 일정 정확도까지 도달하기에 이를 먼저 구현하는 것이 효율적입니다.

비용 대비 효과의 관계

(그림)

학습/파라미터 튜닝

추천 시스템의 학습과 튜닝을 수행하고 실제 서비스로 출시 전에는 과거 데이터를 통해 추천 시스템의 좋고 나쁨을 검증합니다.

개발자가 이를 수행하고 비즈니스 관련 부서와 의논할 때에는 결과의 구체적인 사례를 제시하면 원만한 커뮤니케이션이 가능합니다.
예를 들어 이전 알고리즘의 추천 아이템 그룹과 변경된 알고리즘의 추천 아이템 그룹의 사례를 제시한다면 이러한 튜닝에서의 결과를 PM 과의 소통과정이 원만하게 이루어질 수 있습니다.

또한, 이렇게 온라인에서 검증시에는 데이터 편향에 주의해야 합니다.

예를 들어 다음의 경우가 존재합니다.

  • 아마존 : 별을 통한 평가 데이터에서는 보통 상품에 호감을 가진 사람만 평가하기에 별 5개 많다는 편향이 존재합니다.
    • 해당 책을 구매한 사람은 많지만 실제 평가는 81명
  • 검색 엔진을 이용한 추천 시스템 : 검색 엔진의 경우 상위에 나타나는 것이 클릭하기 쉽고 상대적으로 하위에 나타나는 것은 클릭하기 어렵습니다. 이 엔진의 이력 기반 추천 시스템을 만들 시 검색 결과 상위의 것이 더 잘 추천됩니다.

시스템 구현

온라인 상에 보일 수 있는 좋은 추천 알고리즘을 완성한 후 이를 실제 시스템에 조합합니다.
시스템에서 고려할 부분은 다음과 같습니다.

  • 추천 알고리즘의 학습
  • 예측 변경 빈도
  • 신규 아이템 또는 사용자에 대한 추천 방식
  • 추천에 연관된 데이터 파이프라인 설계

실제 자주 사용되는 사례로는 배치 추천, 실시간 추천이 존재합니다.

  • 배치 추천 : 1일 1회, 1주 1회 등 정해진 시점에 해당 시점의 정보를 통해 추천 목록을 업데이트
  • 실시간 추천 : 사용자의 직전 행동 이력을 즉시 반영해 추천 목록 생성

평가 및 개선

추천 기능을 출시하고 이것이 효과가 있는지 검증하는 단계입니다.

추천 시스템만 보는 것이 아닌 전체 시스템을 보고 악영향이 없는지를 판단해야 합니다.

  • 실제 사례로 추천 시스템 도입 후 로그 확인 시 추천 시스템을 통한 매출은 증가하였지만 검색 사용자가 급격히 감소하며 전체적으로는 증가되는 부분이 없음을 확인하였습니다.

0개의 댓글