เครื่องมือที่เหมาะกับงานคืออะไร?

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

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

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

รหัสทั้งหมดที่เกี่ยวข้องกับโพสต์นี้สามารถพบได้ ที่นี่

แรงจูงใจ

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

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

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

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

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

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

แม้ว่าสิ่งเหล่านี้จะดูไม่ค่อยมีคุณค่าในด้านการศึกษาและอุตสาหกรรม แต่ก็มีกรณีการใช้งานมากมายที่การคาดการณ์เวลาก่อนเหตุการณ์จะมีประโยชน์:

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

โมเดลการเอาชีวิตรอด

ทฤษฎี

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

ฉันไม่ต้องการพูดมากเกินไปเกี่ยวกับทฤษฎี แต่เน้นไปที่การใช้งานจริงมากกว่า แหล่งที่มาที่ดีสองแหล่งสำหรับพื้นฐานคือ "บทความ" นี้ และ "บทแนะนำห้องสมุด lifelines"

ข้อมูลและตัวอย่าง

ฉันจะใช้ "ชุดข้อมูล" หนึ่งชุดเป็นหลักสำหรับโน้ตบุ๊กและตัวอย่างในบทความนี้ เป็นเรื่องเกี่ยวกับระยะเวลาการครองราชย์ของระบอบการเมือง (ประชาธิปไตยและเผด็จการ) ใน 202 ประเทศ ตั้งแต่ปี พ.ศ. 2489 หรือปีเอกราชถึงปี 2551

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

เป้าหมายการอยู่รอด

ข่าวดีก่อน: ใน Survival Models เฉพาะเป้าหมายการคาดการณ์เท่านั้นที่เปลี่ยนแปลง ในขณะที่ฟีเจอร์ต่างๆ ยังคงเหมือนเดิมในโมเดล ML แบบคลาสสิก

มีจุดข้อมูลที่น่าสนใจเป็นเป้าหมายสองจุด: เหตุการณ์และระยะเวลา

เหตุการณ์

เหตุการณ์อาจเป็นอะไรก็ได้ตั้งแต่การฟื้นฟูในการรักษาพยาบาล หรือการเลิกจ้างของลูกค้า ไปจนถึงการสิ้นสุดการปกครองของรัฐบาล คอลัมน์เป้าหมายจะเก็บข้อมูลว่าเหตุการณ์นั้นถูกสังเกตหรือไม่ และในกรณีส่วนใหญ่จะเป็นไบนารี่ (แม้ว่าจะมีรูปแบบพิเศษที่มีการแข่งขันหลายรายการ)

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

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

ลองพิจารณาตัวอย่างการเลิกใช้งานของลูกค้านี้:

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

ระยะเวลา

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

การสร้างแบบจำลองเป้าหมาย

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

การสร้างแบบจำลองเป็นปัญหาการถดถอย

แบบจำลองการถดถอยใช้เพื่อทำนายค่าต่อเนื่อง

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

นี่ดูเหมือนจะไม่ใช่ความคิดที่ดีในกรณีส่วนใหญ่

การสร้างแบบจำลองเป็นปัญหาการจำแนกประเภท

โมเดลการจำแนกประเภทใช้เพื่อทำนายค่าที่ไม่ต่อเนื่องและกำหนดความน่าจะเป็นให้กับคลาส

ในตัวอย่างของเรา อาจใช้เหตุการณ์เป็นเป้าหมาย แต่ยังรวมระยะเวลาคงที่ไว้ด้วย (เช่น เหตุการณ์จะเกิดขึ้นหลังจากหนึ่งปี)

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

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

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

การสร้างแบบจำลองเป็นปัญหาการอยู่รอด

มาดูกันว่าเราจะเอาชนะข้อเสียเหล่านี้ได้อย่างไรโดยใช้วิธี Survival:

อย่างที่คุณเห็น มันสามารถรวมทั้งสองเป้าหมายเป็นอินพุตของโมเดลได้!

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

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

นี่คือเส้นโค้งการอยู่รอดที่มีความน่าจะเป็นสำหรับการสิ้นสุดการปกครองของรัฐบาลในอีก 20 ปีข้างหน้า ตัวอย่างเช่น หลังจากผ่านไปสิบปี ความน่าจะเป็นที่รัฐบาลประชาธิปไตยจากโอเชียเนียยังคงอยู่ในอำนาจคือประมาณ 23%:

แนวทางการเอาตัวรอดสำหรับปัญหาการเอาชีวิตรอด

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

ข้อยกเว้นเพียงอย่างเดียวอาจเป็นกรณีการใช้งานที่เราสนใจเฉพาะความน่าจะเป็นในช่วงเวลาหนึ่งเท่านั้น ในกรณีนี้ โมเดลการจัดหมวดหมู่ก็ใช้ได้ดีเช่นกัน

โมเดลและไลบรารี

ข่าวดีก่อน: โมเดลการอยู่รอดจะปรับโมเดล ML แบบคลาสสิก เช่น Logistic Regression, Decision Trees และ Neural Nets เช่นเดียวกับในพื้นที่อื่นๆ การพัฒนาใหม่ๆ ส่วนใหญ่เกิดขึ้นกับ "วิธีการเรียนรู้เชิงลึก"

นี่คือไลบรารีที่ฉันแนะนำเมื่อทำงานกับ Survival Models:

  • เส้นชีวิต: โมเดลเชิงเส้นและฟังก์ชันทางสถิติมากมาย นี่เป็นจุดเริ่มต้นที่ดี แต่โดยส่วนใหญ่แล้วจะไม่สร้างแบบจำลองที่แม่นยำที่สุด
  • pycox: โมเดลการเอาชีวิตรอดที่ใช้ Neural Nets — โดยส่วนใหญ่จะใช้ฟังก์ชันการสูญเสียซึ่งสามารถวางทับสถาปัตยกรรม pytorch ใดๆ ได้
  • XGBSE: XGBoost การนำเอา Survival Models ไปใช้ที่มีความซับซ้อนของโมเดลที่แตกต่างกัน

คุณสามารถค้นหา Notebook หนึ่งเครื่องสำหรับแต่ละไลบรารีเพื่อดูว่าต้องจัดเตรียมข้อมูลอย่างไร และสามารถเรียกใช้แบบจำลองได้ ที่นี่ (02 / 03 / 04)

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

ฉันยังลองใช้ไลบรารีอื่น ๆ ที่ไม่เพิ่มคุณค่าให้ฉันด้วย:

  • xgboost: แทบไม่มีเอกสารใด ๆ เกี่ยวกับฟังก์ชันการเอาชีวิตรอด คาดการณ์เฉพาะอัตราอันตราย (ค่าเดียว)
  • scikit-survival: ห้องสมุดเอาชีวิตรอดตาม scikit-learn พร้อมโมเดลต่างๆ (CoxPH, Random Forests, Boosting) การใช้งานแบบไม่เชิงเส้นจะช้ามากและไม่สามารถปรับขนาดได้ดี
  • pySurvival: ฉันลองใช้ Random Survival Forests เป็นหลัก ซึ่งช้ามากและปรับขนาดได้ไม่ดีนัก

การประเมิน

ข่าวดีก่อน: หากคุณสนใจเฉพาะการจัดอันดับความเสี่ยง เช่น ข้อสังเกตใดที่มีความเสี่ยงสูงกว่าข้ออื่นๆ ก็ง่ายมาก

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

รหัสสำหรับส่วนนี้สามารถพบได้ "ที่นี่"

ดัชนีความสอดคล้อง

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

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

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

คุณภาพของเส้นโค้งการเอาชีวิตรอด

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

ในกรณีที่เหตุการณ์ไม่เกิดขึ้น เส้นโค้งในอุดมคติจะเป็น 100% จนกว่าจะถึงจุดเซ็นเซอร์ นอกเหนือจากจุดนั้นก็ไม่แน่นอน:

ในกรณีที่เหตุการณ์เกิดขึ้น เส้นโค้งในอุดมคติจะเป็น 100% จนกว่าเหตุการณ์จะเกิดขึ้นและเป็นศูนย์หลังจากนั้น:

ตัวชี้วัดทั่วไปตัวหนึ่งที่ใช้สำหรับปัญหานี้คือ "คะแนน Brier ขึ้นอยู่กับเวลา" นี่คือการปรับเอาตัวรอดของ Brier Score หรือ Mean Squared Error ("ดูการใช้งาน sklearn")

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

ตัวชี้วัดนี้มีข้อเสียบางประการ:

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

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

รูปร่างของเส้นโค้งการเอาชีวิตรอด

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

สิ่งที่ต้องทำ ต่อไปนี้เป็นสิ่งที่ควรระวัง:

  • ขนาด: บางรุ่นอาจสร้างเส้นโค้งในแง่ดีมากกว่ารุ่นอื่นๆ
  • อัตราการลดลง
  • เส้นโค้ง (ภายในกลุ่มย่อย) ลดลงเหลือ 0 หลังจากช่วงเวลาหนึ่ง: ซึ่งหมายความว่าไม่มีการคาดการณ์เหตุการณ์ใดที่สามารถไปไกลกว่าจุดนี้ได้ และอาจเป็นสัญญาณว่าข้อมูลการฝึกอบรมไม่เพียงพอสำหรับชุดคุณลักษณะนี้
  • ลดลงอย่างมากเนื่องจากการหมุนเวียนของเหตุการณ์ เช่น การสมัครสมาชิกรายปีหรือรอบการเลือกตั้ง (ในรอบการเลือกตั้งสี่ปี อัตราการรอดชีวิตควรจะลดลงอย่างมีนัยสำคัญหลังจาก t=5, t=9 เป็นต้น)

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

ในการหาปริมาณขนาดของเส้นโค้ง เราสามารถคำนวณพื้นที่ใต้เส้นโค้ง (AUC) ได้ วิธีนี้สามารถสรุปโครงเรื่องข้างต้นได้:

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

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

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

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

โมเดลไดนามิก

จนถึงตอนนี้ เราได้ดูแบบจำลองที่ทำนายเส้นโค้งการอยู่รอดจากจุดเริ่มต้นของการสังเกต (เช่น การเริ่มต้นรัชสมัยของรัฐบาล) ลองเรียกสิ่งนี้ว่าโมเดลแบบคงที่

ในโครงการในโลกแห่งความเป็นจริง เราสามารถอัปเดต Survival Curves เมื่อเวลาผ่านไปโดยการประมวลผลข้อมูลใหม่ (เช่น ระยะเวลาการครองราชย์ที่ผ่าน การให้คะแนนการอนุมัติ โพลในปัจจุบัน เรื่องอื้อฉาว ฯลฯ) ลองเรียกสิ่งนี้ว่าโมเดลไดนามิก

รหัสสำหรับส่วนนี้สามารถพบได้ "ที่นี่"

คงที่และไดนามิก

ตารางต่อไปนี้สรุปความแตกต่างระหว่างสองแนวทางนี้:

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

แยก

แยกคืออะไร

โดยทั่วไป การแยกข้อมูลของเรามีสองประเภท:

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

ลองพิจารณาตัวอย่างนี้ในสมัยรัชกาลที่ 6 รัฐบาลที่แตกต่างกัน:

เราจะใช้การประเมินและการแบ่งแบบไดนามิกที่นี่ได้อย่างไร มาดูรูปแบบคงที่กันก่อน

คงที่

ในบริบทคงที่ การแยกตามเวลาจะไม่สามารถใช้ได้ เนื่องจากเราคาดการณ์จากจุดเริ่มต้นเสมอ การแยกเป็นการฝึกอบรมและการทดสอบเป็นไปตามที่คาดไว้

สำหรับการแบ่งการประเมินแบบสุ่ม เราจะใส่ชุดย่อยที่สุ่มขึ้นมา (เช่น 20%) ลงในชุดทดสอบ:

นี่เป็นข้อดีที่ผสมผสานกับการสังเกตแบบเก่าๆ ซึ่งเรายังอาจต้องการคาดการณ์และประเมินผลด้วย

ความเป็นไปได้ประการที่สองคือการแบ่งเวลาการประเมินโดยที่เราใส่ทุกการสังเกตที่เริ่มต้นหลังจากจุดแยกที่แน่นอนลงในชุดการทดสอบ:

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

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

พลวัต

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

มีวิธีที่แตกต่างกันในการทำเช่นนี้ วิธีแรกที่ฉันเห็นคือการแบ่งเวลาแบบตายตัว ซึ่งจะแยกข้อมูลทั้งหมดที่จุดเดียวกันเพื่อจำลอง "วันนี้":

การแบ่งเวลาแบบตายตัวมีข้อเสียบางประการ:

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

นี่คือตารางที่มีข้อมูลตัวอย่างที่มีการคำนวณการแบ่งในปี 1988 คอลัมน์ split_time (split_year-start_year) จะกลายเป็นคุณลักษณะใหม่และ duration_split (duration-split_time หรือ end_year-split_year) จะเป็นเป้าหมายระยะเวลาใหม่:

กลับมาที่การสูญเสียข้อมูล: หากเราสนใจขอบเขตการคาดการณ์ 20 ปี เราต้องแยกกันในปี 1988 (ข้อมูลสิ้นสุดในปี 2008 โดยปกติจะเป็น today - prediction horizon) เราต้องทิ้งข้อมูลทั้งหมดโดยที่ปี 1988 ไม่ได้อยู่ระหว่างปีเริ่มต้นและปีสิ้นสุด เหลือเพียง 8% ของข้อมูลเท่านั้น!

เพื่อเอาชนะข้อเสียเหล่านี้ ฉันจึงได้ระบบสุ่มแยก โดยที่การสังเกตแต่ละรายการจะถูกแยกออกที่จุดสุ่มระหว่างวันที่เริ่มต้นและวันที่สิ้นสุด:

นี่คือตารางที่มีข้อมูลตัวอย่างโดยที่ split_time เป็นจำนวนเต็มสุ่มระหว่าง 1 ถึงระยะเวลา ตามที่กล่าวไว้ข้างต้น คอลัมน์ split_time จะกลายเป็นคุณลักษณะใหม่และ duration_split (duration-split_time) จะเป็นเป้าหมายระยะเวลาใหม่:

ข้อดี

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

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

คุณสมบัติแบบไดนามิก

นอกเหนือจากคุณลักษณะคงที่ทั้งหมด (เช่น ทวีปหรือประเภทหน่วยงานราชการ) เราควรเพิ่มคุณลักษณะแบบไดนามิกเพื่อปรับปรุงแบบจำลอง นี่คือตัวอย่างบางส่วน:

  • ระยะเวลาการครองราชย์: ดังที่เราเห็นข้างต้น เราได้รับคุณสมบัติไดนามิกฟรีเมื่อเราแบ่งตามมิติเวลา (split_time) ในตัวอย่างนี้ นี่จะเป็นระยะเวลาที่ผ่านไปแล้วในรัชสมัยของรัฐบาล คุณลักษณะนี้อาจมีผลกระทบอย่างมากต่อการคาดการณ์ (ดูตัวอย่างในการประเมินแบบไดนามิกด้านล่าง)
  • การสำรวจและการให้คะแนนการอนุมัติในปัจจุบัน
  • การเลือกตั้งท้องถิ่น
  • เรื่องอื้อฉาว

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

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

การประเมินแบบไดนามิก

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

เราสามารถจำลองการคาดการณ์ในเวลาที่ต่างกันได้โดยการแทนที่คุณลักษณะ split time แผนภูมิแรกแสดงการคาดการณ์ทั้งหมดในช่วงเวลาต่างๆ โดยเริ่มต้นที่จุดเดียวกัน ในขณะที่แผนภูมิที่สองแสดงจุดเริ่มต้นที่แท้จริง:

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

โปรดทราบว่าเอฟเฟกต์ตามสัญชาตญาณนี้จะสังเกตได้ยากขึ้นเมื่อมีฟีเจอร์ไดนามิกเข้ามาเกี่ยวข้อง ซึ่งอาจส่งผลเสียต่อเส้นโค้งด้วย (เช่น เรื่องอื้อฉาว)

บทสรุป

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

  • การศึกษา: การรวมอยู่ในหลักสูตรวิทยาศาสตร์ข้อมูลพื้นฐานและห้องสมุดยอดนิยม (scikit-learn, fast.ai) เพื่อเผยแพร่การรับรู้และทำให้เข้าถึงได้มากขึ้น นอกจากนี้ ยังจำเป็นต้องมีเนื้อหาที่เจาะลึกเพิ่มเติมซึ่งนอกเหนือไปจากพื้นฐานอีกด้วย นี่คือเนื้อหาประเภทที่ฉันพยายามสร้างด้วยบทความนี้
  • การประเมิน: ให้ความสำคัญกับการวัดอันดับเดียวมากเกินไป (Concordance) ซึ่งในสายตาของฉันยังไม่เพียงพอ โดยทั่วไปยังขาดตัวชี้วัดที่เข้าใจง่ายในการประเมินคุณภาพและรูปร่างของ Survival Curve บทความของฉันจะให้ตัวอย่างการตรวจสอบด้วยสายตาและคำแนะนำเกี่ยวกับสิ่งที่ควรระวังเพื่อบรรเทาปัญหาเหล่านี้
  • โมเดลไดนามิก: การอัปเดตการคาดการณ์เมื่อเวลาผ่านไปจะซับซ้อนมากและยากยิ่งขึ้นในการประเมิน (วิธีการประเมินที่ดีกว่าสามารถบรรเทาปัญหานี้ได้) น่าเสียดายที่แทบไม่มีแหล่งข้อมูลให้เรียนรู้เกี่ยวกับหัวข้อนี้ ฉันพูดคุยเกี่ยวกับความท้าทายพิเศษของแบบจำลองแบบไดนามิกและแบบคงที่เพื่อความอยู่รอด อภิปรายการวิธีการแยกแบบต่างๆ และยกตัวอย่างสำหรับการประเมินด้วยภาพเพื่อลดความซับซ้อน เนื้อหาส่วนใหญ่นี้ฉันไม่พบที่อื่น

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