การตรวจสอบความถูกต้องโฮลด์กับการตรวจสอบข้าม


54

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

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


10
ทำไมคุณถึงคิดว่ามันไร้ประโยชน์? คุณสามารถอ่านองค์ประกอบของทฤษฎีการเรียนรู้ทางสถิติส่วนที่ 7 สำหรับการวิเคราะห์อย่างเป็นทางการของโปรและการต่อต้าน การพูดทางสถิติ k-fold ดีกว่า แต่การใช้ชุดทดสอบไม่จำเป็นต้องเลวร้าย โดยสังเขปคุณต้องพิจารณาว่าชุดทดสอบ (เมื่อใช้อย่างถูกต้อง) เป็นชุดข้อมูลที่ไม่ได้ใช้เลยในการฝึกอบรม ดังนั้นมันจึงมีประโยชน์ในบางแง่มุมในการประเมินแบบจำลอง นอกจากนี้ k-fold มีราคาแพงมากดังนั้นการถือเอาไว้เป็น "การประมาณ" กับสิ่งที่ k-fold ทำ (แต่สำหรับคนที่มีกำลังการคำนวณต่ำ)
Charlie Parker

แน่ใจ จากมุมมองทางทฤษฎี K-fold มีความแม่นยำมากขึ้น แต่มีค่าใช้จ่ายในการคำนวณค่อนข้างมาก คำถามคือทำไมไม่ทำการตรวจสอบข้ามแบบ K-fold เสมอ

2
ฉันเห็น. ฉันจะยืนยันว่าเหตุผลส่วนใหญ่มักจะคำนวณ K-fold ใกล้เคียงกับข้อผิดพลาดในการวางนัยทั่วไปได้ดีกว่าดังนั้นจากมุมมองทางสถิติ K-fold เป็นวิธีการเลือกที่ฉันเชื่อ การค้างเอาไว้นั้นง่ายกว่ามากในการติดตั้งและไม่จำเป็นต้องมีการฝึกอบรมหลายรุ่น ในทางปฏิบัติการฝึกอบรมแบบจำลองอาจมีราคาค่อนข้างสูง
Charlie Parker

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

1
คำถาม - องค์ประกอบของทฤษฎีการเรียนรู้ทางสถิติส่วนที่ 7.10.1 ชื่อ "การตรวจสอบความถูกต้องด้วย K fold cross" ดูเหมือนว่าบ่งชี้ว่าการเก็บข้อมูลการทดสอบแยกจากการฝึกอบรมออกไปอย่างสมบูรณ์ (ในการตรวจสอบความถูกต้อง) ข้อมูลมีน้อยครั้งมาก ฉันยังค่อนข้างใหม่กับสถิติคุณช่วยชี้ให้เห็นว่าการตรวจสอบไขว้มีความแม่นยำมากขึ้นจริงหรือไม่?
numX

คำตอบ:


21

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

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

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

มันฟังดูงี่เง่าและไม่สำคัญ แต่นี่มาจากประสบการณ์ส่วนตัวการเป็นผู้ชายคนนั้นและได้ทำงานกับคนหลายคนที่เป็นผู้ชายคนนั้น


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

3
@Voo: นอกจากนี้ความสามารถในการเขียนโปรแกรมยังไม่เพียงพอที่นี่: คุณต้องเข้าใจปัญหาได้ดีพอที่จะสามารถตัดสินได้ว่าใครที่ confounders ต้องทำบัญชีในระหว่างขั้นตอนการแยก ดูเช่นstats.stackexchange.com/questions/20010/... ฉันคิดว่าฉันเห็นปัญหาประเภทนี้บ่อยกว่าปัญหาการเข้ารหัส "บริสุทธิ์" (แม้ว่าจะไม่มีใครรู้: คนที่แทบจะไม่สามารถเขียนรหัสการแบ่งแถวธรรมดาในเมทริกซ์ข้อมูลจะทำให้ความผิดพลาดในระดับที่สูงขึ้นโดยไม่แยก เช่นในระดับผู้ป่วย)
cbeleites รองรับ Monica

โปรดทราบว่าคุณสามารถทำตามความเหมาะสม (เช่นวันผู้ป่วย / วันที่วัด / ... ) โดยไม่ต้องตั้งโปรแกรมใด ๆ โดยการแยกไฟล์ที่เครื่องมือวัดสร้าง ...
cbeleites รองรับ Monica

5
สำหรับผู้มีสิทธิ์ลงคะแนน: โปรดทราบว่าฉันถามคำถามแยกต่างหากซึ่งตั้งคำถามกับตรรกะของฉัน stats.stackexchange.com/q/108345/36229
shadowtalker

1
ฉันไม่คิดว่าคำตอบที่อธิบายความแตกต่างระหว่างสองวิธีการตรวจสอบข้ามเคยควรจะเป็นเวลาที่มนุษย์จะเรียนรู้อย่างไร้เหตุผลลำเอียงและไม่เป็นประโยชน์
rgalbo

40

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

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

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

  1. ตัดสินใจแยก (เช่นทำการสุ่มกรณี)
  2. วัด
  3. ข้อมูลการวัดและการอ้างอิงของกรณีการฝึกอบรม => การสร้างแบบจำลอง \ การวัดและการอ้างอิงของกรณีทดสอบจะไม่ถูกส่งมอบให้กับบุคคลที่เป็นแบบจำลอง
  4. รุ่นสุดท้าย + การวัดของคดีที่ถูกระงับ => การทำนาย
  5. เปรียบเทียบการคาดการณ์กับการอ้างอิงสำหรับกรณีที่ถูกระงับ

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

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

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

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

OTOH ในสถานการณ์ขนาดตัวอย่างขนาดเล็กไม่มีทางเลือก: คุณจำเป็นต้องมีกรณีทดสอบเพียงพอเพื่อให้ผลการทดสอบมีความแม่นยำเพียงพอที่จะให้ข้อสรุปที่จำเป็น (จำ: 3 กรณีทดสอบที่ถูกต้องจาก 3 ประเภทสำหรับการจำแนกประเภทหมายถึง Binomial ช่วงความเชื่อมั่น 95% ที่อยู่ต่ำกว่าการคาดเดา 50:50!) Frank Harrell จะชี้ไปที่กฎง่ายๆที่อย่างน้อยแคลิฟอร์เนีย กรณีทดสอบ 100 รายการจำเป็นต้องมีการวัดสัดส่วนอย่างเหมาะสม [เช่นส่วนของกรณีที่คาดการณ์ถูกต้อง] ด้วยความแม่นยำที่มีประโยชน์


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


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

คุณไม่ได้ถามคำถามหรือ ใช่การแบ่งเป็นเรื่องยากเนื่องจาก Confounders แต่มันยากโดยไม่คำนึงว่าคุณกำลังทำการตรวจสอบที่ถูกระงับเพียงครั้งเดียวหรือการตรวจสอบข้ามแบบ K-fold ใช่ไหม? (ขอบคุณสำหรับคำตอบที่ชาญฉลาดไม่ว่า!)
Nils von Barth

1
@ NilsvonBarth: ฉันไม่เห็นว่าข้อโต้แย้งของฉันเป็นแบบวงกลม: OP ถามว่า "ทำไม [เลย] ใช้การตรวจสอบการระงับการใช้งาน" และฉันก็ให้เหตุผลเชิงปฏิบัติมากมาย การใช้อย่างมีประสิทธิภาพสูงสุดในเชิงสถิติของจำนวนคดีที่ จำกัด ไม่ได้เป็นคุณสมบัติที่สำคัญที่สุดของการออกแบบการศึกษา (แม้ว่าในประสบการณ์ของฉันมันมักจะเป็นเพราะจำนวนกรณีที่ จำกัด มาก: ฉันมักจะให้คำแนะนำสำหรับ k-fold CV ซ้ำแล้วซ้ำอีกแทนการถือออก) สำหรับการแยกทางกายภาพบางอย่างที่เป็นไปได้และง่ายดาย - และเป็นวิธีที่มีประสิทธิภาพมากในการป้องกันการแอบดูตัวอย่าง ใครจะรู้ว่าเราจะพบว่าทวีคูณ ...
cbeleites รองรับโมนิก้า

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

2
@NilsvonBarth: ระวังเรื่องการรับประกันความเป็นอิสระ: มันง่ายที่จะนำออกมาใช้ในลักษณะดังกล่าว (โดยการระงับทางกายภาพของกรณีเช่นชิ้นงานทดสอบจะถูกเก็บและวัดเฉพาะหลังจากการฝึกอบรมแบบจำลองเสร็จสิ้น) แต่ บ่อยครั้งที่คำว่าโฮลด์เอาท์ใช้สำหรับสิ่งที่เป็นจริงมากกว่าการแยกข้อมูลเพียงครั้งเดียว - และจากนั้นความเป็นไปได้ทั้งหมดของการทำผิดพลาดในการแยกสามารถทำได้ด้วยเช่นกัน!
cbeleites รองรับโมนิก้า

8

มันอาจจะมีประโยชน์ในการล้างคำศัพท์เล็กน้อย ถ้าเราปล่อยให้เป็นจำนวนเต็มน้อยกว่า (หรือเท่ากับ)โดยที่คือขนาดตัวอย่างและเราแบ่งตัวอย่างเป็นย่อยเฉพาะแล้วสิ่งที่คุณกำลังเรียกการตรวจสอบ Hold-out เป็นเพียง 2-fold ( = 2 ) การตรวจสอบข้าม การตรวจสอบความถูกต้องไขว้เป็นเพียงเครื่องมือสำหรับการประเมินอัตราความผิดพลาดนอกตัวอย่าง (หรือความสามารถทั่วไป) ของแบบจำลองเฉพาะ ความจำเป็นในการประเมินอัตราความผิดพลาดนอกกลุ่มตัวอย่างเป็นเรื่องธรรมดาและมีการตีพิมพ์บทความทั้งหมด ดูสำหรับการเริ่มบทที่ 7 ของESLn n k kknnkk

ดังนั้นเพื่อตอบคำถาม:

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

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

กฎของหัวแม่มือฉันได้เรียนรู้คือเมื่อมีขนาดใหญ่จะมีขนาดเล็ก แต่เมื่อมีขนาดเล็กควรจะใกล้เคียงกับnk n k nnknkn


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

8

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


6

เพียงแค่ต้องการเพิ่มแนวทางง่ายๆที่ Andrew Ng พูดถึงในชั้นเรียน CS 229 ของเราที่ Stanford เกี่ยวกับการตรวจสอบข้าม นี่คือแนวทางปฏิบัติที่เขาติดตามในงานของเขา

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

ถ้าใช้ k เท่าการตรวจสอบข้ามกับที่ค่อนข้างใหญ่ทำให้ทราบค่าใช้จ่ายในการคำนวณk m20<m100km

ถ้าการใช้งานปกติ k เท่าการตรวจสอบข้าม5) หรือถ้ามีพลังในการคำนวณไม่เพียงพอและให้ใช้การตรวจสอบความถูกต้องไขว้ของโฮลด์เอาท์( k = 5 ) m > 10 , 000100<m1,000,000(k=5)m>10,000

หากใช้การตรวจสอบความถูกต้องแบบ Cross-out ของโฮลด์ แต่ถ้ามีพลังการคำนวณคุณสามารถใช้การตรวจสอบความถูกต้องแบบกากบาท k-foldหากคุณต้องการบีบประสิทธิภาพพิเศษออกจากแบบจำลองของคุณ( k = 5 )m1,000,000(k=5)


5

คำตอบสั้น ๆ :

ฉันขอแนะนำให้ใช้ CV อย่างน้อยสำหรับ:k=5

  • แบบจำลองที่ซับซ้อน
  • ผลลัพธ์สุดท้ายที่ต้องปฏิบัติตามข้อ จำกัด ด้านความถูกต้อง

คุณอาจผ่อนคลายสิ่งนี้เพื่อ:

  • การฝึกอบรมเกี่ยวกับชุดข้อมูลที่มีขนาดใหญ่มาก
  • การฝึกอบรมรูปแบบที่เรียบง่าย
  • การสร้างต้นแบบเมื่อเวลามีปัญหา

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

ลองดู: http://mlr-org.github.io/mlr-tutorial/release/html/resample/ และ: http://mlr-org.github.io/mlr-tutorial/release/html/performance/ index.htm

มีคำอธิบายเพิ่มเติม - ประวัติย่อที่ CV ทำจริงๆคือทำลายความแปรปรวนอคติที่บิดเบือน:

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

การออกจากระบบมีปัญหากับความเอนเอียงและความแปรปรวน:

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

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

เมื่อขนาดของชุดฝึกอบรมและชุดทดสอบกำหนดกันสิ่งนี้ทำให้เรามีการแลกเปลี่ยน: อคติในแง่ร้ายเทียบกับความแปรปรวนสูง

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

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


3

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

หวังว่านี่จะเป็นประโยชน์!


3

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


เวลาข้อมูลที่ร้ายแรง?
nbro

3

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

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

การตั้งค่าส่วนตัวของฉันคือการใช้ข้อมูลการตรวจสอบความถูกต้องจากชุดข้อมูลดังนั้นแทนที่จะรับข้อมูล 10% จากส่วนหัวหรือส่วนท้ายของข้อมูลฉันใช้เวลา 2% จาก 5 คะแนนในชุดข้อมูล นั่นทำให้ข้อมูลการตรวจสอบเป็นตัวแทนของข้อมูลโดยรวมอีกเล็กน้อย


แม้ว่ามันจะเป็นคำถามเก่าและคำตอบใหม่ แต่ฉันก็ลงคะแนนนี้เพราะมันท้าทายการยืนยันที่ไร้เหตุผลว่า "K-fold มีความแม่นยำมากขึ้น
Laconic

0

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


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