การสุ่มป่าเทียบกับการถดถอย


21

ฉันใช้โมเดลการถดถอย OLS ในชุดข้อมูลที่มี 5 ตัวแปรอิสระ ตัวแปรอิสระและตัวแปรตามมีทั้งต่อเนื่องและเกี่ยวข้องเชิงเส้น R Square อยู่ที่ประมาณ 99.3% แต่เมื่อฉันเรียกใช้เดียวกันโดยใช้ฟอเรสต์แบบสุ่มใน R ผลลัพธ์ของฉันคือ '% Var อธิบาย: 88.42' เหตุใดผลการสุ่มป่าจึงต่ำกว่าการถดถอย สมมติฐานของฉันคือป่าสุ่มจะดีเท่ากับ OLS regression


4
หากเป้าหมายของคุณคือคาดการณ์ R-square ที่สูงขึ้นอาจเนื่องมาจากการฟิตเกินไป ลองเปรียบเทียบการทำนาย RN กับการทำนายการถดถอยโดยใช้การตรวจสอบความถูกต้องข้าม
Manoel Galdino

คำตอบ:


27

ฉันไม่รู้ว่าคุณทำอะไรอย่างนั้นดังนั้นซอร์สโค้ดของคุณจะช่วยให้ฉันเดาได้น้อยลง

ฟอเรสต์แบบสุ่มจำนวนมากเป็นหน้าต่างที่อยู่ภายในซึ่งค่าเฉลี่ยจะถือว่าเป็นตัวแทนของระบบ มันเป็นต้นไม้ CAR ที่ได้รับเกียรติมากเกินไป

ให้บอกว่าคุณมีต้นไม้ CAR สองใบ ข้อมูลของคุณจะถูกแบ่งออกเป็นสองกอง เอาท์พุท (คงที่) ของแต่ละกองจะเป็นค่าเฉลี่ย

ตอนนี้ให้ทำ 1,000 ครั้งด้วยชุดย่อยของข้อมูล คุณจะยังคงมีภูมิภาคที่ไม่ต่อเนื่องพร้อมผลผลิตที่เป็นค่าเฉลี่ย ผู้ชนะใน RF คือผลลัพธ์ที่พบบ่อยที่สุด นั่นเป็นเพียง "ฟัซซี่" ชายแดนระหว่างหมวดหมู่

ตัวอย่างเอาต์พุตเชิงเส้นแบบทวนเข็มของต้นไม้ CART:

ตัวอย่างเช่นสมมติว่าฟังก์ชั่นของเราคือ y = 0.5 * x + 2 เนื้อเรื่องที่ดูเหมือนดังต่อไปนี้: รูปที่ 1

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

พล็อตกับรถเข็นเล็ก ๆ น้อย ๆ

ถ้าเราจะทำสิ่งนี้อีกครั้งด้วยใบไม้บนต้นไม้รถเข็นมากขึ้นเราอาจได้รับสิ่งต่อไปนี้: ป้อนคำอธิบายรูปภาพที่นี่

ทำไมต้องเป็นป่ารถยนต์?

คุณจะเห็นได้ว่าในขอบเขตที่ไม่มีที่สิ้นสุดทำให้แผนภูมิ CART เป็นตัวประมาณที่ยอมรับได้

ปัญหาคือว่าโลกแห่งความจริงมีเสียงดัง เราชอบที่จะคิดในวิธีการ แต่โลกชอบทั้งแนวโน้มกลาง (หมายถึง) และแนวโน้มของการเปลี่ยนแปลง (std dev) มีเสียงดัง

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

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

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

เส้นด้านล่าง:

คุณต้องมีกิ่งจำนวนมากต่อต้นเพื่อให้สามารถประมาณฟังก์ชั่นเชิงเส้นได้ดี

มี "แป้นหมุน" จำนวนมากที่คุณสามารถเปลี่ยนเพื่อส่งผลกระทบต่อคำตอบและไม่น่าเป็นไปได้ที่คุณจะตั้งค่าทั้งหมดเป็นค่าที่เหมาะสม

อ้างอิง:


การถดถอยของป่า RANDOM ไม่ได้ดำเนินการกับฟังก์ชั่นค่าคงที่ทีละชิ้นซึ่งเห็นได้ชัดว่าเหมาะสมกับข้อมูลเชิงเส้นที่เกี่ยวข้อง?
seanv507

ฉันคิดว่าเรากำลังพูดในสิ่งเดียวกัน ใช้ค่าคงที่ใด ขวา.
EngrStudent - Reinstate Monica

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

@ seanv507 ประโยชน์ของ RF คือต้นไม้หลายต้นที่พอดีกับ (ส่วนย่อยแบบสุ่ม) ของข้อมูลที่รบกวนการทำงานของรุ่นโดยเฉลี่ยจากความไม่ต่อเนื่อง ผลที่ได้คือการประมาณที่ดีกว่ากับเส้นเรียบที่อยู่ใต้ต้นไม้ที่จะสร้าง
Hong Ooi

มันเป็นหลัก bootstrap resampling บนต้นไม้การถดถอย หนึ่งในสิ่งที่ฉันไม่ชอบเกี่ยวกับ bootstrap ก็คือการแจกแจงแบบสม่ำเสมอนับเป็นข้อมูลที่มีมาก่อน ไม่ใช่กรณีที่เหมาะอย่างยิ่งที่ไม่ใช่ข้อมูลมาก่อนหรือไม่?
EngrStudent - Reinstate Monica

7

ฉันสังเกตเห็นว่านี่เป็นคำถามเก่า แต่ฉันคิดว่าควรจะเพิ่มอีก ในฐานะที่เป็น @Manoel Galdino กล่าวในความคิดเห็นที่มักจะมีความสนใจในการทำนายข้อมูลที่มองไม่เห็น แต่คำถามนี้เป็นเรื่องเกี่ยวกับประสิทธิภาพการทำงานบนข้อมูลการฝึกอบรมและคำถามคือทำไมป่าสุ่มดำเนินการไม่ดีเกี่ยวกับข้อมูลการฝึกอบรม ? คำตอบนั้นเน้นปัญหาที่น่าสนใจด้วยตัวแยกประเภทแบบถุงซึ่งมักทำให้ฉันเดือดร้อน: การถดถอยของค่าเฉลี่ย

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

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

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

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

คุณจะเห็นรูปแบบเดียวกันสำหรับการคาดการณ์ข้อมูลที่มองไม่เห็นเมื่อมีการใช้ฟอเรสต์แบบสุ่มสำหรับการถดถอย ฉันไม่แน่ใจว่าจะหลีกเลี่ยงได้อย่างไร randomForestฟังก์ชั่นในการวิจัยมีตัวเลือกการแก้ไขอคติน้ำมันดิบcorr.biasที่ใช้ในการถดถอยเชิงเส้นอคติ แต่มันไม่ได้ทำงานจริงๆ

ข้อเสนอแนะยินดีต้อนรับ!

beta <- runif(5)
x <- matrix(rnorm(500), nc=5)
y <- drop(x %*% beta)
dat <- data.frame(y=y, x1=x[,1], x2=x[,2], x3=x[,3], x4=x[,4], x5=x[,5])
model1 <- lm(y~., data=dat)
model2 <- randomForest(y ~., data=dat)
pred1 <- predict(model1 ,dat)
pred2 <- predict(model2 ,dat)
plot(y, pred1)
points(y, pred2, col="blue")

ป้อนคำอธิบายรูปภาพที่นี่


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

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

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

2

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


0

ฉันคิดว่า Random Forest (RF) เป็นเครื่องมือที่ดีเมื่อรูปแบบการทำงานของความสัมพันธ์ระหว่าง X และ y นั้นซับซ้อน (เนื่องจากความสัมพันธ์แบบไม่เชิงเส้นและเอฟเฟกต์ปฏิสัมพันธ์) RF จัดหมวดหมู่ Xs ตามจุดตัดที่ดีที่สุด (ในแง่ของ SSE ขั้นต่ำ) และไม่ใช้ข้อมูลผู้วิจัยเกี่ยวกับรูปแบบการทำงานของความสัมพันธ์ ในอีกทางหนึ่งการถดถอยของ OLS ใช้ข้อมูลนี้ ในตัวอย่างของคุณคุณรู้ว่าประเภทของความสัมพันธ์ระหว่าง Xs และ y คืออะไรและใช้ข้อมูลทั้งหมดนี้ในแบบจำลองการถดถอยของคุณ แต่ RF ไม่ได้ใช้ข้อมูลนี้


-2

สำหรับพื้นฐานแล้วการถดถอยนั้นทำได้ดีกว่าตัวแปรต่อเนื่องและ Random Forest บนตัวแปรที่ไม่ต่อเนื่อง

คุณต้องให้รายละเอียดเพิ่มเติมเกี่ยวกับปัญหาและลักษณะของตัวแปรเพื่อให้มีความเฉพาะเจาะจงมากขึ้น ...


ตัวแปรทั้งหมดส่งกลับรายวันของหุ้น (ชุดเวลาทางการเงิน) ...
28906

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