การคาดการณ์ชุดเวลาหลายมิติและหลายตัวแปร (RNN / LSTM) Keras


12

ฉันได้รับการพยายามที่จะเข้าใจวิธีการที่จะเป็นตัวแทนของข้อมูลและรูปร่างที่จะทำให้Multidimentionalและหลายตัวแปรเวลาคาดการณ์โดยใช้ Keras (หรือ TensorFlow) ชุด แต่ผมยังไม่ชัดเจนมากหลังจากอ่านบล็อกโพสต์หลาย tutorials / / เอกสารเกี่ยวกับวิธีการที่จะนำเสนอข้อมูลใน รูปร่างที่ถูกต้อง (ตัวอย่างส่วนใหญ่มีค่าน้อยกว่าเล็กน้อย

ชุดข้อมูลของฉัน:

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

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

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

รูปทรงเทนเซอร์นั้นเป็นไปอย่างง่ายดาย(?, 365, 3)สำหรับ 365 วันและ 3 คุณสมบัติ แต่ฉันไม่แน่ใจว่าจะติดอยู่ในมิติแรกและที่สำคัญที่สุดฉันจะประหลาดใจถ้ามันต้องเป็นจำนวนของเมือง แต่ในเวลาเดียวกันฉันก็ไม่รู้ว่าจะระบุรุ่นที่ต้องเข้าใจขนาดอย่างถูกต้องอย่างไร

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

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


1
ต่อไปนี้เป็นบทแนะนำที่ดีเกี่ยวกับหัวข้อนี้: tensorflow.org/beta/tutorials/text/time_series
CubeBot88

คำตอบ:


13

รูปร่างการป้อนข้อมูลสำหรับ LSTM (num_samples, num_time_steps, num_features)ต้อง ในกรณีตัวอย่างของคุณการรวมเมืองทั้งสองเป็นอินพุทnum_featuresจะเป็น 2x3 = 6

หากคุณยกขั้นตอนเวลา 365 ทั้งหมดของคุณเป็นตัวอย่างเดียวมิติแรกจะเป็น 1 - ตัวอย่างเดียว! นอกจากนี้คุณยังสามารถตรวจสอบสติได้โดยใช้จำนวนจุดข้อมูลทั้งหมด คุณมี 2 เมืองโดยแต่ละเมืองมี 365 ขั้นตอนและ 3 คุณลักษณะ: 2x365x3 = 2190 เห็นได้ชัดว่าเป็นเช่นเดียวกับ 1x365x6 (ดังที่ฉันได้กล่าวไว้ข้างต้น) - ดังนั้นจึงเป็นไปได้ (Keras จะทำงาน) - แต่แน่นอนว่ามันจะไม่เรียนรู้ที่จะพูดคุยทั่วไปเลยเพียงแค่ให้ตัวอย่าง

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

หากคุณต้องการฝึกแบบจำลองเดียวด้วยข้อมูลสำหรับทั้งสองเมืองเป็นอินพุทดังนั้นการคาดคะเนสำหรับทั้งสองเมืองในแต่ละขั้นตอนนั้นง่ายเหมือนการกำหนดDenseเลเยอร์สุดท้ายซึ่งมี 2 หน่วย ข้อมูลการตรวจสอบ / การทดสอบของคุณจะต้องมี tuple จาก (city1, city2)

วิธีที่อาจจะมีความซับซ้อนมากขึ้นในวิธีการนี้จะสร้างชุดข้อมูลบนพื้นฐานเดียวเมืองแล้วการฝึกอบรมหลายรุ่นย่อยในแต่ละเมืองเป็นรายบุคคล (พูดได้ 5 ชั้น) แล้วMerge/ Concatenateพวกเขาและใส่ชั้นอีกหลายด้านบน นี่จะหมายความว่าคุณกำลังรวมคุณสมบัติที่ได้รับการเรียนรู้ของแต่ละเมืองซึ่งจะรวมเข้ากับสิ่งที่เป็นนามธรรมในระดับที่สูงขึ้น นี่คือภาพแรกที่ฉันได้รับจากเสิร์ชเอ็นจิ้น


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

ยินดีต้อนรับคุณ! อวนลึกได้รับประโยชน์จากข้อมูลที่มากขึ้นเสมอ คำแนะนำของฉันด้านบนจะมีพารามิเตอร์จำนวนมาก - มีเพียง 365 คะแนนคุณเสี่ยงต่อการล้นเมืองเหล่านั้น (เช่นไม่มีการวางหลักเกณฑ์ทั่วไป)! คุณสามารถลองเพิ่มข้อมูลได้อย่างไรขึ้นอยู่กับข้อมูลของคุณ หากคุณมีข้อมูลเพียงพอคุณสามารถพูดคุยได้ดี - ฉันนึกภาพผลการพิมพ์ของWord2Vec (โดยทั่วไปในการวิเคราะห์ข้อความ / NLP) ซึ่งความสัมพันธ์ระหว่างตัวแปรสามารถตีความได้ ตรวจสอบนี้สำหรับข้อมูลและนี้มานานปรีชา / สนุก ผลลัพธ์ของคุณอาจพล็อตแผนที่สภาพอากาศ!
n1k31t4

ใช่ทำให้รู้สึกดังนั้นการทำงานบางหน้าต่างกลิ้งจะค่อนข้างหลอกลวง "ข้อมูลเพิ่มเติม" เรียงลำดับถ้าฉันเข้าใจสิ่งที่คุณพูด?
Bastien

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

ตกลงกัน! และหน้าต่างกลิ้งจะไม่ป้องกันเซลล์หน่วยความจำจากการเรียนรู้การพึ่งพาความโกรธที่ยาวนานหรือไม่?
Bastien
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.