จำเป็นต้องมีการสุ่มตัวอย่างแบบแบ่งชั้น (ฟอเรสต์แบบสุ่ม, Python) หรือไม่


14

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

train,test=train_test_split(myDataset, test_size=0.25, stratify=y)

คำตอบ:


13

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

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

หวังว่านี่จะช่วยได้

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