Skip to main content

Amazon Forecast

Amazon Forecast คือบริการ Machine Learning แบบ fully managed สำหรับ time-series forecasting ที่ใช้เทคโนโลยีเดียวกับที่ Amazon ใช้พยากรณ์ความต้องการสินค้าในระบบ e-commerce ของตัวเอง บริการนี้รองรับการพยากรณ์หลายตัวแปรพร้อมกัน (เช่น ยอดขาย, สต็อก, demand, capacity) โดยไม่ต้องมีความรู้ด้าน ML เพียงแค่ upload ข้อมูลประวัติและ metadata แล้วระบบจะเลือก algorithm ที่เหมาะสมโดยอัตโนมัติ

Amazon Forecast โดดเด่นในด้านการรวม external signals เข้ากับการพยากรณ์ เช่น ข้อมูลสภาพอากาศ, วันหยุดนักขัตฤกษ์, promotions และ macroeconomic indicators ทำให้ได้ผลพยากรณ์ที่แม่นยำกว่าการใช้ข้อมูล historical เพียงอย่างเดียวถึง 50% บริการนี้เหมาะสำหรับธุรกิจที่ต้องการตัดสินใจล่วงหน้า เช่น การสั่งสต็อก, การวางแผนกำลังคน หรือการบริหารงบประมาณ

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

สถาปัตยกรรม


ฟีเจอร์หลัก

AutoML (Tries All Algorithms)

Amazon Forecast รัน AutoPredictor ที่ทดสอบ algorithms หลายตัวโดยอัตโนมัติและเลือกโมเดลหรือ ensemble ที่ดีที่สุดสำหรับข้อมูลของคุณ ลดเวลาในการ experimentation และให้ผลลัพธ์ที่ดีที่สุดโดยไม่ต้องเลือก algorithm เอง

Built-In Algorithms

  • DeepAR+ - Deep learning algorithm ที่เหมาะสำหรับ series จำนวนมากที่มี pattern คล้ายกัน
  • CNN-QR - Convolutional Neural Network สำหรับ quantile regression รองรับ related time series
  • Prophet - Algorithm จาก Facebook ที่แข็งแกร่งสำหรับข้อมูลที่มี trend และ seasonality ชัดเจน
  • NPTS - Non-Parametric Time Series เหมาะสำหรับข้อมูลที่มี sparsity หรือ intermittent demand
  • ARIMA - Classical statistical model สำหรับ univariate time series
  • ETS - Exponential Smoothing ที่ดีสำหรับ series ที่มี trend และ seasonality

What-If Analysis

ทดสอบ scenario ต่างๆ โดยเปลี่ยน assumptions เช่น "ถ้าเพิ่ม discount 20% จะมี demand เพิ่มขึ้นเท่าไร?" หรือ "ถ้าเปิดสาขาใหม่จะต้องสต็อกสินค้าเท่าใด?" ช่วยในการวางแผนเชิงกลยุทธ์

Explainability (Which Features Drive Forecast)

แสดงว่า feature ไหนมีอิทธิพลต่อการพยากรณ์มากที่สุด เช่น ราคา, promotion, วันหยุด หรือสภาพอากาศ ทำให้ผู้ใช้เข้าใจว่า model ตัดสินใจจากอะไรและเชื่อถือผลได้มากขึ้น

Weather Index Integration

เชื่อมต่อกับข้อมูลสภาพอากาศโดยอัตโนมัติตามพิกัดของแต่ละ location ช่วยพยากรณ์ demand ของสินค้าที่ได้รับผลกระทบจากอากาศ เช่น เครื่องดื่ม, เสื้อผ้า, อุปกรณ์กีฬา

Holiday Calendars

รองรับ holiday calendars สำหรับมากกว่า 60 ประเทศ รวมถึงไทย ระบบจะนำวันหยุดมาประกอบในการพยากรณ์ช่วง peak demand เช่น Songkran, วันหยุดยาว, เทศกาลปีใหม่

นำ time series ของตัวแปรอื่นมาช่วยในการพยากรณ์ เช่น ราคาคู่แข่ง, ยอด impressions โฆษณา, อัตราแลกเปลี่ยน ช่วยให้ model เข้าใจความสัมพันธ์ระหว่างตัวแปรต่างๆ

Forecast Export to S3

ส่งออกผลการพยากรณ์ไปยัง S3 ในรูปแบบ CSV หรือ Parquet สามารถนำไปใช้ใน downstream systems เช่น ERP, inventory management หรือ BI tools ได้ทันที

Predictor Monitoring

ติดตามประสิทธิภาพของ predictor เมื่อเวลาผ่านไป ตรวจจับ model drift และแจ้งเตือนเมื่อ accuracy ลดลงถึงระดับที่กำหนด ช่วยให้รู้ว่าเมื่อใดควร retrain model


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

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

  1. เข้า AWS Console > Amazon Forecast
  2. สร้าง Dataset Group
  3. Import datasets (Target time series, Related time series, Item metadata)
  4. Train predictor (เลือก AutoPredictor)
  5. Create forecast
  6. Export หรือ query ผ่าน API

ติดตั้ง SDK

pip install boto3 pandas

IAM Permissions ที่จำเป็น

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

รูปแบบข้อมูล Target Time Series (CSV)

item_id,timestamp,demand,location
item_001,2023-01-01,150,bangkok
item_001,2023-01-02,120,bangkok
item_001,2023-01-03,200,bangkok
item_002,2023-01-01,80,chiangmai

วิธีใช้งาน

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

import boto3

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

# สร้าง dataset group
dsg_response = forecast.create_dataset_group(
DatasetGroupName='retail-demand-forecast',
Domain='RETAIL'
)
dataset_group_arn = dsg_response['DatasetGroupArn']

# สร้าง dataset schema
schema = {
"Attributes": [
{"AttributeName": "item_id", "AttributeType": "string"},
{"AttributeName": "timestamp", "AttributeType": "timestamp"},
{"AttributeName": "demand", "AttributeType": "float"},
]
}

dataset_response = forecast.create_dataset(
DatasetName='retail-target-ts',
Domain='RETAIL',
DatasetType='TARGET_TIME_SERIES',
DataFrequency='D', # daily
Schema=schema
)
dataset_arn = dataset_response['DatasetArn']

# Import ข้อมูลจาก S3
import_response = forecast.create_dataset_import_job(
DatasetImportJobName='initial-import',
DatasetArn=dataset_arn,
DataSource={
'S3Config': {
'Path': 's3://my-bucket/forecast-data/target.csv',
'RoleArn': 'arn:aws:iam::123456789:role/ForecastRole'
}
},
TimestampFormat='yyyy-MM-dd'
)

Train AutoPredictor

# สร้าง predictor ด้วย AutoML
predictor_response = forecast.create_auto_predictor(
PredictorName='retail-demand-predictor',
ForecastHorizon=30, # พยากรณ์ 30 วันล่วงหน้า
ForecastFrequency='D',
DataConfig={
'DatasetGroupArn': dataset_group_arn,
'AttributeConfigs': [
{
'AttributeName': 'demand',
'Transformations': {
'aggregation': 'sum',
'middlefill': 'zero',
'backfill': 'zero'
}
}
]
},
ExplainPredictor=True # เปิด explainability
)
predictor_arn = predictor_response['PredictorArn']
print(f"Training predictor: {predictor_arn}")

สร้างและ Query Forecast

# สร้าง forecast
forecast_response = forecast.create_forecast(
ForecastName='retail-demand-oct-2024',
PredictorArn=predictor_arn,
ForecastTypes=['0.1', '0.5', '0.9'] # 10th, 50th, 90th percentile
)
forecast_arn = forecast_response['ForecastArn']

# Query forecast สำหรับ item เฉพาะ
forecast_query = boto3.client('forecastquery', region_name='us-east-1')

result = forecast_query.query_forecast(
ForecastArn=forecast_arn,
Filters={'item_id': 'item_001', 'location': 'bangkok'},
StartDate='2024-10-01T00:00:00',
EndDate='2024-10-30T00:00:00'
)

for ts_key, ts_data in result['Forecast']['Predictions'].items():
print(f"\nPercentile: {ts_key}")
for point in ts_data[:5]:
print(f" {point['Timestamp']}: {point['Value']:.2f}")

What-If Analysis

# สร้าง what-if analysis
whatif_response = forecast.create_what_if_analysis(
WhatIfAnalysisName='price-increase-scenario',
ForecastArn=forecast_arn,
TimeSeriesTransformations=[
{
'Action': {
'AttributeName': 'price',
'Operation': 'MULTIPLY',
'Value': 1.10 # เพิ่มราคา 10%
},
'TimeSeriesConditions': [
{
'AttributeName': 'item_id',
'AttributeValue': 'item_001',
'Condition': 'EQUALS'
}
]
}
]
)

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

รายการราคา USDราคา THB (1 USD = 35 บาท)
Generated forecasts$0.60/1,000 forecasts~21 บาท/1,000 forecasts
Model training$0.24/hour~8.40 บาท/ชั่วโมง
Dataset storage$0.088/GB/เดือน~3.08 บาท/GB/เดือน
Forecast export$0.60/1,000 rows~21 บาท/1,000 rows
What-if forecast$0.60/1,000 forecasts~21 บาท/1,000 forecasts

ตัวอย่างค่าใช้จ่าย: ธุรกิจ retail ที่มีสินค้า 10,000 SKU พยากรณ์ 30 วันล่วงหน้าทุกสัปดาห์

  • Forecast: 10,000 items x 30 days x 4 runs = 1,200,000 forecasts/เดือน = $720/เดือน (~25,200 บาท)
  • Training: ประมาณ 5 ชั่วโมง/เดือน = $1.20/เดือน
  • รวมประมาณ ~25,200 บาท/เดือน

เหมาะสำหรับ

  • ธุรกิจค้าปลีกและ e-commerce ที่ต้องการพยากรณ์ demand เพื่อบริหารสต็อกอย่างมีประสิทธิภาพ
  • บริษัทที่ต้องการวางแผน supply chain และลด overstock / stockout
  • ธุรกิจพลังงานที่ต้องพยากรณ์การใช้ไฟฟ้า, ราคาน้ำมัน หรือ renewable energy output
  • องค์กรการเงินที่ต้องการพยากรณ์ cash flow, revenue หรือ customer churn
  • โรงพยาบาลและสถานพยาบาลที่ต้องการพยากรณ์จำนวนผู้ป่วยและความต้องการทรัพยากร
  • ธุรกิจการท่องเที่ยวและโรงแรมที่ต้องการพยากรณ์การจองและวางแผนกำลังคน

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

  • Amazon S3 - เก็บ input data และ forecast output
  • AWS Glue - ETL และ transform ข้อมูลก่อน import
  • Amazon Athena - Query forecast results ที่ export ไปยัง S3
  • Amazon QuickSight - Visualize forecast results เป็น dashboard
  • AWS Lambda - Automate forecast pipeline ด้วย scheduled triggers
  • Amazon EventBridge - ตั้ง schedule การ retrain และ generate forecasts อัตโนมัติ
  • Amazon SNS - แจ้งเตือนเมื่อ forecast พร้อมใช้งานหรือ accuracy ลดลง
  • Amazon SageMaker - ใช้ forecast output เป็น feature ใน custom ML models

Use Case ตัวอย่าง

1. ห้างสรรพสินค้าลด Overstock ด้วย Demand Forecasting

ห้างสรรพสินค้าขนาดใหญ่ในกรุงเทพฯ ใช้ Amazon Forecast วิเคราะห์ข้อมูลยอดขาย 3 ปีย้อนหลังสำหรับสินค้ากว่า 50,000 SKU ร่วมกับข้อมูลวันหยุดไทย, สภาพอากาศรายวัน, promotions และราคาคู่แข่ง ระบบพยากรณ์ demand รายสัปดาห์ล่วงหน้า 8 สัปดาห์ ทำให้ฝ่าย buying สามารถสั่งสินค้าได้แม่นยำขึ้น ลด overstock ได้ 28% และลด stockout ได้ 35% ประหยัดต้นทุน inventory กว่า 20 ล้านบาทต่อปี

2. บริษัทพลังงานพยากรณ์การใช้ไฟฟ้า

การไฟฟ้าฝ่ายผลิตใช้ Amazon Forecast พยากรณ์ความต้องการไฟฟ้ารายชั่วโมงล่วงหน้า 7 วัน โดยใช้ข้อมูล historical demand, อุณหภูมิ, ความชื้น, วันทำงาน/วันหยุด และ economic indicators ระบบช่วยวางแผนการเดินเครื่องกำลังไฟฟ้าสำรองได้อย่างเหมาะสม ลดต้นทุนการผลิตไฟฟ้าส่วนเกินได้ 15% และลด carbon footprint

3. โรงพยาบาลวางแผนทรัพยากรด้วย Patient Volume Forecasting

โรงพยาบาลเอกชนขนาดใหญ่ใช้ Amazon Forecast พยากรณ์จำนวนผู้ป่วยแผนกผู้ป่วยนอกรายวันล่วงหน้า 4 สัปดาห์ โดยใช้ข้อมูลประวัติผู้ป่วย, วันหยุดนักขัตฤกษ์, ฤดูกาลของโรค และ promotions สุขภาพ ทำให้วางแผนตารางเวรแพทย์และพยาบาลได้แม่นยำขึ้น ลดการ overtime ได้ 25% และเพิ่ม patient satisfaction score จากการลดเวลารอ