AWS Personalize 란?
Personalize는 일반 추천 및 개인화된 추천을 위한 AWS에서 제공하는 AI/ML 서비스이다. AWS 하면 EC2나 S3정도만 아는 사람이 많은데 막상 보면 없는 서비스가 없다.
Personalize를 이용하면 ML에 대한 깊은 지식 없이도 1시간 이면 상품 추천에 대한 모델을 만들 수 있다.
Personalize 특징
1. 효율적인 cold start 문제 해결
Personalize를 이용한 상품 추천에서 Item exploration weight를 조절하여 새로운 아이템(interaction이 없는)에 대해 상품 추천이 될 수 있도록 하는 기능을 제공합니다.
기본 값은 0.3이며 이 말은 추천 상품의 30%는 items.csv에서, 70%는 interactions.csv 에서 가져와 추천을 한다는 의미입니다.
조금 특이한 점은 exploration weight를 1로 적용한다고 해서 모든 추천 상품을 items.csv에서 가져오지는 않는다는 것이다.
2. 비정형화된 텍스트 데이터 활용
상품 리뷰와 같은 정형화 되지 않은 텍스트에 대해서도 정보를 추출하여 모델 학습에 활용한다(한글은 지원하지 않음)
AWS Personalize로 추천 시스템 구축하기
1. 학습 데이터 준비하기
모델 학습에 사용할 데이터를 S3에 업로드해둡니다.
주의할 점은 학습에 사용할 데이터는 CSV파일이어야 하고 첫 행은 데이터 셋의 *스키마와 일치해야 한다는 것이다.
*스키마란 AWS Personalize 서비스에서 데이터셋을 만들 때 정의하는 데이터의 칼럼이라고 이해하면 쉽습니다.
데이터를 위와 같이 S3에 업로드하면 되고, 아래 예시는 업로드된 interaction.csv의 일부분입니다.
USER_ID | ITEM_ID | EVENT_TYPE | ITEM_CATEGORY | TIMESTAMP |
123 | 8999 | click | 24 | 1656637708 |
235 | 6997 | buy | 31 | 1656638619 |
213 | 4899 | click | 40 | 1656639405 |
7433 | 4026 | buy | 14 | 1656641575 |
167 | 4026 | click | -1 | 1656641946 |
2212 | 1521 | buy | -1 | 1656643395 |
2. Datasets 생성
AWS Personalize에서 datasets이란 업로드된 데이터를 personalize가 실제로 읽고 학습에 사용할 수 있는 형태로 변환된 data이다. datasets은 Interactions, Users, Items 총 3개의 type이 존재한다.
- interactions : 유저와 아이템 간의 상호작용 데이터
- 25개의 userid가 있어야 하며, 각 ID마다 최소 2개의 interactions이 필요함.
- 최소 1000개 이상의 데이터가 필요함.
- Users : 유저 특징 데이터(나이, 성별 등)
- Items : 상품 특징 데이터(상품 가격, 상품 카테고리 등)
데이터셋의 타입에 따라 꼭 필요한 스키마나 데이터 타입이 있기 때문에 제대로 확인 한 이후 데이터 셋을 생성해야 한다.
추가적인 주의사항은 아래와 같다.
Users 및 Items 스키마에는 메타데이터 필드가 한 개 이상 필요
- 예를 들어 Users 데이터셋에는 age, gender와 같은 메타데이터가 존재할 수 있음.
- 해당 데이터에 값이 채워지지 않아도 상관없다.
- Users 스키마에는 최대 5개, Items 스키마에 대해 50개의 메타데이터 필드를 추가할 수 있다.
- string 형태의 메타데이터 필드를 추가하려는 경우 해당 필드는 categorical 속성이나, Items schema에서 지원하는 언어만 사용해야 합니다. 그렇지 않으면 Personalize에서 분석 시 해당 스키마는 활용하지 않습니다.
- 현재 영어, 중국어, 프랑스어, 독일어, 일본어, 포르투갈어, 스페인어 지원 지원
- 하나의 칼럼은 하나의 언어로만 제공되어야 합니다.
- 카테고리 메타데이터의 경우 글자수가 1000자를 넘을 수 없다.
본격적으로 dataset을 만들어 보자.
우선 dataset을 하나로 묶을 수 있는 dataset group을 먼저 생성해야 한다.
dataset group은 별다른 설정 없이도 손쉽게 생성할 수 있다. dataset group을 생성했다면, 아래와 같이 바로 dataset을 생성할 수 있는 화면이 나온다.
위 화면에서 가장 중요한 부분은 스미카 정의이다. 위에서 언급한 주의사항을 참고하여 작성되어야 하며, 주의사항을 지키지 않는다면 데이터 셋은 생성되지 않는다.
또한 아래에서 다루게 될 레시피에 따라 반드시 선언되어야 할 스키마나 데이터 타입이 정해져 있기 때문에 제대로 인지한 후에 데이터 셋을 생성하는 것이 바람직하다.
업로드해둔 학습에 사용할 데이터의 S3 Bucket 경로를 지정하여 데이터셋 생성을 마무리한다.
(나머지 2개의 메타데이터(Items, Users)도 동일한 방식으로 데이터 세트를 생성합니다.)
글이 너무 길어져서 다음 글에서 이어서 설명하도록 하겠습니다!
'기타 > AWS' 카테고리의 다른 글
AWS-Personalize(2) (0) | 2023.05.22 |
---|---|
AWS-comprehend (0) | 2023.05.19 |
AWS-RDS (1) | 2023.05.19 |
AWS-Lambda (1) | 2023.05.19 |
AWS-ECS (0) | 2023.05.18 |