จะใช้เครือข่ายประสาทกับการพยากรณ์อนุกรมเวลาได้อย่างไร


83

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

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




@ โซลาร์ติแค่อยากรู้อยากเห็นคุณใช้วิธีนี้สำเร็จหรือไม่?
Saggy Manatee และ Swan Folk

คำตอบ:


102

นี่คือสูตรง่ายๆที่อาจช่วยให้คุณเริ่มเขียนโค้ดและทดสอบแนวคิด ...

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

  1. การวิเคราะห์ข้อมูลเชิงสำรวจ: ใช้วิธีการวิเคราะห์อนุกรมเวลาแบบดั้งเดิมบางอย่างเพื่อประเมินการพึ่งพาความล่าช้าในข้อมูล (เช่นความสัมพันธ์แบบอัตโนมัติและการแปลงความสัมพันธ์แบบอัตโนมัติบางส่วน สมมติว่าคุณพบว่าค่าของเดือนที่กำหนดนั้นมีความสัมพันธ์กับข้อมูลของสามเดือนที่ผ่านมา แต่ไม่มากไปกว่านั้น
  2. แบ่งพาร์ติชันข้อมูลของคุณออกเป็นชุดการฝึกอบรมและการตรวจสอบ: ใช้ 24 คะแนนแรกเป็นค่าการฝึกอบรมและคะแนนที่เหลือเป็นชุดการตรวจสอบ
  3. สร้างโครงร่างโครงข่ายประสาท: คุณจะรับค่าของสามเดือนที่ผ่านมาเป็นอินพุตและคุณต้องการทำนายค่าของเดือนถัดไป ดังนั้นคุณต้องใช้โครงข่ายประสาทเทียมที่มีชั้นอินพุตที่มีสามโหนดและชั้นผลลัพธ์ที่มีหนึ่งโหนด คุณควรมีเลเยอร์ที่ซ่อนอยู่ซึ่งมีอย่างน้อยสองโหนด น่าเสียดายที่การเลือกจำนวนเลเยอร์ที่ซ่อนอยู่และจำนวนโหนดตามลำดับไม่ใช่สิ่งที่มีแนวทางที่ชัดเจน ฉันจะเริ่มต้นเล็ก ๆ เช่น 3: 2: 1
  4. x1,x2...,x24
    พีaเสื้อเสื้ออีRn1:x1,x2,x3,x4
    พีaเสื้อเสื้ออีRn2:x2,x3,x4,x5
    ...
    พีaเสื้อเสื้ออีRn21:x21,x22,x23,x24
  5. ฝึกเครือข่ายประสาทเทียมในรูปแบบเหล่านี้
  6. ทดสอบเครือข่ายในชุดการตรวจสอบความถูกต้อง (เดือน 25-36): ที่นี่คุณจะผ่านค่าสามค่าที่โครงข่ายประสาทต้องการสำหรับเลเยอร์อินพุตและดูว่าโหนดเอาต์พุตได้รับการตั้งค่าเป็นอย่างไร ดังนั้นเพื่อดูว่าโครงข่ายประสาทเทียมที่ผ่านการฝึกอบรมสามารถทำนายมูลค่าของเดือนที่ 32 ได้ดีเพียงใดคุณจะผ่านค่าในเดือน 29, 30 และ 31

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

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

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


12
+1 กับคำตอบนี้ แต่ยังเพิ่มว่าแม้ว่า 3 เดือนล่าสุดเป็นเพียงคำตอบเดียวที่มีความสัมพันธ์กับคำตอบ แต่ก็อาจมีปัจจัยเช่นเดือนเดียวกันของปีใน 5 ปีที่ผ่านมาซึ่งเป็นข้อมูลที่มีประโยชน์ ( เช่นหากผู้หลอกลวงมีแนวโน้มที่จะดูเหมือนผู้หลอกลวงคนก่อนหน้านี้โดยทั่วไป)
rossdavidh

1
คำตอบที่ดี ฉันพบว่าสิ่งนี้มีประโยชน์มาก คำอธิบายระดับสูงเป็นสิ่งที่ฉันต้องการ @rossdavidh: จุดที่ดี +1
solartic

2
มันจะเป็นการดีถ้าได้รับโค้ดตัวอย่างที่นี่
LéoLéopold Hertz 준영

1
สิ่งที่น่าสนใจจะเป็นชุดข้อมูลอนุกรมเวลาหลายตัวแปรพร้อมชุดรีจีสเตอร์ ..
Tommaso Guerrini

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