ด้วยการช่วยเราระบุแนวโน้มที่ซ่อนอยู่และคาดการณ์ในอนาคต อนุกรมเวลาสามารถช่วยเราจัดการกับปัญหาต่างๆ เช่น การคาดการณ์ยอดขาย การจัดการสินค้าคงคลัง และการวิเคราะห์งบประมาณ ขณะนี้มีหลายวิธีในการสร้างแบบจำลองและคาดการณ์อนุกรมเวลา และตลอดหลักสูตรของซีรีส์นี้ ฉันจะพยายามพูดถึงวิธีเหล่านี้ให้มากที่สุดเท่าที่จะเป็นไปได้ เป้าหมายคือการพัฒนาความเข้าใจของตัวเองไปพร้อมกันและเข้าใจคณิตศาสตร์พื้นฐานได้ดีขึ้น

เป็นเรื่องปกติที่การรวบรวมข้อมูลในโลกแห่งความเป็นจริงส่วนใหญ่จะมีการสุ่มบางประเภทเป็นอย่างน้อย และเพื่อศึกษาคุณลักษณะพื้นฐาน (ฤดูกาล วัฏจักร ฯลฯ) เราจำเป็นต้องลดผลกระทบของมัน โชคดีที่เทคนิค การปรับให้เรียบ เช่น การหาค่าเฉลี่ย และ การปรับให้เรียบแบบเอ็กซ์โพเนนเชียล ช่วยให้เราสามารถบรรลุเป้าหมายดังกล่าวได้

สมมติว่าเรามีข้อมูลที่ผ่านมาเกี่ยวกับจำนวนสินค้าที่ขายได้บนเว็บไซต์ของเราในแต่ละวัน และเราต้องการใช้ข้อมูลดังกล่าวในการตัดสินใจทางธุรกิจ (ฉันหวังว่าข้อความคลุมเครือนี้จะซ่อนความไม่รู้ของฉันได้ดี)

ค่าเฉลี่ย

วิธีที่ง่ายที่สุดในการทำความเข้าใจข้อมูลนี้คือ ทำให้ราบรื่น เพื่อให้เราสามารถค้นหาจำนวนสินค้าโดยเฉลี่ยที่ขายได้ในแต่ละวัน บางทีเราอาจใช้มันเพื่อเติมเต็มสินค้าคงคลังของเราได้

เราแค่รวมค่าทั้งหมดแล้วหารด้วยจำนวนวัน

items_sold = [7,6,1,8,10,9,8,11]

ค่าเฉลี่ย = ผลรวม (รายการ) / len (รายการ)

ดูเหมือนว่าเราจะขายสินค้าได้ 7.5 รายการทุกวัน และถึงเวลาที่ต้องตัดสินใจโดยอาศัยข้อมูลเป็นครั้งแรกโดยสั่งซื้อสินค้า 750 รายการในอีก 10 วันข้างหน้า

ตอนนี้เรามาดูว่าเราทำได้ดีเพียงใดโดยการประเมินผลลัพธ์ของเราโดยใช้ ค่าคลาดเคลื่อนกำลังสองเฉลี่ย

  • เดลต้าของค่าจริงเทียบกับค่าเฉลี่ย
  • กำลังสองของความแตกต่างนี้
  • ผลรวมของความแตกต่างนี้
  • และสุดท้าย ค่าเฉลี่ยของผลรวมนี้

error = [(จริง — คาดการณ์ไว้)**2 สำหรับจริงใน item_sale]

[0.25, 2.25, 42.25, 0.25, 6.25, 2.25, 0.25, 12.25]

และเมื่อหาค่าเฉลี่ยผลรวมของข้อผิดพลาดเหล่านี้ เราจะได้:

8.25

นั่นคือข้อผิดพลาดของเรา

ตอนนี้เป็นการเริ่มต้นที่ดีแต่มีปัญหาชัดเจนมากกับการใช้ค่าเฉลี่ยเพียงอย่างเดียว สมมติว่ามีคนเห็น Jake Peralta และกัปตัน Holt สั่งซื้อสินค้าจากร้านค้าออนไลน์ของเรา และในเวลาไม่นาน เราก็กลายเป็นสถานที่ที่ฮิปที่สุดในเมือง อย่างไรก็ตาม ยอดขายของเราไม่ได้พุ่งสูงขึ้นแต่ก็เพิ่มขึ้นอย่างต่อเนื่อง

ทันใดนั้น ข้อมูลทางธุรกิจที่หลอกลวงเพียงเคล็ดลับเดียวของเราก็ล้มลง ค่าคลาดเคลื่อนกำลังสองเฉลี่ยของเราเพิ่มขึ้น และเราไม่รู้ว่าเหตุใดสินค้าจึงหมดสต็อก แม้ว่าเราจะสั่งซื้อ 170 ชิ้นภายใน 10 วันข้างหน้าก็ตาม

ปัญหาก็ชัดเจน; เทคนิคการหาค่าเฉลี่ยของเราให้น้ำหนักเท่ากันกับการสังเกตที่ผ่านมาทั้งหมด และดังนั้นจึงไม่ค่อยมีประสิทธิภาพเมื่อต้องรับมือกับแนวโน้ม

ค่าเฉลี่ยเคลื่อนที่เดี่ยว

Single Moving Average เป็นเทคนิคการหาค่าเฉลี่ย — ซึ่งแทนที่จะคำนึงถึงการสังเกตก่อนหน้านี้ทั้งหมด — จะใช้ค่าเฉลี่ยของรายการล่าสุดเท่านั้น หากขนาดของ หน้าต่างที่เคลื่อนไหว ของเราคือ 3 มันจะใช้ค่าเฉลี่ยของ 3 รายการสุดท้าย

ผลลัพธ์ที่เราได้รับน่าพอใจมากขึ้น และ MSE (Mean Squared Error) ของเราตกลงไปที่ 41จาก 139 เป็นไปตามที่คาดหวังเนื่องจากเทคนิคใหม่นี้สามารถลืมยุคก่อนรุ่งโรจน์อันมืดมนของเราได้

การสังเกตอย่างลึกซึ้งในที่นี้คือเหตุใดจึงไม่วางค่าเฉลี่ยของทั้งสามรายการไว้ตรงกลางของชุดค่าเฉลี่ย กล่าวคือ ควรบวกค่าเฉลี่ยแรกกับวันที่ 2 แทนที่จะเป็นวันที่ 3 ที่จริงแล้ว นี่จะเป็นแนวทางที่สมเหตุสมผลกว่าและ เรียกว่า ค่าเฉลี่ยเคลื่อนที่กึ่งกลาง

แต่แล้วเวลาที่ความยาวหน้าต่าง (M) ของเรา เท่ากัน ล่ะ? ตรงกลางของเซตจะเป็น 1.5,2.5,3.5….

วิธีแก้ไขคือใช้ค่าเฉลี่ยเคลื่อนที่กับค่าเฉลี่ยแล้วโดยมีขนาดหน้าต่าง M= 2

น่าเสียดายที่เทคนิคการหาค่าเฉลี่ยเหล่านี้ไม่เหมาะสำหรับการคาดการณ์เมื่อข้อมูลของเราแสดงแนวโน้มที่โดดเด่น ในกรณีนี้ วิธีที่มีประสิทธิภาพมากกว่าคือการใช้ค่าเฉลี่ยเคลื่อนที่สองเท่า นั่นคือรับการเคลื่อนไหวครั้งที่สองจากค่าเฉลี่ยเคลื่อนที่แรกโดยใช้ความยาวหน้าต่างเดียวกัน สิ่งนี้เรียกว่า ค่าเฉลี่ยเคลื่อนที่สองเท่าสำหรับกระบวนการแนวโน้มเชิงเส้น และช่วยให้เราสามารถคาดการณ์ในอนาคตได้

เทคนิคการปรับให้เรียบแบบเอ็กซ์โพเนนเชียล

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

ในส่วนต่อไปนี้ เราจะพูดถึง เดี่ยว, สองเท่า และ การปรับให้เรียบแบบเอ็กซ์โพเนนเชียลแบบสามเท่า

การปรับให้เรียบแบบเอกซ์โพเนนเชียลเดี่ยว

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

คณิตศาสตร์บางส่วน

นี่คือสิ่งที่ สมการพื้นฐานของการปรับให้เรียบแบบเอ็กซ์โปเนนเชียลดูเหมือนโกหก:

`St = a*yt_1 + (1- a)*St_1`

และอัตราที่น้ำหนักของการสังเกตก่อนหน้านี้ลดลงถูกกำหนดโดย ปัจจัยการปรับให้เรียบ(a)ซึ่งสามารถมีค่า ระหว่าง 1 และ 0

สมมติว่า aคือ .7 ซึ่งหมายความว่าค่า ณ เวลา tจะเท่ากับผลรวมของเปอร์เซ็นต์ของค่าจริง (a*yt_1) และค่าที่เรียบ ( (1- a)*St_1) ที่ t - 1

ตอนนี้ ถ้าเราขยาย St_1 เพิ่มเติม เราจะเห็น

St = a yt-1 + (1 — a) [ayt-2 + (1 — a)St-2]

ถ้าเราขยายมันต่อไป เราจะเห็นแบบนี้ว่า t = 4

a*[(1-a)⁰*y3 + (1-a)¹ *y2] + (1-a)³*S2

โดยที่ S2 คือค่าเริ่มต้นที่เราเริ่มต้นด้วย เราจะสังเกตได้ว่าน้ำหนักของตัวอย่างก่อนหน้านี้ลดลงแบบทวีคูณ (1-a)⁰, (1-a)¹, (1-a)²…..

แบบฟอร์มทั่วไปที่เราได้รับคือ:

ตัวอย่าง

สมมติว่าเรารวบรวมค่าต่อไปนี้ในช่วง 10 วัน

6.4, 5.6, 7.8, 8.8, 11, 11.6, 16.7, 15.3, 21.6, 22.4

ใช้ตัวอย่างการปรับให้เรียบแบบเอกซ์โปเนนเชียลขนาดเล็กของเรา

เราได้รับผลลัพธ์ดังต่อไปนี้

แม้ว่าวิธีนี้จะดีกว่าค่าเฉลี่ยที่เท่ากันมาก แต่เราสังเกตได้ว่าวิธีนี้แย่มากในการทำนายค่าในอนาคตในกรณีที่มีแนวโน้ม ดูว่าหลังจากวันที่ 10 กราฟจะราบเรียบอย่างไร

ตอนนี้เพื่อแก้ไขว่าเราอาจต้องอัปเกรดสมการพื้นฐานของเราเพื่อที่จะคำนึงถึงเดลต้าในค่าก่อนหน้าโดยใช้ เทคนิคการปรับให้เรียบแบบเอ็กซ์โปเนนเชียลสองเท่า

เทคนิคการปรับให้เรียบแบบเอ็กซ์โปเนนเชียลสองเท่า

ในเทคนิคนี้ เราใช้ค่าคงที่ γ อีกค่าหนึ่งพร้อมกับค่าคงที่แฟกเตอร์การปรับให้เรียบ α

เทคนิค Single Exponential Smoothing คืออะไร

St = a*yt_1 + (1 — a)*St_1

ตอนนี้กลายเป็น:

St = a*yt_1 + (1 — a)*(St_1 + bt_1)

โดยที่เราเพิ่มแนวโน้มก่อนหน้า — bt_1 เข้ากับค่าที่ปรับให้เรียบของเรา

แต่เราจะค้นหาแนวโน้มในช่วงเวลาหนึ่งได้อย่างไร? แน่นอนว่าจะรวมส่วนต่างระหว่างค่าก่อนหน้าเพื่อดูความแตกต่างโดยเฉลี่ยในอดีตด้วย และเราเห็นสิ่งเดียวกันในสมการแนวโน้ม

b_t = γ*(St - St_1)+(1−γ)*bt_1

St — St_1 : ความแตกต่างระหว่างค่าที่ปรับให้เรียบในปัจจุบันและก่อนหน้า

bt_1 : เทรนด์ที่ t-1

ดูเหมือนว่าสิ่งนี้จะทำงานได้ดีกว่าในตัวอย่างสุดท้ายของเรา อย่างไรก็ตาม ก่อนที่เราจะดำเนินการต่อไป เราจำเป็นต้องค้นหาค่าเริ่มต้นของปัจจัยแนวโน้ม b แม้ว่าจะมีวิธีการที่มีประสิทธิภาพมากมายในการค้นหาจุดเริ่มต้นที่ดีที่สุด แต่เราสามารถใช้ผลต่างแรก หรือค่าเฉลี่ยของผลต่างในอดีตได้

ตัวอย่าง

การใช้เทคนิคนี้กับชุดข้อมูลก่อนหน้าของเราโดยใช้โค้ดต่อไปนี้:

เราได้รับผลลัพธ์ที่ดีกว่ามาก:

และค่าคลาดเคลื่อนกำลังสองเฉลี่ยของเราลดลงเหลือ 3.17จาก 8.88ที่เราได้รับจากการปรับให้เรียบแบบเอกซ์โปเนนเชียลเพียงครั้งเดียว

พยากรณ์

จนถึงตอนนี้เราได้มองหาวิธีที่จะทำให้ข้อมูลของเราราบรื่นขึ้นเพื่อให้ตีความได้ง่ายขึ้น แต่ถ้าเราอยากเห็นอนาคตล่ะ?

สำหรับการปรับให้เรียบแบบเอ็กซ์โพเนนเชียลแบบสองเท่า เราสามารถรวมค่าที่ปรับให้เรียบในปัจจุบันและค่าแนวโน้มเพื่อคาดการณ์ค่าถัดไปได้ โดยทั่วไป คุณสามารถค้นหาการพยากรณ์ได้โดยใช้:

การคาดการณ์ ณ เวลา t+M = Smoothed Value ณ เวลา t + M*Trend Factor ณ เวลา t

ในกรณีของ Single Exponential Smoothing การคาดการณ์ในอนาคตจะเป็นเส้นแนวนอนเนื่องจากจะให้การคาดการณ์ครั้งสุดท้ายสำหรับค่าในอนาคตทั้งหมด ดังที่แสดงไว้ก่อนหน้านี้ หมายความว่าไม่ใช่เทคนิคที่ดีเมื่อมีเทรนด์เข้ามาเกี่ยวข้อง

กราฟต่อไปนี้แสดงการเปรียบเทียบการคาดการณ์ในอนาคตสำหรับทั้งสองเทคนิค

ผู้ชนะค่อนข้างชัดเจนที่นี่

วู้ว!!!!

ตอนนี้ความอิ่มเอิบใจในช่วงแรกสิ้นสุดลงแล้ว เราตระหนักได้ว่าการคาดการณ์ของเราจะเพิ่มขึ้นอย่างมาก จะเกิดอะไรขึ้นถ้าเราไม่เพียงแต่มีเทรนด์เท่านั้น แต่ยังรวมถึงฤดูกาลด้วย

ข้อมูลอ้างอิง



Github Repo: https://github.com/Bazarovay/timeseries