# บทนำสู่การพยากรณ์ข้อมูลอนุกรมเวลา ![สรุปข้อมูลอนุกรมเวลาในรูปแบบสเก็ตโน้ต](../../../../sketchnotes/ml-timeseries.png) > สเก็ตโน้ตโดย [Tomomi Imura](https://www.twitter.com/girlie_mac) ในบทเรียนนี้และบทเรียนถัดไป คุณจะได้เรียนรู้เกี่ยวกับการพยากรณ์ข้อมูลอนุกรมเวลา ซึ่งเป็นส่วนที่น่าสนใจและมีคุณค่าของเครื่องมือในคลังของนักวิทยาศาสตร์ ML แม้ว่าจะไม่เป็นที่รู้จักเท่าหัวข้ออื่น ๆ การพยากรณ์ข้อมูลอนุกรมเวลาเปรียบเสมือน 'ลูกแก้ววิเศษ': โดยอ้างอิงจากข้อมูลในอดีต เช่น ราคา คุณสามารถคาดการณ์มูลค่าในอนาคตได้ [![บทนำสู่การพยากรณ์ข้อมูลอนุกรมเวลา](https://img.youtube.com/vi/cBojo1hsHiI/0.jpg)](https://youtu.be/cBojo1hsHiI "บทนำสู่การพยากรณ์ข้อมูลอนุกรมเวลา") > 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอเกี่ยวกับการพยากรณ์ข้อมูลอนุกรมเวลา ## [แบบทดสอบก่อนเรียน](https://ff-quizzes.netlify.app/en/ml/) นี่เป็นสาขาที่มีประโยชน์และน่าสนใจซึ่งมีคุณค่าต่อธุรกิจ เนื่องจากสามารถนำไปใช้แก้ปัญหาเกี่ยวกับการตั้งราคา การจัดการสินค้าคงคลัง และปัญหาในห่วงโซ่อุปทาน แม้ว่าจะมีการนำเทคนิคการเรียนรู้เชิงลึกมาใช้เพื่อให้ได้ข้อมูลเชิงลึกมากขึ้นในการพยากรณ์ประสิทธิภาพในอนาคต แต่การพยากรณ์ข้อมูลอนุกรมเวลายังคงเป็นสาขาที่ได้รับอิทธิพลอย่างมากจากเทคนิค ML แบบคลาสสิก > หลักสูตรเกี่ยวกับข้อมูลอนุกรมเวลาที่มีประโยชน์จาก Penn State สามารถดูได้ [ที่นี่](https://online.stat.psu.edu/stat510/lesson/1) ## บทนำ สมมติว่าคุณดูแลระบบมิเตอร์จอดรถอัจฉริยะที่ให้ข้อมูลเกี่ยวกับความถี่และระยะเวลาการใช้งานในช่วงเวลาต่าง ๆ > จะเป็นอย่างไรถ้าคุณสามารถคาดการณ์มูลค่าในอนาคตของมิเตอร์ตามกฎของอุปสงค์และอุปทาน โดยอ้างอิงจากประสิทธิภาพในอดีต? การคาดการณ์ช่วงเวลาที่เหมาะสมในการดำเนินการเพื่อให้บรรลุเป้าหมายเป็นความท้าทายที่สามารถแก้ไขได้ด้วยการพยากรณ์ข้อมูลอนุกรมเวลา แม้ว่าการคิดค่าบริการเพิ่มขึ้นในช่วงเวลาที่มีความต้องการสูงอาจไม่ทำให้ผู้คนพอใจ แต่ก็เป็นวิธีที่แน่นอนในการสร้างรายได้เพื่อทำความสะอาดถนน! มาสำรวจประเภทของอัลกอริทึมข้อมูลอนุกรมเวลาและเริ่มต้นสร้างโน้ตบุ๊กเพื่อทำความสะอาดและเตรียมข้อมูลกัน ข้อมูลที่คุณจะวิเคราะห์นำมาจากการแข่งขันการพยากรณ์ GEFCom2014 ซึ่งประกอบด้วยข้อมูลการใช้ไฟฟ้ารายชั่วโมงและอุณหภูมิระหว่างปี 2012 ถึง 2014 โดยอ้างอิงจากรูปแบบในอดีตของการใช้ไฟฟ้าและอุณหภูมิ คุณสามารถคาดการณ์ค่าการใช้ไฟฟ้าในอนาคตได้ ในตัวอย่างนี้ คุณจะได้เรียนรู้วิธีการพยากรณ์ล่วงหน้า 1 ขั้นตอน โดยใช้ข้อมูลการใช้ไฟฟ้าในอดีตเท่านั้น อย่างไรก็ตาม ก่อนเริ่มต้น จะเป็นประโยชน์ที่จะเข้าใจสิ่งที่เกิดขึ้นเบื้องหลัง ## คำจำกัดความบางประการ เมื่อพบคำว่า 'ข้อมูลอนุกรมเวลา' คุณจำเป็นต้องเข้าใจการใช้งานในบริบทต่าง ๆ 🎓 **ข้อมูลอนุกรมเวลา** ในทางคณิตศาสตร์ "ข้อมูลอนุกรมเวลา คือชุดของจุดข้อมูลที่จัดเรียงตามลำดับเวลา โดยทั่วไปข้อมูลอนุกรมเวลาคือชุดข้อมูลที่เก็บรวบรวมในช่วงเวลาที่มีระยะห่างเท่ากัน" ตัวอย่างของข้อมูลอนุกรมเวลาคือค่าปิดตลาดรายวันของ [Dow Jones Industrial Average](https://wikipedia.org/wiki/Time_series) การใช้กราฟข้อมูลอนุกรมเวลาและการสร้างแบบจำลองทางสถิติมักพบในงานประมวลผลสัญญาณ การพยากรณ์อากาศ การคาดการณ์แผ่นดินไหว และสาขาอื่น ๆ ที่เหตุการณ์เกิดขึ้นและจุดข้อมูลสามารถวางกราฟตามเวลาได้ 🎓 **การวิเคราะห์ข้อมูลอนุกรมเวลา** การวิเคราะห์ข้อมูลอนุกรมเวลา คือการวิเคราะห์ข้อมูลอนุกรมเวลาที่กล่าวถึงข้างต้น ข้อมูลอนุกรมเวลาอาจมีรูปแบบที่แตกต่างกัน รวมถึง 'ข้อมูลอนุกรมเวลาที่ถูกขัดจังหวะ' ซึ่งตรวจจับรูปแบบในวิวัฒนาการของข้อมูลอนุกรมเวลาก่อนและหลังเหตุการณ์ที่ขัดจังหวะ ประเภทของการวิเคราะห์ที่จำเป็นสำหรับข้อมูลอนุกรมเวลาขึ้นอยู่กับลักษณะของข้อมูล ข้อมูลอนุกรมเวลาเองอาจอยู่ในรูปแบบของชุดตัวเลขหรืออักขระ การวิเคราะห์ที่ดำเนินการใช้วิธีการหลากหลาย รวมถึงการวิเคราะห์ในโดเมนความถี่และโดเมนเวลา แบบเชิงเส้นและไม่เชิงเส้น และอื่น ๆ [เรียนรู้เพิ่มเติม](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm) เกี่ยวกับวิธีการวิเคราะห์ข้อมูลประเภทนี้ 🎓 **การพยากรณ์ข้อมูลอนุกรมเวลา** การพยากรณ์ข้อมูลอนุกรมเวลา คือการใช้แบบจำลองเพื่อคาดการณ์ค่าที่จะเกิดขึ้นในอนาคต โดยอ้างอิงจากรูปแบบที่แสดงโดยข้อมูลที่รวบรวมไว้ในอดีต แม้ว่าจะสามารถใช้แบบจำลองการถดถอยเพื่อสำรวจข้อมูลอนุกรมเวลา โดยใช้ดัชนีเวลาเป็นตัวแปร x บนกราฟ แต่ข้อมูลดังกล่าวเหมาะสมที่สุดที่จะวิเคราะห์โดยใช้แบบจำลองเฉพาะประเภท ข้อมูลอนุกรมเวลาเป็นรายการของการสังเกตที่จัดเรียงตามลำดับ ซึ่งแตกต่างจากข้อมูลที่สามารถวิเคราะห์ได้ด้วยการถดถอยเชิงเส้น แบบจำลองที่พบมากที่สุดคือ ARIMA ซึ่งเป็นคำย่อของ "Autoregressive Integrated Moving Average" [แบบจำลอง ARIMA](https://online.stat.psu.edu/stat510/lesson/1/1.1) "เชื่อมโยงค่าปัจจุบันของชุดข้อมูลกับค่าที่ผ่านมาและข้อผิดพลาดในการพยากรณ์ที่ผ่านมา" แบบจำลองเหล่านี้เหมาะสมที่สุดสำหรับการวิเคราะห์ข้อมูลในโดเมนเวลา ซึ่งข้อมูลถูกจัดเรียงตามเวลา > มีหลายประเภทของแบบจำลอง ARIMA ซึ่งคุณสามารถเรียนรู้เพิ่มเติม [ที่นี่](https://people.duke.edu/~rnau/411arim.htm) และคุณจะได้สัมผัสในบทเรียนถัดไป ในบทเรียนถัดไป คุณจะสร้างแบบจำลอง ARIMA โดยใช้ [ข้อมูลอนุกรมเวลาแบบตัวแปรเดียว](https://itl.nist.gov/div898/handbook/pmc/section4/pmc44.htm) ซึ่งเน้นที่ตัวแปรเดียวที่เปลี่ยนแปลงค่าตามเวลา ตัวอย่างของข้อมูลประเภทนี้คือ [ชุดข้อมูลนี้](https://itl.nist.gov/div898/handbook/pmc/section4/pmc4411.htm) ที่บันทึกความเข้มข้นของ CO2 รายเดือนที่หอดูดาว Mauna Loa: | CO2 | YearMonth | Year | Month | | :----: | :-------: | :---: | :---: | | 330.62 | 1975.04 | 1975 | 1 | | 331.40 | 1975.13 | 1975 | 2 | | 331.87 | 1975.21 | 1975 | 3 | | 333.18 | 1975.29 | 1975 | 4 | | 333.92 | 1975.38 | 1975 | 5 | | 333.43 | 1975.46 | 1975 | 6 | | 331.85 | 1975.54 | 1975 | 7 | | 330.01 | 1975.63 | 1975 | 8 | | 328.51 | 1975.71 | 1975 | 9 | | 328.41 | 1975.79 | 1975 | 10 | | 329.25 | 1975.88 | 1975 | 11 | | 330.97 | 1975.96 | 1975 | 12 | ✅ ระบุตัวแปรที่เปลี่ยนแปลงตามเวลาในชุดข้อมูลนี้ ## ลักษณะของข้อมูลอนุกรมเวลาที่ควรพิจารณา เมื่อดูข้อมูลอนุกรมเวลา คุณอาจสังเกตเห็นว่ามันมี [ลักษณะบางประการ](https://online.stat.psu.edu/stat510/lesson/1/1.1) ที่คุณต้องคำนึงถึงและลดผลกระทบเพื่อทำความเข้าใจรูปแบบของมันได้ดีขึ้น หากคุณพิจารณาข้อมูลอนุกรมเวลาเป็น 'สัญญาณ' ที่คุณต้องการวิเคราะห์ ลักษณะเหล่านี้สามารถถือเป็น 'เสียงรบกวน' คุณมักจะต้องลด 'เสียงรบกวน' นี้โดยใช้เทคนิคทางสถิติเพื่อชดเชยลักษณะบางประการเหล่านี้ นี่คือแนวคิดบางประการที่คุณควรรู้เพื่อทำงานกับข้อมูลอนุกรมเวลา: 🎓 **แนวโน้ม** แนวโน้มหมายถึงการเพิ่มขึ้นและลดลงที่สามารถวัดได้ตามเวลา [อ่านเพิ่มเติม](https://machinelearningmastery.com/time-series-trends-in-python) ในบริบทของข้อมูลอนุกรมเวลาเกี่ยวกับวิธีการใช้และหากจำเป็นต้องลบแนวโน้มออกจากข้อมูลอนุกรมเวลา 🎓 **[ฤดูกาล](https://machinelearningmastery.com/time-series-seasonality-with-python/)** ฤดูกาลหมายถึงความผันผวนที่เกิดขึ้นเป็นระยะ เช่น ช่วงเทศกาลที่อาจส่งผลต่อยอดขาย [ดูเพิ่มเติม](https://itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm) เกี่ยวกับวิธีการแสดงฤดูกาลในข้อมูลด้วยกราฟประเภทต่าง ๆ 🎓 **ค่าผิดปกติ** ค่าผิดปกติคือค่าที่อยู่ห่างจากความแปรปรวนของข้อมูลมาตรฐาน 🎓 **วัฏจักรระยะยาว** นอกเหนือจากฤดูกาล ข้อมูลอาจแสดงวัฏจักรระยะยาว เช่น ภาวะเศรษฐกิจตกต่ำที่กินเวลานานกว่าหนึ่งปี 🎓 **ความแปรปรวนคงที่** ในช่วงเวลา ข้อมูลบางอย่างแสดงความผันผวนคงที่ เช่น การใช้พลังงานในช่วงกลางวันและกลางคืน 🎓 **การเปลี่ยนแปลงอย่างฉับพลัน** ข้อมูลอาจแสดงการเปลี่ยนแปลงอย่างฉับพลันที่อาจต้องการการวิเคราะห์เพิ่มเติม เช่น การปิดกิจการอย่างฉับพลันเนื่องจาก COVID ซึ่งทำให้ข้อมูลเปลี่ยนแปลง ✅ นี่คือตัวอย่างกราฟข้อมูลอนุกรมเวลา [กราฟนี้](https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python) แสดงการใช้เงินในเกมรายวันในช่วงหลายปี คุณสามารถระบุลักษณะใด ๆ ที่กล่าวถึงข้างต้นในข้อมูลนี้ได้หรือไม่? ![การใช้เงินในเกม](../../../../7-TimeSeries/1-Introduction/images/currency.png) ## แบบฝึกหัด - เริ่มต้นกับข้อมูลการใช้พลังงาน มาเริ่มต้นสร้างแบบจำลองข้อมูลอนุกรมเวลาเพื่อคาดการณ์การใช้พลังงานในอนาคตโดยอ้างอิงจากการใช้ในอดีตกัน > ข้อมูลในตัวอย่างนี้นำมาจากการแข่งขันการพยากรณ์ GEFCom2014 ซึ่งประกอบด้วยข้อมูลการใช้ไฟฟ้ารายชั่วโมงและอุณหภูมิระหว่างปี 2012 ถึง 2014 > > Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli และ Rob J. Hyndman, "การพยากรณ์พลังงานเชิงความน่าจะเป็น: การแข่งขันการพยากรณ์พลังงานระดับโลก 2014 และอื่น ๆ", International Journal of Forecasting, vol.32, no.3, pp 896-913, กรกฎาคม-กันยายน, 2016. 1. ในโฟลเดอร์ `working` ของบทเรียนนี้ เปิดไฟล์ _notebook.ipynb_ เริ่มต้นโดยเพิ่มไลบรารีที่ช่วยให้คุณโหลดและแสดงผลข้อมูล ```python import os import matplotlib.pyplot as plt from common.utils import load_data %matplotlib inline ``` หมายเหตุ คุณกำลังใช้ไฟล์จากโฟลเดอร์ `common` ที่รวมอยู่ซึ่งตั้งค่าสภาพแวดล้อมของคุณและจัดการการดาวน์โหลดข้อมูล 2. จากนั้น ตรวจสอบข้อมูลในรูปแบบ dataframe โดยเรียกใช้ `load_data()` และ `head()`: ```python data_dir = './data' energy = load_data(data_dir)[['load']] energy.head() ``` คุณจะเห็นว่ามีสองคอลัมน์ที่แสดงวันที่และการใช้พลังงาน: | | load | | :-----------------: | :----: | | 2012-01-01 00:00:00 | 2698.0 | | 2012-01-01 01:00:00 | 2558.0 | | 2012-01-01 02:00:00 | 2444.0 | | 2012-01-01 03:00:00 | 2402.0 | | 2012-01-01 04:00:00 | 2403.0 | 3. ตอนนี้ ลองสร้างกราฟข้อมูลโดยเรียกใช้ `plot()`: ```python energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) plt.xlabel('timestamp', fontsize=12) plt.ylabel('load', fontsize=12) plt.show() ``` ![กราฟพลังงาน](../../../../7-TimeSeries/1-Introduction/images/energy-plot.png) 4. จากนั้น ลองสร้างกราฟสำหรับสัปดาห์แรกของเดือนกรกฎาคม 2014 โดยระบุช่วงเวลาในรูปแบบ `[จากวันที่]: [ถึงวันที่]`: ```python energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) plt.xlabel('timestamp', fontsize=12) plt.ylabel('load', fontsize=12) plt.show() ``` ![กรกฎาคม](../../../../7-TimeSeries/1-Introduction/images/july-2014.png) กราฟที่สวยงาม! ลองดูกราฟเหล่านี้และดูว่าคุณสามารถระบุลักษณะใด ๆ ที่กล่าวถึงข้างต้นได้หรือไม่ เราสามารถสรุปอะไรได้จากการแสดงผลข้อมูลนี้? ในบทเรียนถัดไป คุณจะสร้างแบบจำลอง ARIMA เพื่อสร้างการพยากรณ์ --- ## 🚀ความท้าทาย ลองทำรายการอุตสาหกรรมและสาขาการศึกษาทั้งหมดที่คุณคิดว่าสามารถได้รับประโยชน์จากการพยากรณ์ข้อมูลอนุกรมเวลา คุณสามารถคิดถึงการประยุกต์ใช้เทคนิคเหล่านี้ในศิลปะ เศรษฐมิติ นิเวศวิทยา การค้าปลีก อุตสาหกรรม การเงิน หรือที่อื่น ๆ ได้หรือไม่? ## [แบบทดสอบหลังเรียน](https://ff-quizzes.netlify.app/en/ml/) ## ทบทวนและศึกษาด้วยตนเอง แม้ว่าเราจะไม่ได้กล่าวถึงในที่นี้ แต่บางครั้งเครือข่ายประสาทเทียมถูกนำมาใช้เพื่อเพิ่มประสิทธิภาพวิธีการคลาสสิกของการพยากรณ์ข้อมูลอนุกรมเวลา อ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ [ในบทความนี้](https://medium.com/microsoftazure/neural-networks-for-forecasting-financial-and-economic-time-series-6aca370ff412) ## งานที่ได้รับมอบหมาย [ลองแสดงผลข้อมูลอนุกรมเวลาเพิ่มเติม](assignment.md) --- **ข้อจำกัดความรับผิดชอบ**: เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่แม่นยำ เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ แนะนำให้ใช้บริการแปลภาษาจากผู้เชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้