การตรวจสอบความถูกต้องไขว้แบบซ้อนสำหรับการเลือกโมเดล


91

หนึ่งจะใช้การตรวจสอบข้ามซ้อนสำหรับการเลือกรูปแบบได้อย่างไร

จากสิ่งที่ฉันอ่านทางออนไลน์ CV ที่ซ้อนกันทำงานได้ดังต่อไปนี้:

  • มีวง CV ภายในซึ่งเราอาจทำการค้นหากริด (เช่นใช้ K-fold สำหรับทุกรุ่นที่มีเช่นการรวมกันของพารามิเตอร์ / คุณสมบัติ)
  • มีลูป CV ด้านนอกที่เราวัดประสิทธิภาพของโมเดลที่ชนะในโฟลด์ภายในโดยแยกจากภายนอก

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

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

ดังนั้นฉันจะใช้ CV ที่ซ้อนกันสำหรับการเลือกรุ่นได้อย่างไร

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

คำตอบ:


76

ฉันจะเลือกรุ่นจากเอาต์พุต [การตรวจสอบไขว้ภายนอก] นี้ได้อย่างไร

คำตอบสั้น ๆ : คุณทำไม่ได้

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

  • นอกรุ่นตัวแทนเทียบเท่ากับ "ของจริง" รูปแบบที่สร้างขึ้นโดย มีข้อมูลทั้งหมดkmodel.fitting.procedure
  • หรือในกรณีที่ 1. หยุดพัก (การมองโลกในแง่ร้ายของการตรวจสอบความถูกต้อง resampling) อย่างน้อยจำลองตัวแทนนอกจะเทียบเท่ากัน วิธีนี้ช่วยให้คุณสามารถรวมผลการทดสอบ (โดยเฉลี่ย) นอกจากนี้ยังหมายความว่าคุณไม่จำเป็นต้องเลือกพวกเขาเนื่องจากคุณคิดว่าพวกเขาเหมือนกัน การทำลายลงของวินาทีนี้สมมติฐานที่อ่อนแอคือความไม่แน่นอนของแบบจำลองk

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

ดังนั้นฉันจะใช้ CV ที่ซ้อนกันสำหรับการเลือกรุ่นได้อย่างไร

ภายใน CV ไม่เลือก

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

คุณมีสิทธิ์ที่จะไม่เลือกรุ่นตัวแทนอย่างใดอย่างหนึ่ง แต่คุณผิดเกี่ยวกับเหตุผล เหตุผลที่แท้จริง: ดูด้านบน ความจริงที่ว่าพวกเขาไม่ได้รับการฝึกฝนและทดสอบกับข้อมูลเดียวกันไม่ได้ "เจ็บ" ที่นี่k

  • ไม่มีข้อมูลการทดสอบที่เหมือนกัน: ตามที่คุณต้องการอ้างสิทธิ์หลังจากนั้นผลการทดสอบจะทำให้ข้อมูลไม่เคยเห็นมาก่อนซึ่งไม่สามารถสร้างความแตกต่างได้
  • ไม่มีข้อมูลการฝึกอบรมเดียวกัน:
    • ถ้าแบบจำลองมีความเสถียรสิ่งนี้จะไม่สร้างความแตกต่าง: เสถียรที่นี่หมายความว่าแบบจำลองจะไม่เปลี่ยนแปลง (มาก) หากข้อมูลการฝึกอบรม "ตกอกตกใจ" โดยการแทนที่บางกรณีโดยกรณีอื่น
    • หากโมเดลไม่เสถียรการพิจารณาสามสิ่งสำคัญ:
      1. คุณสามารถวัดได้ว่าในกรณีนี้และในระดับใดโดยใช้การตรวจสอบความถูกต้องแบบวนซ้ำ -fold ซ้ำแล้วซ้ำอีก ที่ช่วยให้คุณสามารถเปรียบเทียบผลการตรวจสอบข้ามสำหรับกรณีเดียวกันซึ่งได้รับการทำนายโดยแบบจำลองต่างๆที่สร้างขึ้นจากข้อมูลการฝึกอบรมที่แตกต่างกันเล็กน้อยk
      2. หากแบบจำลองไม่เสถียรความแปรปรวนที่สังเกตเห็นจากผลการทดสอบของการตรวจสอบความถูกต้องข้ามของ -fold เพิ่มขึ้น: คุณไม่เพียง แต่มีความแปรปรวนเนื่องจากข้อเท็จจริงที่ว่ามีเพียงจำนวน จำกัด ของการทดสอบทั้งหมด แต่มีความแปรปรวนเพิ่มเติม เนื่องจากความไม่แน่นอนของตัวแบบ (ความแปรปรวนในความสามารถในการทำนาย)k
      3. หากความไม่แน่นอนเป็นปัญหาจริงคุณไม่สามารถคาดการณ์ประสิทธิภาพของโมเดล "ของจริง" ได้

ซึ่งนำมาสู่คำถามสุดท้ายของคุณ:

การวิเคราะห์ / ตรวจสอบประเภทใดที่ฉันสามารถทำกับคะแนนที่ฉันได้รับจากการพับ K ภายนอก

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

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


อัปเดตคำถามของผู้ใช้ @ user99889: จะทำอย่างไรถ้า CV ด้านนอกพบความไม่แน่นอน

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

ในความคิดเห็นที่ตอบ @davips ฉันคิดว่าจะแก้ปัญหาความไม่มั่นคงในCV ภายใน - กล่าวคือเป็นส่วนหนึ่งของกระบวนการปรับให้เหมาะสมแบบจำลอง

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

อย่างไรก็ตามมีลักษณะหนึ่งที่ IMHO อาจแก้ตัวการเปลี่ยนแปลงเพิ่มเติมของโมเดล "ขั้นสุดท้าย" หลังจากการพิจารณาอย่างรอบคอบเกี่ยวกับสถานการณ์ที่แน่นอน : เมื่อเราตรวจจับการ overfitting การเปลี่ยนแปลงใด ๆ ที่เสนอ (น้อยกว่า df / จำกัด มากขึ้นหรือรวมตัว) อยู่ในทิศทางของการ overfitting น้อย (หรืออย่างน้อยพารามิเตอร์ที่มีแนวโน้มที่จะ overfitting น้อย) จุดของการทดสอบอิสระคือการตรวจจับการมีส่วนเกิน - การ underfitting สามารถตรวจพบได้โดยข้อมูลที่ใช้ในกระบวนการฝึกอบรมแล้ว

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

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


Update (2019): ยิ่งฉันคิดเกี่ยวกับสถานการณ์เหล่านี้มากขึ้นผมมาชอบ"การตรวจสอบข้ามซ้อนกันเห็นได้ชัดโดยไม่ต้องทำรัง" วิธีการ


การเลือกรุ่นของ Wrt ถ้าตัวจําแนกไม่เสถียรเราควรเลือกอันที่มีค่ามัธยฐานของประสิทธิภาพที่ดีที่สุดหรือไม่? ตัวเลือกนี้จะคล้ายคลึงกับข้อเสนอแนะของคุณเพื่อเปรียบเทียบประสิทธิภาพภายในกับประสิทธิภาพภายนอก
viyps

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

1
@ user99889: โปรดดูคำตอบที่อัพเดต
cbeleites

1
@ user99889: ใช่ - แต่อย่าคาดหวังว่าจะมีปาฏิหาริย์ที่นั่น หากความมั่นคงเป็นปัญหาเมื่อฝึกด้วย 80% ของคดี (k = 5) มันจะเป็นปัญหาด้วย k = 10 นั่นคือ 90% ของ n = เพิ่ม 12.5% ​​เมื่อเทียบกับ 80% / k = 5 ตัวแทนจำลอง
cbeleites

1
@cbeleites: สมมุติที่เกี่ยวข้อง สมมติว่าฉันตัดสินใจค้นหาพื้นที่พารามิเตอร์ c: [1,2,3] ฉันทำ CV ที่ซ้อนกันบนชุดข้อมูลทั้งหมดของฉันและค้นหาประสิทธิภาพที่ไม่ยอดเยี่ยม ฉันจึงขยายพื้นที่ค้นหาของฉันเป็น c: [0.5,1,1.5,2,2.5,3,3.5,4] ฉันเคยทำบางสิ่งที่เลวร้ายหรือไม่? ดูเหมือนว่าฉันได้เปลี่ยนแปลงพื้นที่พารามิเตอร์ของฉัน (ซึ่งเป็นส่วนหนึ่งของกระบวนการสร้างแบบจำลอง) โดยอิงตามความรู้ที่ได้จากข้อมูลการทดสอบดังนั้นจึงจำเป็นต้องประเมินชุดข้อมูลภายนอกเป็นชุดข้อมูลปัจจุบันของฉันหรือไม่ ยินดีที่จะทำให้คำถามนี้แยกต่างหากถ้าคุณคิดว่ามันดีที่สุด
0

27

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

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


1
ทำไมคุณต้องget an idea of the performance?
viyps

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

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

2
ใช่ถูกต้องแล้ว r
Dikran Marsupial

1
@FedericoTedeschi ข้ามการตรวจสอบจะต้องมีการซ้อนกันมากกว่าแค่แยกที่แตกต่างกันเพื่อให้ได้รับประมาณการผลการดำเนินงานที่เป็นกลาง (ดูหัวข้อ 5.3 กระดาษของฉันjmlr.csail.mit.edu/papers/volume11/cawley10a/cawley10a.pdf ) . โดยทั่วไปฉันใช้ LOOCV สำหรับการเลือกรุ่นสำหรับรุ่นที่สามารถคำนวณได้อย่างมีประสิทธิภาพเท่านั้นและจะใช้ bootstrapping / bagging สำหรับชุดข้อมูลขนาดเล็กของรุ่น (ที่มีข้อผิดพลาด OOB แทนที่การตรวจสอบความถูกต้องภายนอก)
Dikran Marsupial

7

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


3
เพื่อชี้แจงใน python scikit-Learn GridSearchCV(refit=True)จริง ๆ แล้วทำการดัดแปลงโมเดลบนข้อมูลแบบเต็มโดยใช้พารามิเตอร์ที่ดีที่สุดดังนั้นขั้นตอนพิเศษไม่จำเป็น ดูเอกสาร
พอล

คุณมีสิทธิ์เกี่ยวกับตัวเลือกการปรับโฉม ฉันแค่ระบุว่าชัดเจน tbe !!
Anselal

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

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