จะหลีกเลี่ยงการ overfitting ในป่าสุ่มได้อย่างไร


11
  1. ฉันต้องการหลีกเลี่ยง overfitting ในป่าสุ่ม ในเรื่องนี้ฉันตั้งใจจะใช้ mtry, nodesize และ maxnodes เป็นต้นคุณช่วยฉันเลือกค่าสำหรับพารามิเตอร์เหล่านี้ได้ไหม? ฉันกำลังใช้อาร์

  2. นอกจากนี้ถ้าเป็นไปได้โปรดบอกฉันว่าฉันสามารถใช้การตรวจสอบความถูกต้องข้ามของ k-fold สำหรับฟอเรสต์แบบสุ่ม (ใน R) ได้อย่างไร

คำตอบ:


7

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

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

> library(caret)
> 
> data(iris)
> 
> tr <- trainControl(method = "cv", number = 5)
> 
> train(Species ~ .,data=iris,method="rf",trControl= tr)
Random Forest 

150 samples
  4 predictor
  3 classes: 'setosa', 'versicolor', 'virginica' 

No pre-processing
Resampling: Cross-Validated (5 fold) 

Summary of sample sizes: 120, 120, 120, 120, 120 

Resampling results across tuning parameters:

  mtry  Accuracy  Kappa  Accuracy SD  Kappa SD  
  2     0.96      0.94   0.04346135   0.06519202
  3     0.96      0.94   0.04346135   0.06519202
  4     0.96      0.94   0.04346135   0.06519202

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was mtry = 2. 

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

ฟังดูเหมือนคำถามที่แตกต่างสำหรับโพสต์ - ความแตกต่างนั้นมีมากมายเมื่อคุณเรียกใช้สิ่งต่าง ๆ เช่นการเลือกคุณสมบัติแบบเรียกซ้ำโดยใช้อัลกอริทึมที่คุณเลือกในคาเร็ต
เดวิด

@David คุณหมายถึงอะไร "ซึ่งไม่จำเป็นต้องเป็นกรณีสำหรับสิ่งที่ผิดพลาด" คุณหมายความว่าการประมาณราคาถุงไม่ใช่วิธีที่ดีในการหลีกเลี่ยงการใส่ถุงมากเกินไปหรือไม่?
Pierre

5

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

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


4

นี่คือลิงค์ที่ดีในที่บน stackexchange /stats/111968/random-forest-how-to-handle-overfittingอย่างไรก็ตามประสบการณ์โดยทั่วไปของฉันมีความลึกมากกว่ารุ่นมีแนวโน้มมากกว่า เพื่อ overfit


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

0

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

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