본문 바로가기

GCP

GCP Recommendations AI를 통해 개인화된 상품 추천 서비스 만들기(1)

Recommendations AI는 AutoML 제품군의 개인화 추천 서비스이다.

 

Recommendations AI는 GCP에서 출시한 AutoML 계열의 Machine Learning Product입니다.

 

Recommendations AI의 가장 큰 특징은 유일하게 "개인화된" 예측을 제공하는 Product라는 것입니다.

 

보통 Predict를 위한 Model을 생성하는 데에는 튜닝이나 최적화 등 ML관련 전문가적 지식이 있어야만 했지만,

 

Recommendations AI를 사용하면 다른 AutoML Product와 같이 ML에 대한 어떠한 지식이나 능력 없이도 Product가 알아서 Model을 생성할 수 있다는 장점이 있습니다.

 

덕분에 ML에 대한 지식이 없는 일반 E-commerce 사업에도 보통의 E-commerce에서 볼 수 있는 "맞춤 상품 추천"을 제 서비스를 제공할 수 있습니다.

 

ML 전문가 수준의 지식이 필요했던 기존의 Prediction Model 생성을 적절한 Data만 제공하면 곧바로 Prediction을 제공할 수 있는 Process로 변경할 수 있는 굉장한 Product입니다.

 

개인적으로 아마존이나 쿠팡같은 대형 E-commerce에서 제공하는 맞춤 상품 추천 서비스를 더욱 많은 Vendor가 이용할 수 있게 해 줄 Product라 생각해 관심이 많이 갔습니다.

 

하지만 아직 한국에서는 Recommendations AI를 활용한 사례가 많지 않고, 어떻게 Process를 구축해야 하는지 Reference가 많이 없어 본 글을 통해 제가 얻었던 후기를 남기고자 합니다.

 

 

 

 

 

Recommendations AI를 이용해 아마존과 쿠팡에서 제공하는 "같이 보면 좋은 상품"과 같은 맞춤 상품 추천 서비스를 ML지식없이도 제공할 수 있다.

 

 

1. Recommendations AI를 시작하기 전에

 

 

Recommendations AI를 통한 상품 추천 서비스를 시작하기 위해서는 우선 GCP Project와 이에 연결된 Billing account가 있어야 합니다.

 

사실 GCP의 거의 모든 Product는 GCP Project + Billing account라는 2가지 요소가 물려있어야 정상적으로 사용할 수 있습니다.

 

그래서 Recommendations AI를 활용한 추천 Process를 구축하기 전에 위의 2가지 요소를 준비합니다.

 

현재 Recommendations AI는 Beta기간이라 Model training과 prediction에 사용할 수 있는 600$ 무료 크레딧이 제공되고 있기 때문에 비용에 대한 걱정은 안 하셔도 될 것 같습니다.

 

 

Recommendations AI 프로덕트를 이용할 Project와 Billing account를 생성하자.

 

 

 

2. Recommendations AI 둘러보기

 

 

이제 본격적으로 Model을 만들기 위해 Recommendations AI가 어떤 구성으로 이루어져 있는지 알아보겠습니다.

 

Recommendations AI의 패널은 크게 Data, Errors, Models, Placements, Buisiness insights로 이루어져 있고 이 구성들을 한 화면에 볼 수 있는 Dashboard 탭이 존재합니다.

 

Data 패널에서는 Model의 학습에 필요한 Catalog item data와 User event data 정보를 볼 수 있습니다.

 

Errors 패널에서는 Recommendations AI에서 발생한 Error들을 Data, Model, Prediction 별로 보여줍니다.

 

Models에서는 Model의 생성과 삭제 및 수정 작업을 할 수 있습니다.

 

Placements에서는 생성한 Model을 바탕으로 API를 call할 수 있는 Placements에 대한 관리작업을 할 수 있습니다.

 

Buisiness insights에서는 게시한 추천 서비스를 바탕으로 수익 등의 통계치를 확인할 수 있습니다.

 

본 포스트에서는 실제로 Product를 구성하는데 있어 가장 중요한 Data, Model, Placement만을 집중적으로 보도록 하겠습니다.

 

 

 

 

3. Data Import

 

 

어떤 ML 기반 Product를 사용하던 가장 중요한 것은 "어떤 데이터"를 학습에 이용하느냐일 것입니다.

 

Recommendations AI에서도 추천 모델에 주입할 Data가 "개인화된 제품 추천"이라는 목적에 적합해야 합니다.

 

그래서 Recommendations AI Model의 학습을 위해 넣을 수 있는 Data의 종류와 스키마를 지정해 놓고 그 기준에 맞는 Data만을 import할 수 있도록 해놓았습니다.

 

실제로 Recommendations AI를 이용하기 위한 작업의 대부분은 실제 존재하는 Data를 Recommendations AI에서 요구하는 스키마로 변형하는 것이 대부분의 시간을 차지합니다.

 

Recommendations AI에서 요구하는 Data는 크게 Catalog item data와 User event data로 나누어져 있습니다.

 

Recommendations AI의 Data 패널 진입시 나타나는 화면, Catalog와 Event data를 볼 수 있다.

 

 

 

Catalog item data는 product를 운용하고 있는 상품의 리스트 data입니다. 

 

고유키가 될 상품 ID와 상품명, 가격, 카테고리와 태그 등 다양한 정보를 입력할 수 있습니다.

 

User event data는 운영하고 있는 웹, 앱 등의 Endpoint에서 user들의 기록을 recording한 data입니다.

 

홈 페이지 방문 기록, 상품 페이지 방문 기록, 장바구니 담기 기록, 구매 기록 등이 이 데이터에 속합니다.

 

Recommendations AI의 Model은 최대 1년까지의 data만을 유효한 데이터로 보고 학습에 사용하게 되니 기록한지 1년이 지난 User event data는 학습에 이용하지 않아야 합니다.

 

 

User event data 섹션에서 내가 import한 데이터들의 수치를 볼 수 있다.

 

 

이제 각각의 Data들을 Recommendations AI에 import합니다.

 

Data source는 Google cloud storage와 bigQuery에서 가져오거나 실시간으로 recording할 수도 있습니다.

 

 

 

 

 

Data import는 GCS나 bigQuery에서 가져오는 방법, 실시간으로 recording하는 방법이 있다.

 

 

Data 페이지의 상단 Import 버튼을 누른 뒤 Data source와 schema를 지정하면 import작업을 실행할 수 있습니다.

 

import되는 시간은 데이터 양에 따라 달라지지만 보통 long operation이기 때문에 몇 분 정도 기다려야 작업이 완료됩니다.

 

import 작업의 진행상황은 상단의 "View import activity" 버튼을 누르면 확인할 수 있습니다.

 

 

 

"View import activity" 에서 길게 수행되는 Import작업의 진행상황을 볼 수 있다.

 

 

4. Model creation

 

 

학습에 필요한 데이터를 충분히 확보했으면 이제 상품을 추천할 Model을 만들 수 있습니다.

 

Recommendations AI에서 생성할 수 있는 Model은 4종류가 존재합니다.

 

개인 이력을 기반으로 맞춤 상품을 추천해주는 "Recommended for you"

 

다른 User들이 구매한 기록을 기반으로 현재 상품과 함께 자주 구매한 상품을 추천해주는 "Frequently bought together"

 

User들의 구매 이력을 바탕으로 추가적으로 구매할 상품을 추천해주는 "Others you may like" 

 

ML 기반 Model은 아니지만 시간순으로 방문한 상품을 표시해주는 "Recently viewed" 

 

각각의 Model이 요구하는 Data의 종류와 양이 다르므로 어떤 Model을 생성할 것인지에 따라 Import해야 할 데이터도 달라집니다.

 

자세한 사항은 Recommendations AI Document나 Model Create 페이지에서 볼 수 있습니다.

 

모든 Model을 이용하고 싶다면 12개월 간의 "홈페이지 방문", "상품 페이지 방문", "장바구니 추가", "상품 구매" 기록을 구비해야 합니다.

 

각각의 Model이 요구하는 data requirements는 Model Create 페이지에서 상세하게 볼 수 있다.

 

 

 

 

데이터가 충분히 준비되었다면 모델을 생성할 수 있습니다.

 

다음 편에서 계속

 

  • 익명 2020.12.08 18:38 댓글주소 수정/삭제 댓글쓰기

    비밀댓글입니다

    • 안녕하세요. jhkim님! 제 블로그를 방문해 주셔서 감사합니다. 저는 ML이나 Bigdata Test용 Dataset을 구할 때 Kaggle을 주로 이용합니다. 그 중 Recommendations AI를 Test할때는 Kaggle의 e-commerce dataset을 사용했습니다.
      (https://www.kaggle.com/retailrocket/ecommerce-dataset/home)
      Recommendations AI의 Dataset을 선택할 때 팁을 드리자면, 혹시라도 실제 Data가 아닌 무작위 Data로 구성된 Dataset을 생성해서 사용하면 안됩니다(Model이 학습을 진행하지 못합니다). 또 다른 유형의 Dataset도 학습은 가능하지만, e-commerce용 Dataset을 사용하는 것이 Recommendations AI를 Test하는데 더 효율적입니다. 애초에 e-commerce의 상품 추천을 목표로 만들어진 Product이기 때문입니다. 제 답변이 도움이 되셨으면 좋겠습니다.좋은 하루 되세요.
      -댓글 공개로 수정했습니다

  • jhkim 2020.12.09 09:59 댓글주소 수정/삭제 댓글쓰기

    감사합니다~!!

  • jhkim 2020.12.10 14:36 댓글주소 수정/삭제 댓글쓰기

    안녕하세요?
    알려주신 데이터 셋을 json파일로 변환하려고 하는데 ,
    혹시 category_tree.csv 파일의 계층구조를 어떻게 변환하셨는지 여쭤봐도 될까요?


    • 안녕하세요. 다시 한번 블로그 방문해주셔서 감사합니다.
      제가 알려드린 dataset은 csv포맷이기 때문에 json으로 직접 변환할 수는 없습니다. csv 포맷은 nested한 value를 지원하지 않기 때문입니다. 그보다는 우선 csv파일을 bigquery table로 변환시키고, 쿼리를 통해 생성하신 Catalog item table에 insert하는 방법을 사용하셔야 합니다. 질문 또 있으시면 답변해드리겠습니다. 감사합니다! 그리고 괜찮으시다면 댓글은 블로그를 방문하는 분들이 볼 수 있도록 공개 부탁드립니다.

  • 방지원 2020.12.10 17:12 댓글주소 수정/삭제 댓글쓰기

    안녕하세요. GCP Recommendation AI 사용해 보다 카탈로그데이터 불러오는 과정에서 문제가 발생하여 질문 남깁니다.
    먼저 GCP 문서에도 json type sample에도 문제가 있는것 같은데, 혹시 변환하신 파일 형태 공유가능하실까요?
    참고하여 수정해보고싶어서 질문남깁니다. 감사합니다~

    • 안녕하세요. 블로그 방문해 주셔서 감사합니다.
      현재 Recommendations Ai가 beta인지라 document에 오류가 많습니다 ㅠ 그대로 따라하셔도 안되는 경우가 많으실 겁니다.
      파일 형태라 함은 카탈로그 table의 json schema를 말씀하시는 건가요?
      Catalog item table 만드는 방법은 저는 변환한 데이터 파일을 bigquery에 넣기보다는(ETL process), 일단 데이터를 bigquery에 넣고 쿼리를 통해 변환하는 과정으로(ELT process) 진행했습니다.
      방지원님도 후자의 경우가 더 편하실 겁니다. 제 답변이 도움이 되었으면 좋겠네요. 좋은 하루 되세요!

  • 익명 2021.07.17 16:19 댓글주소 수정/삭제 댓글쓰기

    비밀댓글입니다