จำนวนต้นไม้ที่เหมาะสมในป่าสุ่มขึ้นอยู่กับจำนวนผู้ทำนายหรือไม่?


46

ใครสามารถอธิบายได้ว่าทำไมเราต้องมีต้นไม้จำนวนมากในป่าสุ่มเมื่อจำนวนผู้ทำนายมีมาก เราจะกำหนดจำนวนต้นไม้ที่เหมาะสมได้อย่างไร?

คำตอบ:


70

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

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

หน้าอย่างเป็นทางการของอัลกอริทึมระบุว่าป่าสุ่มไม่ overfit และคุณสามารถใช้เป็นต้นไม้มากที่สุดเท่าที่คุณต้องการ แต่ Mark R. Segal (14 เมษายน 2004 "มาตรฐานการเรียนรู้ของเครื่องและการถดถอยป่าแบบสุ่ม" ศูนย์ชีวสารสนเทศและชีวโมเลกุล) พบว่ามันเหมาะกับชุดข้อมูลที่มีเสียงดัง ดังนั้นเพื่อให้ได้จำนวนที่เหมาะสมคุณสามารถลองฝึกอบรมป่าสุ่มในตารางของntreeพารามิเตอร์ (ที่เรียบง่าย แต่ CPU นานมากกว่า) หรือสร้างหนึ่งป่าสุ่มที่มีต้นไม้จำนวนมากที่มีkeep.inbagการคำนวณออกจากถุง (OOB) อัตราความผิดพลาดครั้งแรกต้นไม้ (โดยที่เปลี่ยนจากเป็น) และพล็อตอัตราความผิดพลาด OOB เทียบกับจำนวนต้นไม้ (ซับซ้อนมากขึ้น แต่ใช้ CPU น้อยลง)nn1ntree


-2

ตามบทความนี้

พวกเขาแสดงให้เห็นว่าป่าสุ่มควรจะมีจำนวนต้นระหว่าง64-128 ต้นไม้ ด้วยสิ่งนี้คุณควรมีความสมดุลที่ดีระหว่าง ROC AUC และเวลาในการประมวลผล


10
ดูเหมือนแปลกที่ไม่มีการพึ่งพาในผลลัพธ์ของพวกเขากับจำนวนของคุณสมบัติในชุดข้อมูล ...
naught101

-5

ฉันต้องการเพิ่มสิ่งที่ถ้าคุณมีมากกว่า 1,000 ฟีเจอร์ที่คุณและ 1,000 แถวคุณไม่สามารถใช้จำนวนต้นไม้แบบ rondom ได้

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

ถ้าคุณใช้ sikit learn ใน python คุณมีตัวเลือกที่n_jobs=-1จะใช้ทุกขั้นตอน แต่ค่าใช้จ่ายในแต่ละแกนจะต้องมีการคัดลอกข้อมูลหลังจากนั้นคุณสามารถใช้สูตรนี้ได้

ntree = sqrt (จำนวนแถว * จำนวนคอลัมน์) / numberofcpu


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