ฉันวิ่งป่าสุ่ม 4,500 ครั้งข้ามคืนด้วยการตั้งค่าพารามิเตอร์แบบสุ่ม:
ปัญหาการถดถอยYsignal = x1^2+sin(x2*pi) + x3 * x4 + x5
ที่xมีการสุ่มตัวอย่างอิสระจากการแจกแจงแบบปกติ sd = 1, mean = 1
Ytotal = Ysignal + Yerror
ที่ไหน Yerror = rnorm(n.observations,sd=sd(Ysignal))*noise.factor
theoretical.explainable.variance"TEV" = var(Ysignal= / var(Ytotal)
randomForest.performance = explained.variance(OOB cross-validation) / TEV
ชุดข้อมูลถูกสุ่มตัวอย่างจากปัญหาการถดถอยและเพิ่มสัญญาณรบกวน
n.obsเป็นตัวเลขสุ่มระหว่าง 1,000 ถึง 5,000
n.extra.dummy.variablesระหว่าง 1 ถึง 20
ntree เสมอ 1,000
sample_replacement เสมอ true
mtryเป็น 5-25 จำกัด โดยn.obs
noise.factorระหว่าง 0 และ 9
samplesize.ratio ตัวเลขสุ่มระหว่าง 10% ถึง 100% ขนาดอัตราส่วนของ bootstrap แต่ละตัว
ทุกรุ่นได้รับการฝึกฝนเช่นนี้ rfo = randomForest(x=X, y=Ytotal, <more args>)
randomForest.performanceความสามารถในการอธิบายถึงส่วนที่สูงที่สุดของTEVการเพิ่มขึ้นของทั่วไปเมื่อsamplesizeลดเมื่อTEVเป็นน้อยกว่า 50% และลดลงเมื่อTEVสูงกว่า 50%
ดังนั้นหากrandomForest-modelfitรายงานของคุณเช่น 15% อธิบายความแปรปรวนโดย OOB-CV และนี่คือความแม่นยำของโมเดลที่ยอมรับได้สำหรับคุณคุณอาจปรับแต่งประสิทธิภาพได้สูงขึ้นเล็กน้อยโดยลดsampsizeจำนวนการสังเกตให้ntree > 1000เหลือหนึ่งในสาม
กำลังใจในการทำงาน : สำหรับข้อมูลที่มีเสียงดังมากจะดีกว่าการตัดต้นไม้ที่มีความสัมพันธ์มากกว่าการลดอคติโดยการปลูกต้นไม้ที่มีขนาดสูงสุด