เหตุใดจึงมีความไม่สมดุลระหว่างขั้นตอนการฝึกอบรมและขั้นตอนประเมินผล


27

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

ที่เกี่ยวข้องฉันได้เห็นตัวเลขจำนวนหนึ่งโยนไปรอบ ๆ สำหรับชุดข้อมูลที่ควรใช้สำหรับการฝึกอบรมและจำนวนการประเมินเช่น 2/3 และ 1/3 ตามลำดับ มีพื้นฐานทางทฤษฎีสำหรับการเลือกการแจกแจงแบบพิเศษหรือไม่?

คำตอบ:


15

มันตลกที่คำตอบที่ได้รับการโหวตมากที่สุดนั้นไม่ได้ตอบคำถามจริงๆ :) ดังนั้นฉันคิดว่ามันคงจะดีถ้าได้สำรองไว้กับทฤษฎีอีกเล็กน้อย - ส่วนใหญ่มาจาก"Data Mining: เครื่องมือและเทคนิคการเรียนรู้ที่ใช้งานได้จริง"และTom Mitchell "เครื่องเรียนรู้"


บทนำ.

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

Dilemma ที่เราเผชิญคือ: การค้นหา classi ที่ดีควรมี "ชุดย่อยการฝึกอบรม" ที่ใหญ่ที่สุดเท่าที่จะเป็นไปได้ แต่เพื่อให้ได้ข้อผิดพลาดที่ดีควรประเมิน "ชุดย่อยทดสอบ" ให้ใหญ่ที่สุดเท่าที่จะเป็นไปได้ สระเดียวกัน

เห็นได้ชัดว่าชุดการฝึกอบรมควรมีขนาดใหญ่กว่าชุดการทดสอบ - นั่นคือการแยกไม่ควรเป็น 1: 1 (เป้าหมายหลักคือการฝึกอบรมไม่ใช่การทดสอบ ) - แต่ไม่ชัดเจนว่าการแยกควรอยู่ที่ใด

ขั้นตอนการพัก

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

  • การสุ่มตัวอย่างแบบสุ่มซึ่งรับประกันว่าแต่ละคลาสจะถูกนำเสนออย่างถูกต้องในชุดย่อยข้อมูลทั้งหมด - ขั้นตอนนี้เรียกว่าการถือชั้น Strati ati ed
  • การสุ่มตัวอย่างแบบสุ่มด้วยกระบวนการฝึกอบรม - ทดสอบ - ตรวจสอบซ้ำแล้วซ้ำอีกซึ่งเรียกว่าการแบ่งชั้นซ้ำ

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

การตรวจสอบครอส

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

  • เราใช้ 2/3 เพื่อการฝึกอบรมและ 1/3 สำหรับการทดสอบ
  • และทำซ้ำขั้นตอนสามครั้งเพื่อที่ว่าในท้ายที่สุดทุกตัวอย่างจะถูกใช้อย่างแม่นยำเพียงครั้งเดียวสำหรับการทดสอบ

นี้เรียกว่าไตรสิกขาการตรวจสอบข้ามและถ้า Strati ไอออนบวก Fi ถูกนำมาใช้เช่นกัน (ซึ่งก็มักจะจริง) มันถูกเรียกว่าแซดไตรสิกขาการตรวจสอบข้าม

แต่แท้จริงและดูเถิดวิธีมาตรฐานไม่ได้แบ่ง 2/3: 1/3 การอ้างอิง"การทำเหมืองข้อมูล: เครื่องมือและเทคนิคการเรียนรู้ที่ใช้งานได้จริง" ,

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

ทำไม 10 เพราะ"การทดสอบ ..Extensive ในชุดข้อมูลจำนวนมากที่มีเทคนิคการเรียนรู้ที่แตกต่างกันได้แสดงให้เห็นว่า 10 เป็นเรื่องเกี่ยวกับตัวเลขทางขวาของเท่าที่จะได้รับการประมาณการที่ดีที่สุดของข้อผิดพลาดและนอกจากนี้ยังมีหลักฐานบางอย่างที่ทฤษฎีหลังนี้ขึ้น .."สวรรค์ฉัน ไม่พบการทดสอบที่ครอบคลุมและหลักฐานทางทฤษฎีที่พวกเขาต้องการ แต่นี่เป็นการเริ่มต้นที่ดีสำหรับการขุดมากขึ้น - หากคุณต้องการ

พวกเขาเพียงแค่พูดว่า

แม้ว่าข้อโต้แย้งเหล่านี้จะไม่ได้ข้อสรุปและการอภิปรายยังคงโกรธเคืองในการเรียนรู้ของเครื่องจักรและการทำเหมืองข้อมูลเกี่ยวกับสิ่งที่เป็นรูปแบบที่ดีที่สุดสำหรับการประเมินผลการตรวจสอบข้าม 10 เท่าได้กลายเป็นวิธีมาตรฐานในแง่ปฏิบัติ [... ] ยิ่งกว่านั้นไม่มีอะไรมหัศจรรย์เกี่ยวกับการตรวจสอบความถูกต้องจำนวน 10: 5-fold หรือ 20-fold มีแนวโน้มที่จะดี

Bootstrap และ - ในที่สุด! - คำตอบสำหรับคำถามเดิม

แต่เรายังไม่ได้มาถึงคำตอบว่าทำไม 2/3: 1/3 มักจะแนะนำ สิ่งที่ฉันใช้คือมันสืบทอดมาจากวิธีบูตสแตร

มันขึ้นอยู่กับการสุ่มตัวอย่างด้วยการเปลี่ยน ก่อนหน้านี้เราใส่ตัวอย่างจาก "ชุดใหญ่" ลงในชุดย่อยหนึ่งชุด Bootstraping นั้นแตกต่างกันและตัวอย่างสามารถปรากฏได้ง่ายทั้งในชุดฝึกอบรมและชุดทดสอบ

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

ตอนนี้ดูแคบ

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

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

เมื่อเราคูณความน่าจะเป็นเหล่านี้เข้าด้วยกันมันคือ(1 - 1 / n) ^ nซึ่งก็คือe ^ -1ซึ่งมีค่าประมาณ 0.3 ซึ่งหมายความว่าชุดทดสอบของเราจะอยู่ที่ประมาณ 1/3 และชุดฝึกอบรมจะอยู่ที่ประมาณ 2/3

ฉันเดาว่านี่เป็นเหตุผลว่าทำไมจึงแนะนำให้ใช้การแบ่ง 1/3: 2/3: อัตราส่วนนี้มาจากวิธีการประเมินการบูตสแตรป

ห่อมัน

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

โพรซีเดอร์ bootstrap อาจเป็นวิธีที่ดีที่สุดในการประเมินข้อผิดพลาดสำหรับชุดข้อมูลที่มีขนาดเล็กมาก อย่างไรก็ตามเช่นเดียวกับการตรวจสอบความถูกต้องแบบ cross-one-out มันมีข้อเสียที่สามารถแสดงได้โดยพิจารณาจากสถานการณ์พิเศษ [... ] ชุดข้อมูลแบบสุ่มสมบูรณ์ที่มีสองคลาส อัตราความผิดพลาดที่แท้จริงคือ 50% สำหรับกฎการทำนายใด ๆ แต่รูปแบบที่จดจำชุดการฝึกอบรมจะให้คะแนนการรีบูทที่สมบูรณ์แบบ 100% ดังนั้นการฝึกอินสแตนซ์ = 0 และบูทสแตรป 0.632 จะผสมกับ 0.368 ให้อัตราความผิดพลาดโดยรวมเพียง 31.6% (0.632 ¥ 50% + 0.368 ¥ 0%) ซึ่งเป็นแง่ดีที่ทำให้เข้าใจผิด


13

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

y = a0 + a1 * X + a2 * X ^ 2 + ... + an * X ^ m

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

ฉันขอแนะนำให้คุณลองดูตัวอย่างที่คุณมีเวกเตอร์อินพุต 1 หรือ 2 มิติ X (เพื่อให้เห็นภาพของพหุนามแบบ overfitting) และตรวจสอบว่าข้อผิดพลาดในการทำนายขนาดใหญ่สำหรับคู่ (X, y) เพียงใด แตกต่างจากค่าจากชุดฝึกอบรมเล็กน้อย

ฉันไม่รู้ว่าคำอธิบายนี้มีเหตุผลเพียงพอหรือไม่ แต่หวังว่ามันจะช่วยได้ ฉันพยายามอธิบายปัญหาของตัวแบบการถดถอยเนื่องจากฉันคิดว่ามันเข้าใจได้ง่ายกว่าคนอื่น (SVM, Neural Networks ... )

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

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


5
นี่คือคำตอบที่ดีมากสำหรับวิธี - ไม่มากสำหรับสาเหตุ แต่นั่นอาจเป็นเพียงคำถามที่ผิด - สิ่งที่เราสนใจจริงๆคือสิ่งที่ใช้สังเกตุไม่ใช่ทฤษฎี
Tamzin Blake

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

1
@winwaed คำถามคือ "ทำไมถึงมี ... ?", "ทำไมถึงเป็นเช่นนี้?" และ "มี ... หรือไม่" ทั้งหมดระบุไว้อย่างชัดเจนโดยเครื่องหมายคำถาม ฉันคุ้นเคยกับปรากฏการณ์นี้และฉันคิดว่ามันเป็นสัญชาตญาณและฉันคุ้นเคยกับตัวอย่างเชิงประจักษ์ แต่ฉันไม่รู้ว่ามันเป็นเช่นไรและดูเหมือนว่าทฤษฎีข้อมูลควรมีคำตอบสำหรับฉัน ความคิดเห็นข้างต้นเป็นเพียงการสะท้อนให้เห็นว่าคำถาม "ทำไม" ไม่เกี่ยวข้องโดยเฉพาะอย่างยิ่งเมื่อคุณมีระเบียบปฏิบัติที่ยืนยันแล้วซึ่งคุณสามารถใช้ประโยชน์ได้
Tamzin Blake

7

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


ตัวอย่างที่ดี - มันเหมือนกันมากกับสมมติฐานทางวิทยาศาสตร์ เรายังคงพูดถึงโมเดลว่าเป็นโมเดล ML เชิงสถิติหรือโมเดลของจักรวาล
winwaed

1

จนถึง @andreiser ได้ให้คำตอบที่ยอดเยี่ยมในส่วนที่สองของคำถาม OP เกี่ยวกับการแยกข้อมูลการฝึกอบรมและการทดสอบและ @niko อธิบายวิธีหลีกเลี่ยงการ overfitting แต่ไม่มีใครได้รับข้อดีของคำถาม: ทำไมใช้ข้อมูลที่แตกต่างกันสำหรับการฝึกอบรมและการประเมินผล ช่วยเราหลีกเลี่ยงการ overfitting


ข้อมูลของเราแบ่งออกเป็น:

  1. อินสแตนซ์การฝึกอบรม
  2. อินสแตนซ์การตรวจสอบ
  3. อินสแตนซ์ทดสอบ (ประเมินผล)

M

M1,...,Mn

สิ่งสำคัญคือต้องตระหนักว่าอะไรคือบทบาทที่แตกต่างของอินสแตนซ์การตรวจสอบและทดสอบ

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

ดูหน้า 222 ขององค์ประกอบของการเรียนรู้ทางสถิติ: การทำเหมืองข้อมูลการอนุมานและการทำนายสำหรับรายละเอียดเพิ่มเติม

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