การทำนายอนุกรมเวลาหลายตัวแปรด้วย BQML - KDnuggets

การทำนายอนุกรมเวลาหลายตัวแปรด้วย BQML – KDnuggets

โหนดต้นทาง: 2796796

การทำนายอนุกรมเวลาหลายตัวแปรด้วย BQML
ภาพจาก Pexels
 

หน้าหนาวที่แล้วผมได้นำเสนอเรื่อง 'โมเดลอนุกรมเวลาที่สามารถคาดเดาได้มากขึ้นด้วย BQML'ที่ GDG DevFest ทาชเคนต์ 2022 ที่เมืองทาชเคนต์ เมืองหลวงของอุซเบกิสถาน

ฉันจะแชร์เนื้อหาและโค้ดบางส่วนหลังจาก DevFest ที่ใช้ในการนำเสนอ แต่เวลาผ่านไปแล้ว และฟีเจอร์ใหม่ๆ ได้รับการเผยแพร่ใน BQML ที่ทับซ้อนกับเนื้อหาบางส่วน

ดังนั้น ฉันจะพูดถึงฟีเจอร์ใหม่และบางสิ่งที่ยังคงใช้ได้ในช่วงสั้นๆ แทน

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

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

หากคุณกำลังใช้ Google BigQuery สำหรับการจัดการข้อมูลคุณสามารถใช้ บีคิวเอ็มL (BigQuery ML) เพื่อนำอัลกอริธึมแมชชีนเลิร์นนิงไปใช้กับข้อมูลของคุณด้วยวิธีที่ง่าย สะดวก และรวดเร็ว ผู้คนจำนวนมากใช้ BigQuery เพื่อประมวลผลข้อมูลจำนวนมาก และข้อมูลส่วนใหญ่มักเป็นข้อมูลอนุกรมเวลา และ BQML ยังรองรับโมเดลอนุกรมเวลาอีกด้วย

พื้นฐานของโมเดลอนุกรมเวลาที่รองรับโดย BQML ในปัจจุบันคือ ค่าเฉลี่ยเคลื่อนที่รวมแบบถดถอยอัตโนมัติ (ARIMA) แบบอย่าง. แบบจำลอง ARIMA คาดการณ์โดยใช้เฉพาะข้อมูลอนุกรมเวลาที่มีอยู่ และเป็นที่ทราบกันว่ามีประสิทธิภาพการคาดการณ์ระยะสั้นที่ดี และเนื่องจากแบบจำลองนี้รวม AR และ MA เข้าด้วยกัน จึงเป็นแบบจำลองยอดนิยมที่สามารถครอบคลุมแบบจำลองอนุกรมเวลาได้หลากหลาย

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

 

การทำนายอนุกรมเวลาหลายตัวแปรด้วย BQML
โครงสร้างของ ARIMA_PLUS (จาก คู่มือ BQML)
 

คุณสามารถอ้างถึงสิ่งนี้ หน้า สำหรับข้อมูลเพิ่มเติม

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

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

และในช่วงไม่กี่เดือนที่ผ่านมานี้เอง คุณสมบัติใหม่สำหรับการสร้างฟังก์ชันอนุกรมเวลาหลายตัวแปรพร้อมตัวแปรภายนอก (ARIMA_PLUS_XREG, XREG ด้านล่าง) ได้กลายเป็นคุณสมบัติโดยสิ้นเชิงใน BQML.

คุณสามารถอ่านทั้งหมดเกี่ยวกับเรื่องนี้ โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม(อยู่ในช่วงตัวอย่าง ณ เดือนกรกฎาคม 2023 แต่คาดว่าจะวางจำหน่ายในปลายปีนี้)

ฉันสมัคร บทช่วยสอนอย่างเป็นทางการ เพื่อดูว่ามันเปรียบเทียบกับแบบจำลองอนุกรมเวลาแบบไม่แปรผันแบบดั้งเดิมอย่างไร และเราจะดูว่ามันทำงานอย่างไร

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

# ARIMA_PLUS

# ARIMA_PLUS
CREATE OR REPLACE MODEL test_dt_us.seattle_pm25_plus_model
OPTIONS ( MODEL_TYPE = 'ARIMA_PLUS', time_series_timestamp_col = 'date', time_series_data_col = 'pm25') AS
SELECT date, pm25
FROM test_dt_us.seattle_air_quality_daily
WHERE date BETWEEN DATE('2012-01-01') AND DATE('2020-12-31')
#ARIMA_PLUS_XREG
CREATE OR REPLACE MODEL test_dt_us.seattle_pm25_xreg_model OPTIONS ( MODEL_TYPE = 'ARIMA_PLUS_XREG', time_series_timestamp_col = 'date', time_series_data_col = 'pm25') AS
SELECT date, pm25, temperature, wind_speed
FROM test_dt_us.seattle_air_quality_daily
WHERE date BETWEEN DATE('2012-01-01') AND DATE('2020-12-31')

 

โมเดลที่ใช้ข้อมูลหลายรายการเหล่านี้จะมีลักษณะดังนี้

 

การทำนายอนุกรมเวลาหลายตัวแปรด้วย BQML
โครงสร้าง ARIMA_PLUS_XREG (จาก คู่มือ BQML)
 

มีการเปรียบเทียบสองโมเดลกับ ML.Evaluate

SELECT * FROM ML.EVALUATE ( MODEL test_dt_us.seattle_pm25_plus_model, ( SELECT date, pm25 FROM test_dt_us.seattle_air_quality_daily WHERE date > DATE('2020-12-31') ))
SELECT * FROM ML.EVALUATE ( MODEL test_dt_us.seattle_pm25_xreg_model, ( SELECT date, pm25, temperature, wind_speed FROM test_dt_us.seattle_air_quality_daily WHERE date > DATE('2020-12-31') ), STRUCT( TRUE AS perform_aggregation, 30 AS horizon))

 

ผลลัพธ์อยู่ด้านล่าง

ARIMA_PLUS

 

การทำนายอนุกรมเวลาหลายตัวแปรด้วย BQML
 

ARIMA_PLUS_XREG

 

การทำนายอนุกรมเวลาหลายตัวแปรด้วย BQML
 

คุณจะเห็นว่าไฟล์ โมเดล XREG ล้ำหน้าในด้านการวัดประสิทธิภาพพื้นฐาน เช่น MAE, MSE และ MAPE (แน่นอนว่านี่ไม่ใช่วิธีแก้ปัญหาที่สมบูรณ์แบบ ขึ้นอยู่กับข้อมูลและเราบอกได้เลยว่าเรามีเครื่องมือที่มีประโยชน์อีกอย่างหนึ่ง)

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

ประทับเวลา:

เพิ่มเติมจาก KD นักเก็ต