ทดสอบความแม่นยำสูงกว่าการฝึก จะตีความอย่างไร


23

ฉันมีชุดข้อมูลที่มีตัวอย่างไม่เกิน 150 รายการ (แบ่งเป็นการฝึกอบรม & ทดสอบ) พร้อมคุณสมบัติมากมาย (สูงกว่า 1,000) ฉันต้องเปรียบเทียบตัวแยกประเภทและวิธีการเลือกคุณสมบัติที่ทำงานได้ดีกับข้อมูล ดังนั้นฉันใช้วิธีการจำแนกสามประเภท (J48, NB, SVM) และ 2 วิธีการเลือกคุณสมบัติ (CFS, WrapperSubset) ด้วยวิธีการค้นหาที่แตกต่างกัน (Greedy, BestFirst)

ในขณะที่การเปรียบเทียบฉันกำลังดูความแม่นยำในการฝึกอบรม (5-fold cross-fold) และความแม่นยำในการทดสอบ

นี่คือหนึ่งในผลลัพธ์ของ J48 และ CFS-BestFirst:

{"ความแม่นยำการฝึกอบรม": 95.83, "ความแม่นยำการทดสอบ": 98.21}

ผลลัพธ์จำนวนมากเป็นเช่นนี้และใน SVM มีผลลัพธ์หลายอย่างที่ระบุว่าความแม่นยำในการทดสอบนั้นสูงกว่าการฝึกอบรมมาก (การฝึกอบรม: 60% การทดสอบ: 98%)

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

ฉันมีการฝึกอบรม 73 & 58 กรณีทดสอบ บางคำตอบไม่มีข้อมูลนี้เมื่อโพสต์

คำตอบ:


20

ฉันคิดว่าขั้นตอนแรกคือการตรวจสอบว่าการฝึกอบรมและการทดสอบที่รายงานนั้นถูกต้องจริงหรือไม่

  • การแยกระหว่างการตรวจสอบความถูกต้องไขว้ 5 เท่านั้นกระทำในลักษณะที่ให้ผลผลิตชุดฝึกอบรม cv train / อิสระทางสถิติหรือไม่? เช่นถ้ามีการวัดซ้ำในข้อมูลพวกเขาจะอยู่ในชุดเดียวกันเสมอหรือไม่?
  • ความถูกต้อง 95.83% ใน 5 เท่าของ 150 ตัวอย่างสอดคล้องกับ 5 ตัวอย่างจากการฝึกอบรม 130 ตัวอย่างสำหรับตัวแทนจำลอง 5 คนหรือกรณีผิด 25 ครั้งสำหรับตัวอย่างฝึกอบรม 5 * 130 ตัวอย่าง
  • ความแม่นยำในการทดสอบ 98.21% นั้นยากที่จะอธิบายได้มากขึ้น: ระหว่างการทดสอบ cv หนึ่งครั้งแต่ละกรณีควรทดสอบหนึ่งครั้ง ดังนั้นตัวเลขที่อาจรายงานได้ควรอยู่ในขั้นตอน 100% / 150 98.21% ตรงกับกรณีที่ผิด 2.68 (2 และ 3 ผิดจากกรณีทดสอบ 150 ให้ความแม่นยำ 98.67 และ 98.00% ตามลำดับ)

  • หากคุณสามารถแยกโมเดลของคุณคำนวณความถูกต้องที่รายงานภายนอก

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

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

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

ขั้นตอนที่สองคือดูว่าความแตกต่างที่สังเกตได้สำหรับการแยกทางสถิติอย่างมีความหมายมีความหมายหรือไม่ @mbq ชี้ให้เห็นแล้ว

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


มีข้อมูลที่ดีที่นี่เพื่อแยกแยะ ประการแรกฉันเสียใจมากที่ฉันไม่ได้ให้ตัวเลขที่แน่นอนเนื่องจากฉันไม่ได้คาดหวังว่าคุณจะได้ตัวเลขที่มีรายละเอียดมากและฉันก็ต้องการที่จะมุ่งเน้นไปที่หัวข้อเดียวเท่านั้น อย่างไรก็ตามฉันมีข้อมูลการฝึกอบรม 73 รายการและการทดสอบ 58 รายการ สิ่งเหล่านี้ไม่ได้แยกจากกันทางสถิติพวกเขาถูกฉันจับในเวลาที่ต่างกัน ตัวอย่างการฝึกอบรมจะถูกนำมาใช้เป็นอัลกอริธึมการเลือกคุณลักษณะ (วิธี wrapper fs ยังมีภายใน 5 เท่าของ cv) จากนั้น 5-fold'ed และความแม่นยำที่ดีที่สุดจะถูกนำมาและรูปแบบจะถูกบันทึกไว้ จากนั้นแบบจำลองนั้นจะใช้สำหรับการคำนวณความแม่นยำในการทดสอบ
ercu

16

ความแม่นยำในชุดฝึกอบรมไม่สมเหตุสมผลในการเรียนรู้ของเครื่อง ไม่ต้องสนใจมัน


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

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

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

คุณช่วยอธิบายได้ไหม
INF

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

6

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


3

สมมติว่าไม่มีความผิดพลาดในการใช้อัลกอริทึมให้เราดูปัญหา

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

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


1

คุณมีคุณสมบัติมากเกินไป (1,000) สำหรับจำนวนตัวอย่างที่คุณมี (150) คุณต้องเพิ่มตัวอย่างของคุณหรือลดจำนวนคุณสมบัติ

พวกเขาบอกว่าโดยปกติแล้วจำนวนคุณสมบัติ ^ 2 = จำนวนตัวอย่างที่ต้องการ ดังนั้นคุณต้องมีอย่างน้อยล้านตัวอย่าง


0

ที่สามารถเกิดขึ้นได้โดยใช้อัลกอริทึม ML และแม้แต่ตัวแยกประเภทที่กำหนดเอง ลองใช้รูปแบบการตรวจสอบความถูกต้องของ k-fold อื่น ๆ เช่น 2 หรือ 10 fold เช่นกัน ด้วยค่า k ที่สูงขึ้นคาดว่าข้อผิดพลาดในการทดสอบจะลดลง

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