ความแม่นยำการจำแนกต่ำจะทำอย่างไรต่อไป


16

ดังนั้นฉันเป็นมือใหม่ในสาขา ML และฉันพยายามจัดหมวดหมู่ เป้าหมายของฉันคือการทำนายผลของการแข่งขันกีฬา ฉันรวบรวมข้อมูลทางประวัติศาสตร์บางอย่างแล้วและตอนนี้พยายามฝึกฝนตัวจําแนก ฉันมีตัวอย่างประมาณ 1200 ตัวอย่าง 0.2 ของพวกเขาแยกออกเพื่อวัตถุประสงค์ในการทดสอบและอื่น ๆ ที่ฉันใส่ลงในการค้นหากริด ฉันได้ลอง SVM ด้วยเมล็ดแบบเชิงเส้น rbf และโพลิโนมินัลและป่าสุ่มไปแล้ว น่าเสียดายที่ฉันไม่สามารถรับความแม่นยำมากกว่า 0.5 ได้อย่างมีนัยสำคัญ (เช่นเดียวกับการสุ่มเลือกชั้นเรียน) หมายความว่าฉันไม่สามารถคาดการณ์ผลลัพธ์ของเหตุการณ์ที่ซับซ้อนเช่นนี้ได้หรือไม่ หรือฉันสามารถรับความแม่นยำอย่างน้อย 0.7-0.8 ถ้าเป็นไปได้แล้วฉันจะดูอะไรต่อไป

  • รับข้อมูลเพิ่มเติมหรือไม่ (ฉันสามารถขยายชุดข้อมูลได้สูงสุด 5 ครั้ง)
  • ลองตัวแยกประเภทอื่นหรือไม่ (การถดถอยโลจิสติก, kNN, ฯลฯ )
  • ประเมินชุดคุณสมบัติของฉันอีกครั้ง? มี ML-tools ใดที่ต้องวิเคราะห์ซึ่งคุณสมบัติใดที่เหมาะสมและไม่ใช้ บางทีฉันควรลดชุดคุณลักษณะ (ปัจจุบันฉันมีคุณสมบัติ 12 อย่าง) หรือไม่

ความแม่นยำในการฝึกอบรมของคุณคืออะไร? และมีตัวอย่างจำนวนเท่าไหร่ในแต่ละชั้นเรียน
Leo

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

ความแม่นยำของ @Leo Training อยู่ที่ประมาณ 0.5 คลาสมีการกระจายอย่างเท่าเทียมกันฉันมีคลาส 0 และ 1
fspirit

@ cardinal ใช่ฉันพยายามทำนายผลชนะ / แพ้ไม่มีแต้มต่อ เป็นไปได้หรือไม่ที่จะพูดความแม่นยำ 0.8 ในชุดทดสอบ?
fspirit

1
@fspirit: ขึ้นอยู่กับกีฬาและความไม่เท่าเทียมกันของความสามารถระหว่างผู้เข้าร่วมสำหรับสิ่งหนึ่ง เพียงแค่รู้ว่าใครมีส่วนร่วมในการประกวดแต่ละครั้งสามารถเป็นตัวทำนายที่แข็งแกร่งได้ ที่นี่และที่นี่เป็นสองโพสต์ที่เกี่ยวข้อง
พระคาร์ดินัล

คำตอบ:


17

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

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

เมื่อต้องการทำสิ่งนี้กราฟข้อผิดพลาดการตรวจสอบและข้อผิดพลาดชุดการฝึกอบรมเป็นฟังก์ชั่นของตัวอย่างการฝึกอบรม

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

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

นี่เป็นกฎทั่วไปที่ฉันจะใช้เมื่อต้องเผชิญกับปัญหาอย่างคุณ

ไชโย


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

ไม่ฉันหมายถึงข้อผิดพลาดของชุดฝึกอบรมที่เขียน ข้อผิดพลาดในการฝึกอบรมคือจำนวนตัวอย่างที่ไม่ได้จัดประเภทในชุดการฝึกหารด้วยขนาดชุดการฝึก ข้อผิดพลาดของชุดทดสอบในทำนองเดียวกันคือจำนวนตัวอย่างที่ไม่ได้จัดประเภทในชุดทดสอบหารด้วยขนาดชุดฝึกอบรม นอกจากนี้คุณอาจต้องการตรวจสอบ Machine Learning Class ( class.coursera.org/ml-2012-002/lecture/index ) ของ Coursera โดยเฉพาะวิดีโอสำหรับ "คำแนะนำสำหรับการใช้การเรียนรู้ของเครื่อง" คำแนะนำเหล่านั้นค่อนข้างเกี่ยวข้องกับสถานการณ์ของคุณ
sjm.majewski

ฉันเข้าร่วมการแข่งขันเมื่อมีการแข่งขันเป็นครั้งแรก สำหรับข้อผิดพลาดของชุดการฝึกอบรมตอนนี้ฉันก็ส่งมันออกมาเช่นกันสำหรับ SVM มันค่อนข้างสูง - 0.5 แต่สำหรับป่าสุ่มมัน 0
fspirit

5

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

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

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


ฉันจะพยายามวาดฮิสโทแกรมและดูว่ามันจะเป็นอย่างไร
fspirit

@BGreene - ย่อหน้าที่สามของคุณนั้นยากสำหรับฉัน หากการวิเคราะห์เชิงสำรวจแสดงให้เห็นว่า Predoratory x1 มีความสัมพันธ์สูงกับผลลัพธ์มันจะไม่ทำลายจุดประสงค์ของการตรวจสอบความสัมพันธ์นั้นหรือไม่หากไม่มีการใช้ x1 เป็นอย่างน้อยผู้ทำนายที่อยู่ในแบบจำลองหลายตัวแปร?
rolando2

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

3

เป็นการดีที่คุณแยกข้อมูลของคุณออกเป็นข้อมูลการฝึกอบรมและข้อมูลการทดสอบ

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

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


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

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

ในความเป็นไปได้ที่ "คุณสมบัติแย่มาก" ฉันได้รวมกรณีที่ไม่มีวิธีแก้ไข อย่างไรก็ตามฉันสงสัยมาก ไม่มีกีฬาใดที่ฉันรู้ว่าไม่มีวิธีใดที่จะเห็นว่าคู่แข่งคนหนึ่งเป็นที่ชื่นชอบของอีกคนหนึ่ง มันเป็นไปได้แม้ในกรรไกรกระดาษหิน
Douglas Zare

1

ทำไมไม่ทำตามหลักการ "ดูที่แปลงข้อมูลก่อน" สิ่งหนึ่งที่คุณสามารถทำได้คือ 2 D scatterplot ของความหนาแน่นแบบมีเงื่อนไขสองระดับสำหรับสอง covariates หากคุณมองไปที่สิ่งเหล่านี้และเห็นว่าไม่มีการแบ่งแยกที่สามารถบ่งบอกถึงการขาดความสามารถในการคาดเดาได้และคุณสามารถทำสิ่งนี้กับเพื่อนร่วมทุนทุกคน ที่ให้แนวคิดบางอย่างเกี่ยวกับความสามารถในการใช้โควาเรียตเหล่านี้เพื่อทำนาย หากคุณเห็นว่ามีความหวังว่าตัวแปรเหล่านี้สามารถแยกจากกันเล็กน้อยจากนั้นเริ่มคิดเกี่ยวกับการเลือกปฏิบัติเชิงเส้นการเลือกปฏิบัติกำลังสองการเลือกปฏิบัติเคอร์เนล, การทำให้เป็นปกติ, การจำแนกต้นไม้, SVM เป็นต้น


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