จากการตีความคำถามของฉันคำถามพื้นฐานที่คุณถามคือคุณสามารถจำลองเวลาเป็นเส้นโค้งหรือไม่
คำถามแรกที่ฉันจะพยายามตอบคือคุณสามารถใช้ splines เพื่อคาดการณ์ข้อมูลของคุณได้หรือไม่ คำตอบสั้น ๆ ก็คือมันขึ้นอยู่กับว่า แต่ส่วนใหญ่แล้วเส้นโค้งนั้นไม่เหมาะสำหรับการคาดการณ์ Splines นั้นเป็นวิธีการแก้ไขที่สำคัญโดยแบ่งพาร์ติชั่นพื้นที่ที่ข้อมูลของคุณอยู่และแต่ละพาร์ติชั่นจะพอดีกับ regressor อย่างง่าย ลองมาดูวิธีการของ MARS กัน วิธีการ MARS ถูกกำหนดให้เป็น
โดยที่เป็นค่าคงที่ที่คำว่า i ในรูปแบบ MARS ,เป็นฟังก์ชันฐานที่คำ i'th และ
ฉ^( x ) = ∑i = 1nαผมBผม( x[ i ])
αผมBผมx[ i ]แสดงให้เห็นถึงคุณสมบัติที่เลือกจากเวกเตอร์คุณสมบัติของคุณในระยะที่ฉัน ฟังก์ชันพื้นฐานอาจเป็นค่าคงที่หรืออาจเป็นฟังก์ชันบานพับ (rectifier) ฟังก์ชั่นบานพับเป็นเพียง
สิ่งที่ฟังก์ชั่นบานพับบังคับให้แบบจำลองคือการสร้างฟังก์ชั่นเชิงเส้นเป็น
ชิ้น ๆ (เป็นที่น่าสนใจที่จะทราบว่าเครือข่ายประสาทที่มี ถูกมองว่าเป็นรุ่น superset ของโมเดล MARS)
m a x ( 0 , x[ i ]+ cผม)
ดังนั้นเพื่อกลับไปที่คำถามที่ว่าทำไม splines จึงไม่ค่อยดีนักสำหรับการคาดการณ์คือเมื่อรู้ว่าจุดที่คุณต้องการใช้การคาดการณ์เริ่มที่จะโกหกผ่านขอบเขตของการแก้ไขเพียงส่วนเล็ก ๆ ของแบบจำลองของคุณจะถูก "เปิดใช้งาน" หรือส่วนใหญ่ของมันจะถูก "เปิดใช้งาน" และดังนั้นพลังของแบบจำลองจะหายไป (เนื่องจากการขาดการเปลี่ยนแปลง) เพื่อให้ได้นิด ๆ หน่อย ๆ สัญชาตญาณเพิ่มเติมเกี่ยวกับเรื่องนี้ให้เราหลอกว่าเรากำลังพยายามที่จะพอดีกับรูปแบบ MARS พื้นที่คุณลักษณะนอนอยู่ใน{R} เมื่อได้ตัวเลขหนึ่งมาเราจึงพยายามทำนายตัวเลขอีกตัว รูปแบบ MARS เกิดขึ้นพร้อมกับฟังก์ชั่นที่มีลักษณะดังนี้:
หากการคาดการณ์เกิดขึ้นเกินจำนวนR
ฉ^( x ) = 5 + m a x ( 0 , x - 5 ) + 2 m a x ( 0 , x - 10 )
10ตอนนี้ฟังก์ชั่นนี้จะกลายเป็น
แบบจำลอง MARS ที่เราเคยทำก่อนหน้านี้จะลดลงเป็นฟังก์ชันเชิงเส้นเดียวดังนั้นพลังของแบบจำลอง MARS จะหายไป (นี่คือ กรณีของคำส่วนใหญ่ "เปิดใช้งาน") สิ่งเดียวที่จะเกิดขึ้นสำหรับการคาดการณ์ก่อนจำนวน5ผลลัพธ์ของโมเดล MARS จะเป็นค่าคงที่ นี่คือเหตุผลที่เวลาส่วนใหญ่เส้นโค้งไม่เหมาะสำหรับการคาดการณ์ สิ่งนี้ยังอธิบายถึงปัญหาที่คุณกล่าวถึงในความคิดเห็นของโพสต์ของคุณเกี่ยวกับการคาดการณ์ที่คาดการณ์ว่า "ไม่ดีสำหรับค่าใหม่" และพวกเขามีแนวโน้มที่จะ "ดำเนินการต่อในทิศทางเดียวกัน" สำหรับอนุกรมเวลาต่างๆ
ฉ^( x ) = 10 + 2 ( x - 10 ) = 2 x - 10
5
ตอนนี้ให้กลับไปซีรีส์เวลา อนุกรมเวลาเป็นกรณีพิเศษในการเรียนรู้ของเครื่อง พวกเขามีแนวโน้มที่จะมีโครงสร้างเล็กน้อยไม่ว่าจะเป็นบางส่วนในความแปรปรวนหรือหนึ่งในโครงสร้างย่อยหลายประเภทและโครงสร้างนี้สามารถใช้ประโยชน์ได้ แต่จำเป็นต้องใช้อัลกอริทึมพิเศษที่สามารถใช้ประโยชน์จากโครงสร้างนี้ได้โชคไม่ดีที่ splines ไม่ทำสิ่งนี้
มีสองสามสิ่งที่ฉันอยากจะแนะนำให้คุณลอง คนแรกจะเป็นเครือข่ายที่ผิดปกติ หากอนุกรมเวลาของคุณไม่ยาว (และไม่มีการขึ้นต่อกันในระยะยาว) คุณควรจะสามารถหนีไปได้ด้วยการใช้เครือข่ายวานิลลาซ้ำ ๆ หากคุณต้องการที่จะเข้าใจสิ่งที่เกิดขึ้นคุณสามารถใช้หน่วยเชิงเส้นที่แก้ไขด้วยอคติเป็นฟังก์ชั่นการเปิดใช้งานและนั่นจะเทียบเท่ากับการทำแบบจำลอง MARS บนเซตย่อยของไทม์เซ็ตและ "หน่วยความจำ" ที่เครือข่ายประสาทกำเริบ ถือ มันยากที่จะตีความว่าหน่วยความจำได้รับการจัดการโดยเน็ต แต่คุณควรเข้าใจว่าการจัดการพื้นที่ย่อยนั้นเกี่ยวข้องกับฟังก์ชั่นเชิงเส้นที่ถูกสร้างขึ้น นอกจากนี้หากคุณมีคุณสมบัติคงที่ที่ไม่ได้เป็นของอนุกรมเวลามันค่อนข้างง่ายที่จะยังคงใช้พวกเขาในเน็ต
หากอนุกรมเวลาที่คุณมีนั้นยาวมากและอาจมีการพึ่งพาระยะยาวฉันแนะนำให้ใช้หนึ่งในเครือข่ายที่เกิดขึ้นซ้ำ gated เช่น GRU หรือ LSTM
ในด้านคลาสสิกของการจำแนกอนุกรมเวลาคุณสามารถใช้โมเดลมาร์คอฟที่ซ่อนอยู่ได้ ฉันจะไม่เข้าไปเพิ่มเติมในสิ่งเหล่านี้เพราะฉันไม่คุ้นเคยกับพวกเขา
โดยสรุปฉันจะไม่แนะนำให้ใช้ Splines ด้วยเหตุผลสองประการ ข้อแรกมันไม่สามารถจัดการกับปัญหาการคาดการณ์ที่ซับซ้อนซึ่งดูเหมือนจะเป็นปัญหาที่คุณกำลังอธิบาย และสองเส้นโค้งไม่ใช้โครงสร้างย่อยของอนุกรมเวลาซึ่งมีประสิทธิภาพมากในการจำแนกอนุกรมเวลา
หวังว่านี่จะช่วยได้