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


194

มีกฎง่ายๆสำหรับวิธีการแบ่งข้อมูลที่ดีที่สุดในชุดการฝึกอบรมและการตรวจสอบ? ขอแนะนำให้แบ่ง 50/50 หรือไม่ หรือมีข้อดีที่ชัดเจนของการมีข้อมูลการฝึกอบรมเพิ่มเติมเมื่อเทียบกับข้อมูลการตรวจสอบ (หรือในทางกลับกัน)? หรือแอพพลิเคชั่นนี้ขึ้นอยู่กับทางเลือก

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


หากคุณไม่มีข้อมูลมากเกินไปให้พิจารณาen.wikipedia.org/wiki/Resampling_(statistics)#Jackknife
nair.ashvin

คำตอบ:


221

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

หากคุณมีอินสแตนซ์ทั้งหมด 100 รายการคุณอาจติดขัดกับการตรวจสอบข้ามเนื่องจากไม่มีการแยกเดี่ยวจะให้ผลต่างที่น่าพอใจในการประมาณการของคุณ หากคุณมี 100,000 อินสแตนซ์ไม่สำคัญว่าคุณจะเลือกแบ่ง 80:20 หรือ 90:10 แบ่ง (แน่นอนคุณอาจเลือกที่จะใช้ข้อมูลการฝึกอบรมน้อยลงหากวิธีการของคุณเข้มข้นโดยเฉพาะอย่างยิ่งการคำนวณ)

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

  1. แบ่งข้อมูลของคุณเป็นการฝึกอบรมและการทดสอบ (80/20 เป็นจุดเริ่มต้นที่ดีจริงๆ)
  2. แบ่งข้อมูลการฝึกอบรมออกเป็นการฝึกอบรมและการตรวจสอบ (อีกครั้ง 80/20 เป็นการแบ่งที่ยุติธรรม)
  3. สุ่มเลือกการสุ่มข้อมูลการฝึกอบรมของลักษณนามด้วยสิ่งนี้และบันทึกประสิทธิภาพในชุดการตรวจสอบความถูกต้อง
  4. ลองชุดของการทดสอบที่มีจำนวนข้อมูลการฝึกอบรมที่แตกต่างกัน: สุ่มตัวอย่าง 20% ของมัน, พูด, 10 ครั้งและสังเกตประสิทธิภาพของข้อมูลการตรวจสอบแล้วทำแบบเดียวกันกับ 40%, 60%, 80% คุณควรเห็นทั้งประสิทธิภาพที่ดีขึ้นด้วยข้อมูลที่มากขึ้น แต่ยังลดความแปรปรวนในกลุ่มตัวอย่างที่แตกต่างกัน
  5. ในการรับการจัดการกับความแปรปรวนเนื่องจากขนาดของข้อมูลทดสอบให้ทำตามขั้นตอนเดียวกันโดยย้อนกลับ อบรมเกี่ยวกับข้อมูลการฝึกอบรมทั้งหมดของคุณจากนั้นสุ่มตัวอย่างเปอร์เซ็นต์ของข้อมูลการตรวจสอบความถูกต้องของคุณหลายครั้งและสังเกตประสิทธิภาพ ตอนนี้คุณควรจะพบว่าประสิทธิภาพเฉลี่ยในตัวอย่างเล็ก ๆ ของข้อมูลการตรวจสอบของคุณนั้นใกล้เคียงกับประสิทธิภาพของข้อมูลการตรวจสอบความถูกต้องทั้งหมด แต่ความแปรปรวนนั้นสูงกว่ามากด้วยจำนวนตัวอย่างทดสอบที่น้อยลง

ขอบคุณสิ่งนี้มีประโยชน์มาก! ฉันจะลองดู FYI ฉันมีข้อมูลการฝึกอบรมประมาณ 6,000 ครั้ง ฉันใช้ SVM ดังนั้นประสิทธิภาพจึงค่อนข้างเป็นปัญหา
robguinness

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

และอินสแตนซ์ 6000 ควรจะเพียงพอที่ความแตกต่างระหว่างการใช้ 10% หรือ 20% สำหรับการทดสอบจะไม่ดีมาก (คุณสามารถยืนยันสิ่งนี้ได้โดยใช้วิธีที่ฉันอธิบาย)
Ben Allison

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

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

54

คุณจะประหลาดใจเมื่อพบว่า 80/20 นั้นเป็นอัตราส่วนที่เกิดขึ้นโดยทั่วไปมักเรียกว่าหลักการพาเรโต มันมักจะเป็นเดิมพันที่ปลอดภัยถ้าคุณใช้อัตราส่วนนั้น

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

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

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

ในบทสรุปของพวกเขาพวกเขาระบุสูตร:

การตรวจสอบความถูกต้องชุด (v) อัตราส่วนการฝึกอบรมชุด (t) ขนาด, v / t, สเกลเช่น ln (N / h-max) โดยที่ N คือจำนวนตระกูลของตัวจดจำและ h-max คือความซับซ้อนที่ใหญ่ที่สุดของตระกูลเหล่านั้น

ความซับซ้อนหมายถึงอะไร:

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

กฎข้อแรกของหัวแม่มือ (ชุด ievalidation ควรแปรผกผันกับสแควร์รูทของจำนวนพารามิเตอร์ที่ปรับค่าได้ฟรี) คุณสามารถสรุปได้ว่าถ้าคุณมีพารามิเตอร์ที่ปรับได้ 32 ตัวสแควร์รูทของ 32 คือ ~ 5.65, เศษส่วนควรเป็น 1 / 5.65 หรือ 0.177 (v / t) ควรสำรองประมาณ 17.7% สำหรับการตรวจสอบและ 82.3% สำหรับการฝึกอบรม


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

3
กฎของหัวแม่มือเหมาะสมหรือไม่ หากคุณมีพารามิเตอร์ที่ปรับได้สองตัวอัตราส่วนคือ 0.77 ซึ่งหมายความว่าคุณจะใช้ 77% สำหรับการตรวจสอบความถูกต้อง ปัญหาคือนิยามพารามิเตอร์อิสระ สำหรับ SVM เชิงเส้นคุณสามารถตั้งค่าพารามิเตอร์การลงโทษ C สำหรับคำผิดพลาดซึ่งเป็นหนึ่งพารามิเตอร์ แต่ความซับซ้อนนั้นสูงกว่ามิติ + 1 สำหรับ SVM
Reed Richards

4
ขนาดทดสอบของฉันควรเป็น 1 หรือไม่ถ้าฉันมีโครงข่ายใยประสาทเทียม .. ?
YellowPillow

51

เมื่อปีที่แล้วฉันเข้าเรียนหลักสูตรการเรียนรู้เครื่องออนไลน์ของ Andrew Ng คำแนะนำของเขาคือ:

การฝึกอบรม : 60%

การตรวจสอบข้าม : 20%

การทดสอบ : 20%


20
coursera.org/learn/deep-neural-network/lecture/cxG1s/… in the modern big data era, where, for example, you might have a million examples in total, then the trend is that your dev (cross validation) and test sets have been becoming a much smaller percentage of the total.เขาแนะนำว่าอาจเป็น 99.5: 0.25: 0.25
โนบุ

9

คุณควรคิดถึงอีกสิ่งหนึ่ง

หากคุณมีชุดข้อมูลขนาดใหญ่เช่น 1,000,000 ตัวอย่างการแบ่ง 80/10/10 อาจไม่จำเป็นเนื่องจาก 10% = 100,000 ตัวอย่างไม่จำเป็นต้องบอกว่าแบบจำลองทำงานได้ดี

บางที 99 / 0.5 / 0.5 ก็เพียงพอเพราะ 5,000 ตัวอย่างสามารถแสดงความแปรปรวนของข้อมูลส่วนใหญ่และคุณสามารถบอกได้อย่างง่ายดายว่าแบบจำลองนั้นใช้งานได้ดีโดยใช้ตัวอย่าง 5,000 ตัวอย่างในการทดสอบและพัฒนา


0.5% ในชุดการตรวจสอบอาจเพียงพอ แต่ฉันยืนยันว่าคุณมีความเสี่ยงที่ใหญ่และไม่จำเป็นเนื่องจากคุณไม่รู้ว่าเพียงพอหรือไม่ การฝึกอบรมของคุณอาจผิดพลาดได้ง่ายหากคุณใช้ชุดการตรวจสอบความถูกต้องที่มีขนาดเล็กเกินไป แต่แทบจะเป็นไปไม่ได้เลยที่จะเกิดความผิดพลาดโดยใช้ชุดการตรวจสอบความถูกต้องขนาดใหญ่
Björn Lindqvist

2

สมมติว่าคุณมีข้อมูลน้อยฉันแนะนำให้ลอง 70%, 80% และ 90% และทดสอบซึ่งให้ผลลัพธ์ที่ดีกว่า ในกรณี 90% มีโอกาสที่การทดสอบ 10% คุณจะได้รับความแม่นยำต่ำ


1

บางที 63.2% / 36.8% เป็นตัวเลือกที่สมเหตุสมผล เหตุผลก็คือหากคุณมีขนาดตัวอย่างทั้งหมดnและต้องการสุ่มตัวอย่างตัวอย่างที่มีการแทนที่ (หรือตัวอย่างใหม่เช่นในสถิติบูต) กรณีnจากกรณีเริ่มต้นnความน่าจะเป็นของแต่ละกรณีจะถูกเลือกใน ตัวอย่างใหม่จะอยู่ที่ประมาณ 0.632 โดยที่nไม่เล็กเกินไปดังที่อธิบายไว้ที่นี่: https://stats.stackexchange.com/a/88993/16263

สำหรับตัวอย่างของn = 250 ความน่าจะเป็นของแต่ละกรณีจะถูกเลือกสำหรับตัวอย่างใหม่ถึง 4 หลักคือ 0.6329 สำหรับตัวอย่างของn = 20000 ความน่าจะเป็นคือ 0.6321


1

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

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