การพยากรณ์ยอดขาย โดยใช้การเปรียบเทียบโมเดล Linear Regression และ DNN (TensorFlow)

เราต้องการเปรียบเทียบยอดขายของขนมปังในแต่ละวัน โดยเราจะสร้างโมเดล 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 ติดตั้งและนำเข้าไลบรารี numpy สร้างข้อมูลตัวเลขของวัน pandas ใช้จัดเก็บข้อมูลให้อยู่ในรูปแบบตาราง matplotlib.pyplot ใช้วาดกราฟแสดงผล tensorflow ใช้สร้างและฝึกโมเดล DNN ขั้นตอนที่ 2 สร้างข้อมูลจำลองยอดขายขนมปัง เราสร้างข้อมูลจำลองขึ้นมาสำหรับยอดขายขนมปังในแต่ละวัน และกำหนดว่ายอดขายให้มีแนวโน้มเพิ่มขึ้นเรื่อยๆ ตลอด 30 วัน ขั้นตอนที่ 3 แบ่งข้อมูลเป็น Training และ Testing ใช้ train_test_split แบ่งข้อมูลเพื่อฝึกและทดสอบโมเดล ขั้นตอนที่ 4 สร้างโมเดล Neural Network เราใช้ Keras สร้างโมเดล DNN แบบ Sequential ขั้นตอนที่ 5 คอมไพล์โมเดล กำหนด loss function, optimizer และ metric ที่ใช้วัดผลการฝึกของโมเดล ขั้นตอนที่ 6 ฝึกโมเดล เราฝึกโมเดลโดยใช้ข้อมูลที่แบ่งไว้ พร้อมใช้ EarlyStopping เพื่อหยุดฝึกอัตโนมัติหาก validation loss ไม่ดีขึ้นเพื่อลดการ overfitting outputที่ได้ ขั้นตอนที่ 7: แสดงกราฟเปรียบเทียบ Linear Regression กับ DNN วาดกราฟเปรียบเทียบโมเดลทั้งสองแบบ จุดสีแดง คือ ยอดขายจริง เส้นประสีน้ำเงิน คือ Linear Regression พยากรณ์ยอดขายแบบเส้นตรง เส้นประสีเขียว คือ DNN Prediction จากโมเดล Neural Network ตารางเปรียบเทียบค่าจริง (Actual Sales) กับค่าที่โมเดล Linear Regression และ DNN 8.พยากรณ์ยอดขายในวันที่ 31 outputที่ได้ จากผลการพยากรณ์ยอดขายในวันที่ 31 พบว่า Linear Regression ทำนายได้ใกล้เคียงกับแนวโน้มยอดขายที่เพิ่มขึ้นมากกว่า โดยให้ค่าประมาณ 112.97 ชิ้น แต่ DNN ทำนายเพียง 34.47 ชิ้น ซึ่งต่ำกว่าความเป็นจริง ต่อไปเราจะสร้างตัวอย่างข้อมูลใหม่ที่แตกต่างจากเดิม ยอดขายเติบโตช้าในช่วงต้น (วัน 1–15) และเพิ่มขึ้นอย่างรวดเร็วในช่วงหลัง (วัน 16–30) เพื่อทดสอบว่า Linear Regression หรือ TensorFlow DNN จะสามารถเรียนรู้แนวโน้มที่เปลี่ยนแปลงนี้ได้แม่นยำมากกว่ากัน ขั้นตอนที่ 1 ติดตั้งและนำเข้าไลบรารี นำเข้าไลบรารีที่จำเป็นสำหรับการจัดการข้อมูล (Pandas, Numpy), การวาดกราฟ (Matplotlib), การสร้างโมเดล (TensorFlow, Keras)และการใช้โมเดลพื้นฐานจาก scikit-learn ขั้นตอนที่ 2 สร้างข้อมูลจำลองแบบ โตช้า-โตเร็ว จำลองข้อมูลยอดขายที่โตช้าในช่วงแรก ในวันที่ 1-15 และโตเร็วในช่วงหลังวันที่ 16-30 เพื่อทดสอบว่าโมเดลจะจับความเปลี่ยนแปลงนี้ได้ไหม ยอดขายจำลองในช่วงวันแรกๆ ในช่วงวันที่ 1–5 ขั้นตอนที่ 3 แบ่งข้อมูล Training และ Testing แบ่งข้อมูลเป็นส่วนที่ใช้สำหรับฝึกโมเดลและทดสอบด้วยฟังก์ชัน train_test_split ขั้นตอนที่ 4 สร้างโมเดล Neural Network สร้างโมเดล Sequential ที่มี 2 ชั้น ใช้ activation function เป็น ReLU เพื่อช่วยให้โมเดลเรียนรู้ข้อมูลเชิงเส้นของข้อมูลได้ ขั้นตอนที่ 5: คอมไพล์โมเดล กำหนด loss function เป็น mean squared error (MSE)ให้optimizer เป็น Adam และ metric ที่ใช้ประเมินผลเป็น mean absolute error (MAE) ขั้นตอนที่ 6: ฝึกโมเดล ฝึกโมเดลด้วยข้อมูล training และใช้ EarlyStopping หยุดการฝึกหาก validation loss ไม่ลดลงต่อเนื่อง 3 รอบ outputที่ได้ ขั้นตอนที่ 7: แสดงกราฟเปรียบเทียบ Linear Regression กับ DNN Actual Sales จุดสีแดง คือ ข้อมูลจริงจากชุดทดสอบ Linear Regression เส้นประสีน้ำเงิน คือ โมเดลเส้นตรงที่พยายามจับแนวโน้ม DNN Prediction คือ ผลจากโมเดล Neural Network เราสามารถดูความแม่นยำได้ด้วยค่า MSE ซึ่งเป็นค่าที่เอาไว้ดูว่าผลการทำนายของโมเดล ยิ่งค่า MSE ต่ำก็แปลว่าโมเดลทำนายได้แม่นยำมากขึ้น จากการทดลองครั้งนี้พบว่า Linear Regression ให้ค่า MSE ต่ำกว่า DNN อย่างชัดเจน โดยเฉพาะกับข้อมูลที่มีแนวโน้มเป็นเส้นตรง 8.พยากรณ์ยอดขายในวันที่ 31 ใช้โมเดล DNN ที่ฝึกเสร็จมาพยากรณ์ยอดขายในวันถัดไปจากข้อมูลที่ไม่มีใน dataset outputที่ได้ จากผลการพยากรณ์ยอดขายในวันที่ 31 พบว่า Linear Regression ทำนายได้ 175.94ชิ้น ซึ่งสอดคล้องกับแนวโน้มที่เพิ่มขึ้นของข้อมูล ในขณะที่ DNN ทำนายได้เพียง 19.27ชิ้น แสดงให้เห็นว่า DNN ยังไม่สามารถเข้าใจแนวโน้มการเติบโตแบบพุ่งสูงในช่วงท้ายได้ สรุปเนื้อหา จากผลการเปรียบเทียบพบว่า Linear Regression สามารถพยากรณ์แนวโน้มยอดขายขนมปังได้แม่นยำกว่า DNN เนื่องจากโมเดลเส้นตรงสามารถจับภาพรวมของแนวโน้มข้อมูลที่เติบโตแบบค่อยเป็นค่อยไปในช่วงต้น และพุ่งสูงในช่วงท้ายได้ดีกว่า แม้จะไม่สามารถเรียนรู้ลักษณะโค้งของข้อมูลได้อย่างละเอียด ขณะที่ DNN ซึ่งออกแบบด้วยโครงสร้างแบบง่ายและฝึกเพียงไม่กี่ epoch กลับพยากรณ์ต่ำเกินจริงตลอดช่วง โดยเฉพาะช่วงที่ยอดขายเพิ่มขึ้นรวดเร็วในวันท้ายๆ ซึ่งแสดงให้เห็นว่าโมเดลยังไม่ซับซ้อนหรือฝึกมาเพียงพอที่จะเข้าใจรูปแบบข้อมูลที่มีการเปลี่ยนแปลงเฉียบพลัน การทดลองนี้ทำให้เราเข้าใจว่า เวลาเลือกใช้โมเดล Machine Learning ไม่จำเป็นต้องเลือกแบบที่ซับซ้อนที่สุดเสมอไป เพราะบางครั้งโมเดลง่ายๆ อย่าง Linear Regression ก็อาจให้ผลลัพธ์ที่ดีกว่า ขึ้นอยู่กับว่าโมเดลนั้นเหมาะกับลักษณะของข้อมูลและปัญหาที่เราต้องการแก้แค่ไหน

Apr 11, 2025 - 00:19
 0
การพยากรณ์ยอดขาย โดยใช้การเปรียบเทียบโมเดล Linear Regression และ DNN (TensorFlow)

เราต้องการเปรียบเทียบยอดขายของขนมปังในแต่ละวัน โดยเราจะสร้างโมเดล 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 ชั้น ใช้ activation function เป็น ReLU เพื่อช่วยให้โมเดลเรียนรู้ข้อมูลเชิงเส้นของข้อมูลได้

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