การเลือกคุณสมบัติและการปรับพารามิเตอร์ด้วยคาเร็ตสำหรับฟอเรสต์แบบสุ่ม


12

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

หวังว่าใครบางคนสามารถอธิบายเรื่องนี้กับฉันได้


2
RF มีการเลือกคุณสมบัติในตัวที่แข็งแกร่ง - ไม่จำเป็นต้องใช้ RFE ดังนั้นเราสามารถปรับแต่ง mtry และทำได้ด้วย
Yevgeny

คำตอบ:


11

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

การเลือกคุณสมบัติผ่านต้นไม้ที่ทำให้เป็นปกติ

นอกจากนี้ยังมีแพ็คเกจ CRAN RRFที่สร้างขึ้นมาจากป่าสุ่มซึ่งจะช่วยให้คุณสามารถนำไปใช้ได้อย่างง่ายดายในอาร์ฉันโชคดีกับวิธีการนี้

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


1

คุณอาจใช้caretFuncs บางสิ่งเช่นนี้:

myRFE <- caretFuncs
myRFE$summary <- twoClassSummary  (default is defaultSummary)

rctrl <- rfeControl(method='repeatedcv', repeats=5, number=10,
                   functions=myRFE)

tctrl <- trainControl(method = "cv",
                      classProbs = TRUE,
                      summaryFunction = twoClassSummary)

rfeObj = rfe(x,y,sizes=seq(1,ncol(x),2),
             rfeControl=rctrl,  
             # to be passed to train()
             method='rf',
             importance=T,  # do not forget this
             ntree=1000,
             metric = "ROC",
             tuneLength = 10,
             # mtry=c(1,3,5,50),
             # specify the exact mtry, or tuneLength
             # can auto truncate the grid to minimal sizes (with or without warning)
             # p <- ncol(x) ... if (mtry < 1 || mtry > p) warning("invalid try: reset to within valid range") try <- max(1, min(p, round(try))) 
             trControl=tctrl)

นอกจากนี้หนึ่งอาจตรวจสอบvalSelRFแพคเกจ ไม่แน่ใจว่ามันแตกต่างจากที่regularized random forestกล่าวถึงที่นี่

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