การจำแนกอนุกรมเวลา - ผลลัพธ์ที่แย่มาก


11

ฉันกำลังทำงานเกี่ยวกับปัญหาการจำแนกอนุกรมเวลาที่อินพุตเป็นข้อมูลการใช้เสียงอนุกรมเวลา (เป็นวินาที) สำหรับ 21 วันแรกของบัญชีโทรศัพท์มือถือ ตัวแปรเป้าหมายที่สอดคล้องกันคือยกเลิกบัญชีนั้นในช่วง 35-45 วันหรือไม่ ดังนั้นมันจึงเป็นปัญหาการจำแนกเลขฐานสอง

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

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

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

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


1
สำหรับผู้เริ่มฉันแนะนำให้คุณลองใช้ตัวแปรต่อไปนี้ 1 รวมข้อมูลการใช้งานตามชั่วโมง / วัน 2. จากข้อมูลการฝึกอบรมของคุณวางทับชุดข้อมูลอนุกรมเวลาเหล่านี้เพื่อดูรูปแบบภายในทั้งสองกลุ่ม 3. สำรวจโมเดลอนุกรมเวลา / การถดถอยต่างๆที่เหมาะสมกับข้อมูลของคุณ 4. ใช้สัมประสิทธิ์รุ่นเป็นคุณสมบัติสำหรับตัวจําแนกของคุณ
ramhiser

ฉันชอบเทคนิคการดึงคุณสมบัติของคุณ ฉันจะลองดู ฉันมั่นใจว่าข้อมูลของฉันเบาบางเกินไปที่จะหารูปแบบ แต่ใครจะรู้ ขอบคุณ!
user1893354

คำตอบ:


13

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

การวิจัยของฉัน(PDF)แสดงให้เห็นว่าวิธีการนี้ยากที่จะเอาชนะ ด้านล่างมีลักษณะเป็นแผนจากการดำเนินงานหลามของฉัน KNN และ DTW บนGitHub หรือดูในIPython Notebook

KNN และ DTW

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


4
คุณสามารถปรับปรุงลิงค์ไปยังรายงานการวิจัยของคุณได้หรือไม่?
tilaprimera


10

ทั้งสองวิธีในการจำแนกอนุกรมเวลา

มีสองวิธีในการจัดการกับอินพุตที่มีโครงสร้างชั่วคราวสำหรับงานการจำแนกประเภท:

  1. Dedicated Time Series Model:อัลกอริทึมการเรียนรู้ของเครื่องรวมอนุกรมเวลาโดยตรง ฉันนับ KNN กับรุ่น DTW ในหมวดหมู่นี้
  2. วิธีการตามคุณลักษณะ:นี่คืออนุกรมเวลาที่ถูกแมปไปยังอีกมิติอาจต่ำกว่าการเป็นตัวแทน ซึ่งหมายความว่าอัลกอริทึมการดึงคุณสมบัติจะคำนวณคุณสมบัติเช่นค่าเฉลี่ยหรือค่าสูงสุดของอนุกรมเวลา คุณสมบัติจะถูกส่งเป็นเมทริกซ์ฟีเจอร์ไปยังการเรียนรู้ของเครื่อง "ปกติ" เช่นเครือข่ายประสาทเทียมฟอเรสต์แบบสุ่มหรือเครื่องเวกเตอร์สนับสนุน วิธีนี้มีความได้เปรียบในการอธิบายผลลัพธ์ได้ดีขึ้น นอกจากนี้ยังช่วยให้เราสามารถใช้ทฤษฎีการเรียนรู้ของเครื่องที่มีการพัฒนาอย่างดี

ฉันยังประสบความสำเร็จในการปรับใช้ KNN กับ DTW ได้สำเร็จในอดีต อย่างไรก็ตามฉันเกือบจะสามารถเอาชนะความแม่นยำด้วยโมเดลที่ใช้คุณสมบัติที่ออกแบบมาอย่างดี นอกจากนี้ KNN กับ DTW สำหรับการจำแนกประเภทไบนารีด้วย O (n_t · m_ {train} · m_ {test}) โดยที่ n_t เป็นความยาวของอนุกรมเวลา mtrain และ mtest เป็นจำนวนอุปกรณ์ในชุดรถไฟและชุดทดสอบตามลำดับ . ซึ่งหมายความว่าการคำนวณใช้เวลาค่อนข้างนาน ..

ดังนั้นฉันขอแนะนำให้ใช้วิธีการตามคุณลักษณะ

tsfresh คำนวณคุณสมบัติจำนวนมาก

แพคเกจหลามtsfreshคำนวณจำนวนมากของคุณสมบัติดังกล่าวจาก pandas.DataFrame ที่มีอนุกรมเวลา คุณสามารถค้นหาเอกสารที่http://tsfresh.readthedocs.io

ป้อนคำอธิบายรูปภาพที่นี่

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

คำเตือน: ฉันเป็นหนึ่งในผู้เขียนของ tsfresh


ขอบคุณมากสำหรับโพสต์ที่ยอดเยี่ยมของคุณ ฉันมีซีรี่ส์เวลาที่เล็กมาก (เช่น 10 จุดข้อมูลต่ออนุกรมเวลา) ในกรณีนี้คุณจะแนะนำให้ใช้ tsfresh สำหรับชุดข้อมูลของฉันหรือไม่ ขอบคุณ :)
EmJ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.