Skip to main content

Amazon Personalize

Amazon Personalize คือบริการ Machine Learning แบบ fully managed สำหรับสร้างระบบแนะนำสินค้าและเนื้อหาแบบ real-time โดยใช้เทคโนโลยีเดียวกับที่ Amazon.com ใช้ในระบบ recommendation ของตัวเองมาหลายสิบปี บริการนี้ไม่ต้องการประสบการณ์ ML เพียงแค่ส่งข้อมูล user interactions, items และ users เข้าระบบ แล้ว Personalize จะสร้างและ train โมเดลให้โดยอัตโนมัติ

Amazon Personalize รองรับ use case หลากหลาย ตั้งแต่การแนะนำสินค้าบน e-commerce, การแนะนำ content บนแพลตฟอร์ม streaming, การ re-rank ผลการค้นหาให้เหมาะกับแต่ละผู้ใช้ รวมถึงการส่ง personalized notifications และ promotions บริการนี้อัปเดตโมเดลได้แบบ real-time เมื่อมี user interaction ใหม่ ทำให้คำแนะนำแม่นยำขึ้นเรื่อยๆ ตามพฤติกรรมของผู้ใช้

AWS Docs: https://docs.aws.amazon.com/personalize/latest/dg/what-is-personalize.html

สถาปัตยกรรม


ฟีเจอร์หลัก

User Personalization (Homepage Recommendations)

แนะนำ items ที่เกี่ยวข้องที่สุดสำหรับผู้ใช้แต่ละคนบนหน้าแรกหรือ dashboard โดยวิเคราะห์ประวัติการโต้ตอบทั้งหมด รองรับทั้ง explicit feedback (ratings, reviews) และ implicit feedback (clicks, purchases, watch time)

สร้าง item-to-item recommendations โดยหา items ที่มีความเกี่ยวข้องกันจาก interaction patterns ของผู้ใช้ทั้งหมด เช่น "ลูกค้าที่ซื้อสินค้านี้ยังซื้อ..." หรือ "ภาพยนตร์ที่คล้ายกัน"

Personalized Ranking (Reorder Results for User)

รับรายการ items ที่มีอยู่แล้ว (เช่น ผลการค้นหา) แล้ว re-rank ให้เหมาะสมกับความชอบของผู้ใช้แต่ละคน เพิ่ม relevance ของผลลัพธ์โดยไม่ต้องเปลี่ยน search engine เดิม

Batch Recommendations

สร้าง recommendations สำหรับผู้ใช้จำนวนมากพร้อมกัน ส่งออกเป็นไฟล์ใน S3 เหมาะสำหรับ email campaigns, push notifications หรือการเตรียมข้อมูลล่วงหน้า

Real-Time Event Tracking

รับ user events (clicks, purchases, views) แบบ real-time ผ่าน API หรือ JavaScript SDK อัปเดตโมเดลได้ทันทีโดยไม่ต้อง retrain ทำให้คำแนะนำสะท้อนพฤติกรรมล่าสุดของผู้ใช้

Contextual Recommendations

นำ context ปัจจุบันมาประกอบการแนะนำ เช่น device ที่ใช้, เวลาของวัน, สถานที่ หรือ season ทำให้คำแนะนำตรงกับสถานการณ์จริงของผู้ใช้มากขึ้น

Cold-Start Handling

จัดการกับ users และ items ใหม่ที่ยังไม่มีประวัติการโต้ตอบ โดยใช้ item metadata (categories, genres, price range) หรือ user demographics ในการสร้างคำแนะนำเบื้องต้น

A/B Testing Support

รองรับการทดสอบ recommendation strategies หลายแบบพร้อมกัน เพื่อเปรียบเทียบประสิทธิภาพและเลือก strategy ที่ดีที่สุดสำหรับธุรกิจ

Pre-Built Recommenders (E-Commerce & Media)

มี recommenders สำเร็จรูปที่ optimize สำหรับ domain เฉพาะ เช่น Most Popular, Best Sellers, Frequently Bought Together สำหรับ e-commerce และ Top Picks, More Like X สำหรับ media

Custom Solutions with AutoML

สร้าง custom solution ที่ Personalize ทดลอง algorithms หลายตัวอัตโนมัติ (AutoML) และเลือกโมเดลที่ดีที่สุดสำหรับข้อมูลของคุณ รองรับทั้ง HRNN, HRNN-Metadata, HRNN-Coldstart, Popularity-Count และ SIMS

Filters (Exclude Out-of-Stock, Age-Gating)

กำหนด filter rules เพื่อ exclude items บางประเภทออกจากคำแนะนำ เช่น สินค้าหมดสต็อก, content ที่ไม่เหมาะกับอายุ, items ที่ผู้ใช้เคยดูแล้ว หรือ categories ที่ผู้ใช้ไม่สนใจ


การติดตั้งและการตั้งค่า

เปิดใช้งานผ่าน Console

  1. เข้า AWS Console > Amazon Personalize
  2. สร้าง Dataset Group ใหม่ (เลือก Domain: E-Commerce หรือ Video On Demand หรือ Custom)
  3. สร้าง Datasets (Interactions, Items, Users)
  4. Import ข้อมูลจาก S3
  5. สร้าง Solution และ Train
  6. Deploy เป็น Campaign

ติดตั้ง SDK

pip install boto3

IAM Permissions ที่จำเป็น

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"personalize:*",
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket",
"iam:PassRole"
],
"Resource": "*"
}
]
}

โครงสร้างข้อมูล Interactions (CSV)

USER_ID,ITEM_ID,TIMESTAMP,EVENT_TYPE
user_001,item_101,1609459200,click
user_001,item_205,1609462800,purchase
user_002,item_101,1609466400,click

วิธีใช้งาน

Import ข้อมูลและสร้าง Dataset

import boto3
import json

personalize = boto3.client('personalize', region_name='us-east-1')

# สร้าง dataset group
response = personalize.create_dataset_group(
name='my-ecommerce-recommendations'
)
dataset_group_arn = response['datasetGroupArn']

# สร้าง schema สำหรับ interactions
schema = {
"type": "record",
"name": "Interactions",
"namespace": "com.amazonaws.personalize.schema",
"fields": [
{"name": "USER_ID", "type": "string"},
{"name": "ITEM_ID", "type": "string"},
{"name": "TIMESTAMP", "type": "long"},
{"name": "EVENT_TYPE", "type": "string"}
],
"version": "1.0"
}

schema_response = personalize.create_schema(
name='interactions-schema',
schema=json.dumps(schema)
)

สร้าง Campaign และขอ Recommendations

# สร้าง solution version (train model)
solution_response = personalize.create_solution(
name='user-personalization-solution',
datasetGroupArn=dataset_group_arn,
recipeArn='arn:aws:personalize:::recipe/aws-user-personalization'
)

solution_version_response = personalize.create_solution_version(
solutionArn=solution_response['solutionArn']
)

# Deploy campaign
campaign_response = personalize.create_campaign(
name='my-recommendation-campaign',
solutionVersionArn=solution_version_response['solutionVersionArn'],
minProvisionedTPS=1
)
campaign_arn = campaign_response['campaignArn']

# ขอ recommendations สำหรับ user
personalize_runtime = boto3.client('personalize-runtime', region_name='us-east-1')

recommendations = personalize_runtime.get_recommendations(
campaignArn=campaign_arn,
userId='user_001',
numResults=10,
filterArn='arn:aws:personalize:us-east-1:123456789:filter/exclude-purchased'
)

for item in recommendations['itemList']:
print(f"Item ID: {item['itemId']}, Score: {item.get('score', 'N/A')}")

Track Real-Time Events

personalize_events = boto3.client('personalize-events', region_name='us-east-1')

# ส่ง event เมื่อผู้ใช้คลิกสินค้า
personalize_events.put_events(
trackingId='your-tracking-id',
userId='user_001',
sessionId='session_abc123',
eventList=[
{
'sentAt': 1609459200,
'eventType': 'click',
'itemId': 'item_305',
'properties': json.dumps({'discount': 'true'})
}
]
)

Batch Recommendations

# สร้าง batch inference job
batch_response = personalize.create_batch_inference_job(
jobName='weekly-email-recommendations',
solutionVersionArn=solution_version_response['solutionVersionArn'],
jobInput={
's3DataSource': {
'path': 's3://my-bucket/input/users.json'
}
},
jobOutput={
's3DataDestination': {
'path': 's3://my-bucket/output/'
}
},
roleArn='arn:aws:iam::123456789:role/PersonalizeRole',
numResults=20
)

ราคา (ประมาณการในบาท)

รายการราคา USDราคา THB (1 USD = 35 บาท)
Training data processing$0.05/1,000 training data hours~1.75 บาท/1,000 ชั่วโมง
Real-time recommendations$0.20/1,000 recommendations~7 บาท/1,000 recommendations
Batch recommendations$0.05/1,000 users~1.75 บาท/1,000 users
Real-time event tracking$0.05/1,000 events~1.75 บาท/1,000 events
Data storage$0.05/GB/เดือน~1.75 บาท/GB/เดือน

Free Tier (2 เดือนแรก):

  • Data processing: 20 GB ฟรี
  • Training: 100 training hours ฟรี
  • Real-time recommendations: 50,000 requests/เดือน ฟรี

ตัวอย่างค่าใช้จ่าย: ระบบ e-commerce ขนาดกลาง ที่มี 100,000 recommendations/วัน x 30 วัน = 3,000,000 recommendations/เดือน คิดเป็น 3,000 x $0.20 = $600/เดือน (~21,000 บาท/เดือน)


เหมาะสำหรับ

  • แพลตฟอร์ม e-commerce ที่ต้องการแนะนำสินค้าแบบ personalized เพื่อเพิ่ม conversion rate
  • บริการ video/music streaming ที่ต้องการแนะนำ content ตรงกับรสนิยมผู้ใช้แต่ละคน
  • แพลตฟอร์มข่าวสารและ blog ที่ต้องการเสนอบทความที่ผู้ใช้สนใจ
  • แอป online learning ที่ต้องการแนะนำคอร์สเรียนที่เหมาะสมกับระดับและความสนใจ
  • ธุรกิจที่ต้องการ personalized email campaigns และ push notifications
  • แพลตฟอร์มที่ต้องการ personalized search ranking โดยไม่เปลี่ยน search engine หลัก
  • ทีมที่ไม่มี ML expertise แต่ต้องการสร้าง recommendation system คุณภาพสูง

ใช้ร่วมกับ AWS Services

  • Amazon S3 - เก็บ training data และ batch output
  • AWS Lambda - trigger recommendation requests และประมวลผล events
  • Amazon API Gateway - expose recommendation endpoint ให้ front-end
  • Amazon CloudWatch - monitor campaign metrics และ recommendation quality
  • AWS Glue - ETL ข้อมูลจากแหล่งต่างๆ เข้า Personalize format
  • Amazon Kinesis - stream real-time events เข้า Personalize
  • Amazon SageMaker - train custom models แล้ว import เข้า Personalize
  • Amazon EventBridge - automate retraining pipeline เมื่อมีข้อมูลใหม่
  • AWS Amplify - integrate Personalize เข้า web/mobile app ได้ง่าย

Use Case ตัวอย่าง

1. แพลตฟอร์ม E-Commerce เพิ่ม Revenue ด้วย Personalized Recommendations

บริษัทค้าปลีกออนไลน์ขนาดกลางที่มีสินค้ากว่า 50,000 รายการ ใช้ Amazon Personalize สร้าง recommendation widget บนหน้า product detail โดยแสดง "สินค้าที่คุณอาจสนใจ" 8 รายการ ระบบวิเคราะห์ประวัติการซื้อ, การเรียกดู และ wishlist ของผู้ใช้กว่า 500,000 คน ผลลัพธ์คือ click-through rate เพิ่มขึ้น 42% และ average order value เพิ่มขึ้น 28% ภายใน 3 เดือนแรก โดยใช้ Filter ตัด items ที่หมดสต็อกและสินค้าที่ผู้ใช้เพิ่งซื้อไปออกโดยอัตโนมัติ

2. Streaming Platform ลด Churn ด้วย Personalized Content Discovery

แพลตฟอร์ม video streaming ไทยที่มีคอนเทนต์กว่า 10,000 รายการ ใช้ Amazon Personalize สร้าง Top Picks สำหรับผู้ใช้แต่ละคนบนหน้าแรก พร้อม Related Content บนหน้า video detail ระบบรับ events (play, pause, skip, complete, rating) แบบ real-time ผ่าน Kinesis ทำให้ home screen อัปเดตคำแนะนำตามพฤติกรรมล่าสุด ผลคือ content discovery rate เพิ่มขึ้น 55% และ monthly churn rate ลดลง 18%

3. Online Learning Platform แนะนำคอร์สที่เหมาะสม

แพลตฟอร์ม e-learning ที่มีคอร์สกว่า 3,000 รายการ ใช้ Amazon Personalize แนะนำ learning path ที่เหมาะสมสำหรับแต่ละคน โดยนำข้อมูล completed courses, quiz scores, learning pace และ career goals มาประกอบ ระบบยังใช้ Contextual Recommendations เพื่อแนะนำ short courses ในช่วงเย็น และ in-depth courses ในช่วงสุดสัปดาห์ ผลลัพธ์คือ course completion rate เพิ่มขึ้น 35% และ subscription renewal rate เพิ่มขึ้น 22%