ชุดทดสอบและชุดการตรวจสอบแตกต่างกันอย่างไร


431

ฉันพบว่าสิ่งนี้เกิดความสับสนเมื่อฉันใช้กล่องเครื่องมือโครงข่ายใยประสาทใน Matlab
มันแบ่งข้อมูลดิบที่กำหนดเป็นสามส่วน:

  1. ชุดฝึกอบรม
  2. ชุดการตรวจสอบความถูกต้อง
  3. ชุดทดสอบ

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

คำถามของฉันคือ:

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

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

@mpiktas คุณอ้างถึงบท "การประเมินและคัดเลือกแบบจำลอง" หรือไม่?
Celdor

2
ใช่. หมายเลขหน้ามาจากฉบับพิมพ์ครั้งที่ 5
mpiktas

13
@mpiktas เป็นจุดบน นี่คือข้อความที่เกิดขึ้นจริง:The training set is used to fit the models; the validation set is used to estimate prediction error for model selection; the test set is used for assessment of the generalization error of the final chosen model. Ideally, the test set should be kept in a “vault,” and be brought out only at the end of the data analysis.
อรุณ

1
ฉันชอบคำอธิบายของ Jason Brownleeเช่นกัน
delrocco

คำตอบ:


254

โดยปกติการเรียนรู้แบบมีผู้สอนคุณต้องมีชุดข้อมูลสองประเภท

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

  2. ข้อมูลที่คุณจะใช้กับโมเดลของคุณ ในหลายกรณีนี่คือข้อมูลที่คุณสนใจสำหรับผลลัพธ์ของแบบจำลองของคุณและคุณยังไม่มีผลลัพธ์ "คาดหวัง" ที่นี่

ในขณะที่ทำการเรียนรู้ของเครื่องคุณต้องทำสิ่งต่อไปนี้:

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

ขั้นตอนการตรวจสอบมักจะแบ่งออกเป็นสองส่วน :

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

ดังนั้นการแยกไปยัง 50/25/25

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

ดูคำถามนี้ด้วย


21
เหตุใดฉันจึงไม่เลือกแบบจำลองที่มีประสิทธิภาพดีที่สุดตามชุดการทดสอบกำจัดชุดการตรวจสอบออกทั้งหมด?
Sebastian Graf

4
มันเป็นเพราะการใส่มากเกินไป? หรือเพราะเราต้องการสถิติอิสระบางส่วนจากผลการทดสอบเพื่อการประมาณข้อผิดพลาด?
Sebastian Graf

12
@Sebastian [หากคุณใช้เฉพาะชุดทดสอบ:] "ข้อผิดพลาดชุดทดสอบของรุ่นที่เลือกขั้นสุดท้ายจะประมาทข้อผิดพลาดในการทดสอบจริงซึ่งบางครั้งมีนัยสำคัญ" [Hastie et al]
user695652

23
ชุดการตรวจสอบความถูกต้องมักจะใช้เพื่อปรับพารามิเตอร์ไฮเปอร์ ตัวอย่างเช่นในชุมชนการเรียนรู้ลึกการปรับขนาดเลเยอร์เครือข่ายหมายเลขหน่วยที่ซ่อนคำศัพท์การทำให้เป็นมาตรฐาน (
W1 Lether

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

263

ชุดการฝึกอบรม:ชุดของตัวอย่างที่ใช้สำหรับการเรียนรู้: เพื่อให้พอดีกับพารามิเตอร์ของตัวจําแนกในกรณี Multilayer Perceptron (MLP) เราจะใช้ชุดการฝึกอบรมเพื่อค้นหาตุ้มน้ำหนักที่“ เหมาะสมที่สุด” กับกฎการถอยกลับ

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

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

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

ที่มา: การวิเคราะห์รูปแบบเบื้องต้น, Ricardo Gutierrez-OsunaTexas A&M University, Texas A&M University


42
+1 สำหรับ "คุณต้องไม่ปรับโมเดลอีกต่อไป!"
stmax

6
อะไรคือความแตกต่างระหว่าง "พอดีกับพารามิเตอร์" และ "ปรับพารามิเตอร์"
Metariat

18
@stmax ไม่ต้องอวดดี แต่เมื่อเรามีข้อผิดพลาดในการทดสอบขั้นสุดท้ายและเราไม่พอใจกับผลลัพธ์เราจะทำอย่างไรถ้าเราไม่สามารถปรับโมเดลของเราได้อีกต่อไป ... ฉันสงสัยเกี่ยวกับกรณีนี้บ่อยครั้ง
Spacey

5
@Tarantula คุณสามารถปรับรุ่นต่อไปได้ แต่คุณจะต้องรวบรวมชุดทดสอบใหม่ แน่นอนว่าไม่มีใครทำอย่างนั้น;) แต่การละเมิดที่ (โดยเฉพาะเมื่อคุณทำซ้ำหลายครั้ง) อาจนำไปสู่แบบจำลองของคุณเหมาะสมกับชุดทดสอบ - ซึ่งส่งผลให้คะแนนไม่สมจริง / มองโลกในแง่ดีเกินไป
stmax

4
ฉันคิดว่าระบบการตั้งชื่อนี้ทำให้เกิดความสับสน คุณถูกต้องที่จะพูดว่า "คุณจะต้องไม่ปรับรุ่นใด ๆ เพิ่มเติม" หลังจากใช้ชุดทดสอบ แต่ ... พื้นที่ที่คุณต้องการจะทำคืออะไร? หยุดทำงานหรือ ในความเป็นจริงคุณต้องมีชุดทดสอบทั้งหมด 1: ชุดการตรวจสอบความถูกต้อง - ใช้สำหรับปรับแต่งแบบจำลอง 2: ชุดทดสอบใช้เพื่อประเมินแบบจำลองและดูว่าคุณควรกลับไปที่กระดานวาดภาพหรือไม่ 3: ชุดทดสอบแบบ Super ใช้ขั้นตอนวิธีสุดท้ายขั้นสุดท้ายเพื่อดูว่า ดีมันคือ 4: ชุดการทดสอบแบบไฮเปอร์ใช้หลังจากนักวิจัยได้พัฒนาอัลกอริทึม MNIST เป็นเวลา 10 ปีเพื่อดูว่าพวกเขามีความคลั่งไคล้มากเกินไป ... ฯลฯ ฯลฯ อย่างไร
Timmmm

66

ประสบการณ์ 5 ปีด้านวิทยาการคอมพิวเตอร์สอนให้ฉันรู้ว่าไม่มีอะไรดีไปกว่าความเรียบง่าย

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

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

++ ชุดการตรวจสอบข้าม (20% ของชุดข้อมูลดั้งเดิม): ชุดข้อมูลนี้ใช้เพื่อเปรียบเทียบประสิทธิภาพของอัลกอริทึมการทำนายที่สร้างขึ้นตามชุดฝึกอบรม เราเลือกอัลกอริทึมที่มีประสิทธิภาพดีที่สุด

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

หมายเหตุ:

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

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


1
มันง่ายและสับสนในการอ้างถึงฉากเป็นฉากและในทางกลับกัน
Matt O'Brien

2
@innovIsmail จะเกิดอะไรขึ้นถ้าฉันข้ามขั้นตอนการตรวจสอบความถูกต้อง ว่าฉันมีอัลกอริทึมมากมายและฉันฝึกพวกเขาในชุดรถไฟจากนั้นฉันก็ใช้มันทั้งหมดกับชุดทดสอบจากนั้นฉันเลือกอันที่มีประสิทธิภาพดีที่สุดในชุดทดสอบ
KevinKim

3
ฟังดูเหมือนว่าคุณจะแค่ข้ามขั้นตอนทดสอบไปแล้ว
Mihai Danila

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

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

33

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

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

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

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

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

1มันมักจะเป็นประโยชน์ในการเข้าไปในแต่ละขั้นตอนด้วยสมมติฐาน (สมมติฐานว่าง) ว่าตัวเลือกทั้งหมดจะเหมือนกัน (เช่นพารามิเตอร์ทั้งหมดจะเหมือนกันหรืออัลกอริทึมทั้งหมดเหมือนกัน) ดังนั้นการอ้างอิงของฉันไปยังการกระจาย

2ภาพนี้ไม่ใช่ของฉันเอง ฉันนำมาจากเว็บไซต์นี้: http://www.teamten.com/lawrence/writings/bell-curve.png


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

ในคำถาม: ถ้าฉันต้องการค้นหา RandomForest (RF) ที่ดีที่สุดและทำท่าว่ามีพารามิเตอร์ไฮเปอร์เดียวของ RF ซึ่งก็คือจำนวนต้นไม้ (N) จากนั้นในขั้นตอนที่ 1 ฉันใช้ RF จำนวนมากที่มี N ต่างกันเพื่อสร้างป่า ; ในขั้นตอนที่ 2 ให้ใช้พวกเขาในการทดสอบการตรวจสอบความถูกต้องและเลือก RF ด้วย N * ที่ให้ข้อผิดพลาดน้อยที่สุดในการทดสอบการตรวจสอบความถูกต้องจากนั้นในขั้นตอนที่ 3 ฉันใช้ RF กับ N * กับชุดการทดสอบ N * แต่ฉันสามารถใช้ RFs ทั้งหมดกับชุดทดสอบและเลือกข้อผิดพลาดในการทดสอบที่ต่ำที่สุดซึ่งอาจไม่ใช่ N * ถ้าอย่างนั้นจุดตรวจสอบความถูกต้องจะทำอย่างไร
KevinKim

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

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

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

21

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


1
ดังนั้นคุณจึงไม่สนับสนุนการตรวจสอบข้ามผ่านการแยกชุดข้อมูลขนาดใหญ่สำหรับการทดสอบ / ตรวจสอบแบบจำลองการทำนาย?
OFish

9
ไม่เว้นแต่ชุดข้อมูลมีขนาดใหญ่มากหรืออัตราส่วนสัญญาณต่อสัญญาณรบกวนมีค่าสูง การตรวจสอบความถูกต้องไขว้ไม่แม่นยำเท่า bootstrap ในประสบการณ์ของฉันและไม่ได้ใช้ขนาดตัวอย่างทั้งหมด ในหลายกรณีคุณต้องทำการตรวจสอบซ้ำอีกครั้ง 50-100 ครั้งเพื่อให้ได้ความแม่นยำที่เพียงพอ แต่ในชุดข้อมูลของคุณมีอาสาสมัครมากกว่า 20,000 คนวิธีการง่ายๆเช่นการตรวจสอบแยกตัวอย่างมักจะตกลง
Frank Harrell

2
ดีจริง ๆ ที่รู้! ขอบคุณ และมาจากคุณนั่นคือ "แหล่งข้อมูล" ที่ยอดเยี่ยม ไชโย!
OFish

1
การตรวจสอบตัวอย่างแยกมักจะทำงานได้ดีกว่า bootstrapping ที่เข้มงวด สร้างรูปลักษณ์ bootstrap ภายนอกที่ทำซ้ำขั้นตอนการเรียนรู้ภายใต้การดูแลทั้งหมด (ขั้นตอนทั้งหมดที่ใช้ Y) รูปแบบการมองโลกในแง่ดีของ Efron-Gong นั้นประมาณว่าแบบจำลองการทำนายนั้นแยกจากกันในข้อมูลที่ไม่ได้เห็นโดยอัลกอริทึมโดยไม่ต้องเก็บข้อมูลไว้
Frank Harrell

1
ใช่ให้ความสำคัญกับการทำซ้ำ มันเป็นการแยกเดี่ยวที่มีปัญหา
Frank Harrell

13

งานการเรียนรู้ของเครื่องทั่วไปสามารถมองเห็นได้เป็นวงซ้อนต่อไปนี้

while (error in validation set > X) {
    tune hyper-parameters
    while (error in training set > Y) {
        tune parameters
    }
}

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

กล่าวอีกนัยหนึ่งชุดการตรวจสอบความถูกต้องเป็นชุดฝึกอบรมสำหรับมนุษย์


9

วิธีหนึ่งในการคิดชุดสามชุดนี้คือสองชุด ( trainingและvalidation) มาจากอดีตในขณะที่testชุดมาจาก "อนาคต" แบบจำลองควรสร้างและปรับแต่งโดยใช้ข้อมูลจาก "อดีต" ( training/ validationdata) แต่ไม่ควรใช้testข้อมูลที่มาจาก "อนาคต"

เพื่อเป็นตัวอย่างในทางปฏิบัติสมมติว่าเรากำลังสร้างแบบจำลองเพื่อทำนายว่าผู้เล่นเบสบอลจะทำอย่างไรในอนาคต เราจะใช้ข้อมูลจาก 1899-2014 เพื่อสร้างtestและvalidationตั้ง เมื่อแบบจำลองถูกสร้างและปรับข้อมูลเหล่านั้นเราจะใช้ข้อมูลจากปี 2015 (จริง ๆ แล้วในอดีต!) เป็นชุดทดสอบซึ่งจากมุมมองของแบบจำลองนั้นดูเหมือนว่าข้อมูล "อนาคต" และไม่มีผลต่อการสร้างแบบจำลอง . (เห็นได้ชัดว่าในทางทฤษฎีเราสามารถรอข้อมูลจากปี 2559 ถ้าเราต้องการจริงๆ!)

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


4
หลังจากอ่านคำตอบอื่น ๆ ทั้งหมดคำตอบนี้ทำให้ "คลิก" สำหรับฉัน! คุณฝึกกับชุดรถไฟตรวจสอบว่าคุณไม่ได้ใช้ชุดการตรวจสอบความถูกต้องมากเกินไป (และรูปแบบและพารามิเตอร์หลายมิติทำงานกับ "ข้อมูลที่ไม่รู้จัก") จากนั้นคุณประเมินด้วยชุดทดสอบ - "ข้อมูลใหม่" - ไม่ว่าคุณจะ มีพลังในการทำนาย .. !
stolsvik

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

7

อัลกอริทึมการขุดข้อมูลที่อยู่ภายใต้การดูแลส่วนใหญ่ทำตามสามขั้นตอนเหล่านี้:

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

4

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

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

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


2

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

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


-1

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


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