🚀 AI สำหรับเกษตรไทย

BuddyBite
AST-GCN Pipeline

ระบบพยากรณ์ภาวะ มะม่วงล้นตลาด โดยผสาน Graph Neural Network กับ Time-Series เพื่อช่วยเกษตรกรรับมือวิกฤตราคาได้ล่วงหน้า

🚀 เปิด Procurement Dashboard 📖 ดู Pipeline อธิบาย
🥫 เรื่องเล่า "เงาะกระป๋อง 20 บาท" ของฝ่ายจัดซื้อ SME
🟢 เฟส 1: สภาวะปกติ
ขาย 20.- | ต้นทุน 10.-
โรงงานกำไรหนามั่นคง อยู่รอดและเติบโตสบาย
🟡 เฟส 2: ซัพพลายสะดุด
ขาย 20.- | ต้นทุนพุ่ง 19.-
ผู้ซื้อไม่รู้สึกอะไร แต่โรงงานกำไรเหลือ 1.- ไม่พอกลบโสหุ้ย
🔴 เฟส 3: แบกรับไม่ไหว
ขาย 25.- | ต้นทุน 24.-
ผู้ซื้อลดลงฮวบฮาบ โรงงานกำลังจะขาดทุนและเสี่ยงเจ๊ง
🚨 "ส่วนต่างราคาสินค้าเกษตรที่เหวี่ยงเพียง 1 บาท คือเส้นแบ่งระหว่าง รอด หรือ เจ๊ง!"
เลื่อนลงเพื่อสำรวจ
The Hook (Pain Point)

วิกฤตกำไรและต้นทุนวัตถุดิบ SME

ในโลกธุรกิจจริง โรงงานแปรรูปเผชิญความผันผวนของราคาผลไม้ซึ่งส่งผลต่อกำไรโดยตรง ลองกดคลิกจำลองระดับต้นทุนเงาะด้านล่างเพื่อดูผลกระทบต่อกำไรโรงงาน "เงาะกระป๋อง"

เงาะในน้ำเชื่อม 🥫 น้ำหนักสุทธิ 565 กรัม
กำไร 10 บ.
ราคาขาย20 บ.
ต้นทุนรวม10 บ.
กำไรสุทธิ10 บ.
🟢 สภาวะปกติ: ขาย 20 บ. ต้นทุน 10 บ. เหลือกำไร 10 บ./กระป๋อง
1
แถวที่ 1: สภาวะปกติ
ขาย 20 บ. | ต้นทุน 10 บ. | กำไร 10 บ. ซื้อเงาะตามราคากลาง โรงงานมีกำไรหนา อยู่รอดและเติบโตได้สบาย
2
แถวที่ 2: ซัพพลายสะดุด
ขาย 20 บ. | ต้นทุน 19 บ. | กำไร 1 บ. ราคาเงาะพุ่ง ลูกค้ายังจ่ายเท่าเดิม แต่โรงงานเหลือกำไรแค่ 1 บาท ไม่พอกลบค่าใช้จ่าย
3
แถวที่ 3: วิกฤตราคา/ของขาดตลาด
ขาย 25 บ. | ต้นทุน 24 บ. | กำไร 1 บ. ต้องขึ้นราคาขาย แต่ลูกค้าลดซื้อฮวบฮาบ โรงงานแบกต้นทุนสูง กำไรบางเฉียบ เสี่ยงปิดตัว
🛡️
ทางรอด: โซลูชัน BuddyBite
ล็อกซื้อ 14 บ. | ขาย 20 บ. | กำไร 6 บ. พยากรณ์ราคาล่วงหน้า + ชี้เป้าไร่จากแผนที่ Supply Chain ปิดดีลก่อนราคาพุ่ง คุมกำไรได้มั่นคง
ขั้นตอนการทำงาน

วิธีการทำงานหลัก

Pipeline แบ่งออกเป็น 3 Phase หลัก ตั้งแต่การรวบรวมข้อมูลหลายแหล่ง สร้างกราฟเชิงความรู้ ไปจนถึงการเทรนและพยากรณ์ด้วย AST-GCN

🗂️
Phase 1
Data Ingestion & Preprocessing
+
📦 ข้อมูลที่ใช้
  • 📊 ราคาขายส่งมะม่วงรายวัน (Market Price CSV)
  • 📉 ปริมาณผลผลิตรายปี (Yield Data)
  • 🌦️ สภาพอากาศจาก Google Earth Engine
  • 💬 กระทู้ Pantip (2560–2568)
⚙️ การประมวลผล
  • 🗓️ แปลงวันที่ไทย → วันที่มาตรฐาน
  • 📈 คำนวณ 7-Day Rolling Average & Volatility
  • 📐 Weighted Seasonal Distribution (Normal Dist.)
  • 🤖 Sentiment Score ผ่าน Gemini 1.5 Flash API
📊 Feature ที่ได้
  • 💰 ราคาต่ำสุด / สูงสุด / เฉลี่ย (บาท/กก.)
  • 💹 Price Spread & Return
  • Rolling Volatility 7 วัน
  • 🌦️ อุณหภูมิ / ปริมาณฝน (GEE)
🎭 Sentiment Analysis
  • 💬 วิเคราะห์ 603 กระทู้ด้วย Gemini API
  • 📈 Score: -1.0 (เชิงลบ) ถึง 1.0 (เชิงบวก)
  • ⚠️ ตัวอย่าง: "มะม่วงล้นตลาด" → -0.9
  • Batch Processing 50 ข้อความต่อครั้ง
🕸️
Phase 2
Graph Construction – สร้างกราฟเชิงความรู้
+
🔵 Node ประเภทต่างๆ
  • 🌿 Supply Node – อำเภอผู้ผลิต
  • 🏪 Market Node – ประเภทมะม่วงในตลาด
  • 💬 Social Node – Social_Pantip (Sentiment รวม)
  • 🌦️ Weather Node – ข้อมูลอากาศรายวัน (GEE)
🔗 Edge (ความสัมพันธ์)
  • 🚚 supplies_to: อำเภอ → ตลาด
  • 📈 influences_price: Social → ตลาด
  • 🔗 Correlation-based edges (|r| ≥ 0.15)
  • 📐 Normalized Adjacency Matrix (D⁻½ A D⁻½)
📐 ขนาดกราฟ
  • 🕸️ 10 Nodes, 24 Edges (Phase 2 snapshot)
  • 🥭 4 Market Nodes สำหรับ GCN
  • 🔗 12 Correlation-based Edges ใน AST-GCN
  • 🧬 Heterogeneous Graph (NetworkX)
🧪 การสร้าง Sequence
  • Lookback window: 7 วัน
  • 📦 สร้างได้ 173 ชุดข้อมูล
  • 🎯 Train 80% / Test 20%
  • ⚖️ MinMaxScaler normalize ข้อมูล
🧠
Phase 3
Model Training – AST-GCN
+
🏗️ สถาปัตยกรรม
  • 🧱 SimpleGCN: Linear(5 → 48)
  • 🔁 ASTGCNCell: GCN + GRU Gates
  • ⚙️ Update Gate, Reset Gate, Candidate Gate
  • 🎯 Linear Output: 48 → 1
⚡ Hyperparameters
  • 📏 Hidden Dim: 48
  • Optimizer: Adam (lr=0.005, wd=1e-4)
  • 📉 Loss: MSE
  • Epochs: 150
📉 Training Loss
  • Epoch 20: MSE = 0.0527
  • Epoch 60: MSE = 0.0350
  • Epoch 100: MSE = 0.0347
  • Epoch 140: MSE = 0.0346 ✅
🎯 ผลการพยากรณ์
  • 🎯 Test MAE: 3.42 บาท/กก. (ดีขึ้นจากโมเดลเดิม 51.1%)
  • 🎯 Test RMSE: 4.08 บาท/กก. (ดีขึ้นจากโมเดลเดิม 52.0%)
  • 🥭 ตัวอย่าง: จริง 45.6 → ทำนาย 46.5
  • 📅 ข้อมูลล่าสุด: มีนาคม 2026

จำลองการทำงานของ GAT

กด ▶ เริ่มจำลอง แล้วดูว่า AI ทำงานอย่างไรทีละเฟส

📡
Phase 1
Data Ingestion
🕸️
Phase 2
Build Graph
🔦
Phase 3
Attention
🎯
Phase 4
Prediction
🎯 ราคาพยากรณ์ (พรุ่งนี้)
45.8
บาท / กิโลกรัม · มะม่วงน้ำดอกไม้
ลดลง 2.1 บาท
Confidence0%
⚠️ สัญญาณผลผลิตสูงเกิน → เสี่ยง ล้นตลาด 3–5 วัน
💡
กด ▶ เริ่มจำลอง เพื่อดูแอนิเมชันการทำงานของ GAT ทั้ง 4 เฟส
Supply (อำเภอ)
Market (ตลาด)
Social Sentiment
Weather
Attention Weight
Deep Learning

สถาปัตยกรรม AST-GCN

Adaptive Spatio-Temporal GCN ผสาน Graph Convolution กับ GRU เพื่อจับความสัมพันธ์ระหว่างตลาดและช่วงเวลาพร้อมกัน

📊
Input
7 timesteps × 4 nodes × 5 features
🕸️
SimpleGCN
D⁻½ A D⁻½ × X
Linear(5→48)
🔁
GRU Cell
Update / Reset
Candidate Gate
💡
Hidden State
h_t ∈ ℝ⁴⁸ (per node)
🎯
Output
Linear(48→1)
ราคาพยากรณ์
Epoch: 0 / 150  |  Loss:
Optimizer: Adam, lr=0.005
Loss: MSE (Mean Squared Error)
Hidden Dim: 48 units
Lookback: 7 วัน
Train/Test: 80% / 20%
Loss เริ่มต้น: ~0.0527
Loss สุดท้าย: ~0.0346
การวัดผล

ผลลัพธ์ของโมเดล

การประเมิน AST-GCN บนชุดทดสอบ 20% (ข้อมูลราคามะม่วงปี 2026)

0
MAE – Mean Absolute Error
บาท/กก. (ดีขึ้น 51.1% 📉)
0
RMSE – Root Mean Squared Error
บาท/กก. (ดีขึ้น 52.0% 📉)
0
MAPE – Percentage Error
8.92% (ผ่านเกณฑ์ KPI < 10%)
0
Directional Accuracy
76.47% (ทิศทางเทรนด์ผ่านเกณฑ์ > 75%)
0
False Alarm Rate
0.00% (ปราศจากการแจ้งเตือนหลอก 🛡️)
0
Sequence Samples
7-day window

🔄 ตารางเปรียบเทียบโมเดลเดิม (GAT) vs โมเดลใหม่ (AST-GCN)

การเปลี่ยนผ่านสถาปัตยกรรมโครงข่ายประสาทจากโมเดลเดิม (GAT) ใน buddybite_gat2_pipeline copy.ipynb สู่โมเดลปัจจุบัน (AST-GCN) ใน buddybite_gat2_pipeline.ipynb ช่วยปรับปรุงความแม่นยำอย่างชัดเจน เนื่องจาก AST-GCN สามารถประมวลผลความสัมพันธ์เชิงพื้นที่ควบคู่ไปกับแนวโน้มลำดับเวลา (GRU) ได้อย่างมีประสิทธิภาพ:

มาตรวัดประสิทธิภาพ (Metrics) โมเดลเดิม (GAT) ❌ โมเดลใหม่ (AST-GCN) ✅ อัตราการปรับปรุง (Improvement)
โมเดลหลัก (Core Model) GAT Spatial-only (HeteroConv) Adaptive Spatio-Temporal GCN (GCN + GRU) เพิ่ม Time Recurrence + Multi-features
MAE (คลาดเคลื่อนจริง) 7.00 บาท/กก. 3.42 บาท/กก. ดีขึ้น +51.1% 📉
RMSE (ดัชนีความเสี่ยงแกว่ง) 8.50 บาท/กก. 4.08 บาท/กก. ดีขึ้น +52.0% 📉
MAPE (อัตราคลาดเคลื่อนเฉลี่ย) 18.40% (ต่ำกว่าเกณฑ์) 8.92% (ผ่านเกณฑ์ KPI < 10%) ดีขึ้น +51.5% (ลดความผิดพลาดลงเกินครึ่ง)
Directional Accuracy (ทำนายเทรนด์) 58.62% (ไม่แม่นยำพอ) 76.47% (ผ่านเกณฑ์ KPI > 75%) ดีขึ้น +30.5% 📈
False Alarm Rate (อัตราเตือนหลอก) 29.41% (ความเสี่ยงสูง) 0.00% (เสถียรภาพสูง) ลดลง 100% (ปราศจากสัญญาณหลอก 🛡️)
Parameters (ตัวแปรในการเรียนรู้) lr=0.01, wd=5e-4, 200 Epochs lr=0.005, wd=1e-4, 150 Epochs ลดค่า lr ป้องกัน overfitting + บรรจบเร็วขึ้น

ตัวอย่างผลการพยากรณ์