เราต้องการเปรียบเทียบยอดขายของขนมปังในแต่ละวัน โดยเราจะสร้างโมเดล Machine Learning เพื่อพยากรณ์ยอดขายขนมปัง โดยอิงข้อมูลจากยอดขายของ 30 วันแรก
โดยจะเปรียบเทียบโมเดล 2 แบบ คือ
1.Linear Regression
2.DNN (Deep Neural Network)

ขั้นตอนการนำเข้าข้อมูล มีทั้งหมด 8 ขั้นตอน ดังนี้
1.ติดตั้งและนำเข้าไลบรารี
2.สร้างข้อมูลจำลองยอดขายขนมปัง
3.แบ่งข้อมูลเป็น Training และ Testing
4.สร้างโมเดล Neural Network
5.คอมไพล์โมเดล
6.ฝึกโมเดล
7.แสดงกราฟเปรียบเทียบ Linear Regression กับ DNN
8.พยากรณ์ยอดขายในวันที่ 31

ขั้นตอนที่ 1 ติดตั้งและนำเข้าไลบรารี

Image description

numpy สร้างข้อมูลตัวเลขของวัน
pandas ใช้จัดเก็บข้อมูลให้อยู่ในรูปแบบตาราง
matplotlib.pyplot ใช้วาดกราฟแสดงผล
tensorflow ใช้สร้างและฝึกโมเดล DNN

ขั้นตอนที่ 2 สร้างข้อมูลจำลองยอดขายขนมปัง

Image description

เราสร้างข้อมูลจำลองขึ้นมาสำหรับยอดขายขนมปังในแต่ละวัน และกำหนดยอดขายให้มีแนวโน้มเพิ่มขึ้นเรื่อยๆ ตลอด 30 วัน

ขั้นตอนที่ 3 แบ่งข้อมูลเป็น Training และ Testing

Image description

ใช้ train_test_split แบ่งข้อมูลเพื่อฝึกและทดสอบโมเดล

ขั้นตอนที่ 4 สร้างโมเดล Neural Network

Image description

เราใช้ Keras สร้างโมเดล DNN แบบ Sequential

ขั้นตอนที่ 5 คอมไพล์โมเดล

Image description

เราใช้ loss function, optimizer และ metric วัดผลการฝึกของโมเดล

ขั้นตอนที่ 6 ฝึกโมเดล

Image description

เราฝึกโมเดลโดยใช้ข้อมูลที่แบ่งไว้ พร้อมใช้ EarlyStopping เพื่อหยุดการฝึกอัตโนมัติหาก validation loss ไม่ดีขึ้นเพื่อลดการ overfitting

outputที่ได้
Image description

ขั้นตอนที่ 7 แสดงกราฟเปรียบเทียบ Linear Regression กับ DNN

Image description
กราฟเปรียบเทียบโมเดลทั้งสองแบบ

Image description

  • จุดสีแดง คือ ยอดขายจริง
  • เส้นประสีน้ำเงิน คือ Linear Regression พยากรณ์ยอดขายแบบเส้นตรง
  • เส้นประสีเขียว คือ DNN Prediction จากโมเดล Neural Network

Image description
ตารางเปรียบเทียบค่าจริง (Actual Sales) กับค่าที่โมเดล Linear Regression และ DNN

8.พยากรณ์ยอดขายในวันที่ 31

Image description
outputที่ได้

Image description
จากผลการพยากรณ์ยอดขายในวันที่ 31 พบว่า Linear Regression ทำนายได้ใกล้เคียงกับแนวโน้มยอดขายที่เพิ่มขึ้นมากกว่า โดยให้ค่าประมาณ 112.97 ชิ้น แต่ DNN ทำนายเพียง 34.47 ชิ้น ซึ่งต่ำกว่าความเป็นจริง

ต่อไปเราจะสร้างตัวอย่างข้อมูลใหม่ที่แตกต่างจากเดิม
กำหนดให้ยอดขายเติบโตช้าในช่วงต้นในวันที่ 1–15 และเพิ่มขึ้นอย่างรวดเร็วในช่วงหลังวันที่ 16–30
เพื่อทดสอบว่า Linear Regression หรือ TensorFlow DNN จะสามารถเรียนรู้แนวโน้มที่เปลี่ยนแปลงนี้ได้แม่นยำมากกว่ากัน

ขั้นตอนที่ 1 ติดตั้งและนำเข้าไลบรารี

Image description

นำเข้าไลบรารีที่จำเป็นสำหรับการจัดการข้อมูล (Pandas, Numpy) กราฟ (Matplotlib) การสร้างโมเดล (TensorFlow, Keras)และการใช้โมเดลพื้นฐานจาก scikit-learn

ขั้นตอนที่ 2 สร้างข้อมูลจำลองแบบ โตช้า-โตเร็ว

Image description

จำลองข้อมูลยอดขายที่โตช้าในช่วงแรก ในวันที่ 1-15 และโตเร็วในช่วงหลังคือวันที่ 16-30 เพื่อทดสอบว่าโมเดลจะจับความเปลี่ยนแปลงนี้ได้ไหม

Image description
ยอดขายจำลองในช่วงวันที่ 1–5

ขั้นตอนที่ 3 แบ่งข้อมูล Training และ Testing

Image description

การแบ่งข้อมูลสำหรับฝึกโมเดลและทดสอบโดยใช้ฟังก์ชัน train_test_split

ขั้นตอนที่ 4 สร้างโมเดล Neural Network

Image description

สร้างโมเดลแบบ Sequential ที่มี 2 ชั้นซ่อน Hidden Layers โดยใช้ฟังก์ชัน ReLU เป็น Activation เพื่อให้โมเดลรู้ความสัมพันธ์ที่ไม่เป็นเชิงเส้นได้

ขั้นตอนที่ 5 คอมไพล์โมเดล

Image description

กำหนดให้ loss function เป็น mean squared error (MSE)ให้optimizer เป็น Adam และ metric ที่ใช้ประเมินผลเป็น mean absolute error (MAE)

ขั้นตอนที่ 6 ฝึกโมเดล

Image description

ฝึกโมเดลด้วยข้อมูล training และใช้ EarlyStopping หยุดการฝึกหาก validation loss ไม่ลดลงต่อเนื่อง 3 รอบ

outputที่ได้

Image description

ขั้นตอนที่ 7 แสดงกราฟเปรียบเทียบ Linear Regression กับ DNN

Image description
กราฟเปรียบเทียบโมเดลทั้งสองแบบ
Image description

  • Actual Sales จุดสีแดง คือ ข้อมูลจริง
  • Linear Regression เส้นประสีน้ำเงิน คือ โมเดลเส้นตรงที่พยายามจับแนวโน้ม
  • DNN Prediction คือ Neural Network

เราสามารถดูความแม่นยำได้ด้วยค่า MSE ซึ่งเป็นค่าที่เอาไว้ดูว่าผลการทำนายของโมเดล ยิ่งค่า MSE ต่ำก็แปลว่าโมเดลทำนายได้แม่นยำมากขึ้น
จากการทดลองครั้งนี้พบว่า Linear Regression ให้ค่า MSE ต่ำกว่า DNN อย่างชัดเจน โดยเฉพาะกับข้อมูลที่มีแนวโน้มเป็นเส้นตรง

ขั้นตอนที่ 8 พยากรณ์ยอดขายในวันที่ 31

Image description

ใช้โมเดล DNN ที่ฝึกเสร็จมาพยากรณ์ยอดขายในวันถัดไปจากข้อมูลที่ไม่มีใน dataset

outputที่ได้

Image description
จากผลการพยากรณ์ยอดขายในวันที่ 31 พบว่า Linear Regression ทำนายได้ 175.94ชิ้น ซึ่งสอดคล้องกับแนวโน้มที่เพิ่มขึ้นของข้อมูล ในขณะที่ DNN ทำนายได้เพียง 19.27ชิ้น แสดงให้เห็นว่า DNN ยังไม่สามารถเข้าใจแนวโน้มการเติบโตแบบพุ่งสูงในช่วงท้ายได้

สรุปเนื้อหา
จากการเปรียบเทียบพบว่า Linear Regression สามารถพยากรณ์แนวโน้มยอดขายขนมปังได้แม่นยำกว่า DNN เพราะโมเดลเส้นตรงสามารถจับภาพรวมของแนวโน้มข้อมูลที่เติบโตแบบค่อยเป็นค่อยไปในช่วงต้น และพุ่งสูงในช่วงท้ายได้ดีกว่า ในขณะที่ DNN ซึ่งฝึกมาน้อยหรือข้อมูลอาจจะน้อยเกินไปสำหรับDNN ทำให้การพยากรณ์ต่ำเกินจริงตลอดช่วง โดยเฉพาะช่วงที่ยอดขายเพิ่มขึ้นรวดเร็วในวันท้ายๆ แสดงให้เห็นว่าโมเดลยังไม่ซับซ้อนพอที่จะทำให้DNN เข้าใจรูปแบบข้อมูลที่มีการเปลี่ยนแปลงเฉียบพลัน
การทดลองครั้งนี้ทำให้เข้าใจว่า เวลาเลือกใช้โมเดล Machine Learning ไม่จำเป็นต้องเลือกแบบที่ซับซ้อนที่สุดเสมอไป เพราะบางครั้งโมเดลง่ายๆ อย่าง Linear Regression ก็อาจให้ผลลัพธ์ที่ดีกว่า ขึ้นอยู่กับว่าโมเดลนั้นเหมาะกับลักษณะของงานและปัญหาของเราไหม