ฟอเรสต์แบบสุ่มสามารถนำมาใช้สำหรับการเลือกคุณสมบัติในการถดถอยเชิงเส้นหลายแบบได้หรือไม่?


50

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


@ user777 คุณหมายถึงคุณกำลังอ่าน "อธิบาย" ว่า "รับ" หรืออะไรแบบนั้น
shadowtalker

1
เนื่องจากดูเหมือนจะมีความกังวลอย่างมากเกี่ยวกับคำถามนี้ที่อาจพยายามถามคุณช่วยแก้ไขเพื่อกำจัดความสับสนได้หรือไม่
whuber

คำตอบ:


71

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

ฉันตีความคำถามหนึ่งประโยคของ OP ว่าหมายความว่า OP ต้องการเข้าใจความปรารถนาของกระบวนการวิเคราะห์ต่อไปนี้:

  1. พอดีกับฟอเรสต์แบบสุ่มกับข้อมูลบางอย่าง
  2. ด้วยการวัดความสำคัญของตัวแปรจาก (1) ให้เลือกชุดย่อยของคุณลักษณะที่มีคุณภาพสูง
  3. ใช้ตัวแปรจาก (2) ประมาณค่าโมเดลการถดถอยเชิงเส้น สิ่งนี้จะช่วยให้สามารถเข้าถึงค่าสัมประสิทธิ์ OP ที่ OP บันทึก RF ไม่สามารถทำได้
  4. จากตัวแบบเชิงเส้นใน (3) ตีความสัญญาณของการประมาณค่าสัมประสิทธิ์เชิงคุณภาพ

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

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

set.seed(1)
N  <- 500
x1 <- rnorm(N, sd=1.5)
x2 <- rnorm(N, sd=1.5)

y  <- apply(cbind(x1, x2), 1, function(x) (x%*%x)<1)

plot(x1, x2, col=ifelse(y, "red", "blue"))
lines(cos(seq(0, 2*pi, len=1000)), sin(seq(0, 2*pi, len=1000))) 

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

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

x_junk   <- matrix(rnorm(N*10, sd=1.5), ncol=10)
x        <- cbind(x1, x2, x_junk)
names(x) <- paste("V", 1:ncol(x), sep="")

rf <- randomForest(as.factor(y)~., data=x, mtry=4)
importance(rf)

    MeanDecreaseGini
x1         49.762104
x2         54.980725
V3          5.715863
V4          5.010281
V5          4.193836
V6          7.147988
V7          5.897283
V8          5.338241
V9          5.338689
V10         5.198862
V11         4.731412
V12         5.221611

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

summary(badmodel <- glm(y~., data=data.frame(x1,x2), family="binomial"))

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

Call:
glm(formula = as.factor(y) ~ ., family = "binomial", data = data.frame(x1, 
    x2))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.6914  -0.6710  -0.6600  -0.6481   1.8079  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -1.398378   0.112271 -12.455   <2e-16 ***
x1          -0.020090   0.076518  -0.263    0.793    
x2          -0.004902   0.071711  -0.068    0.946    
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 497.62  on 499  degrees of freedom
Residual deviance: 497.54  on 497  degrees of freedom
AIC: 503.54

Number of Fisher Scoring iterations: 4

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

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

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

M                 <- 100
x_new             <- seq(-4,4, len=M)
x_new_grid        <- expand.grid(x_new, x_new)
names(x_new_grid) <- c("x1", "x2")
x_pred            <- data.frame(x_new_grid, matrix(nrow(x_new_grid)*10, ncol=10))
names(x_pred)     <- names(x)

y_hat             <- predict(object=rf, newdata=x_pred, "vote")[,2]

library(fields)
y_hat_mat         <- as.matrix(unstack(data.frame(y_hat, x_new_grid), y_hat~x1))

image.plot(z=y_hat_mat, x=x_new, y=x_new, zlim=c(0,1), col=tim.colors(255), 
           main="RF Prediction surface", xlab="x1", ylab="x2")

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

ตามที่แสดงโดยเอาท์พุทแบบสุดซึ้งของเราพื้นผิวการทำนายสำหรับตัวแบบการถดถอยโลจิสติกแบบลดตัวแปรนั้นค่อนข้างแบน

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

bad_y_hat     <- predict(object=badmodel, newdata=x_new_grid, type="response")
bad_y_hat_mat <- as.matrix(unstack(data.frame(bad_y_hat, x_new_grid), bad_y_hat~x1))
image.plot(z=bad_y_hat_mat, x=x_new, y=x_new, zlim=c(0,1), col=tim.colors(255), 
           main="Logistic regression prediction surface", xlab="x1", ylab="x2")

HongOoi ตั้งข้อสังเกตว่าสมาชิกระดับไม่ได้เป็นฟังก์ชั่นเชิงเส้นของคุณสมบัติ แต่ฟังก์ชั่นเชิงเส้นอยู่ภายใต้การเปลี่ยนแปลง เนื่องจากขอบเขตการตัดสินใจคือ ถ้าเรายกกำลังสองคุณสมบัติเหล่านี้เราจะสามารถสร้างแบบจำลองเชิงเส้นที่มีประโยชน์มากขึ้น นี่คือเจตนา ในขณะที่รุ่น RF สามารถค้นหาสัญญาณในคุณสมบัติทั้งสองที่ไม่มีการแปลง แต่นักวิเคราะห์จะต้องเจาะจงมากขึ้นเพื่อให้ได้ผลลัพธ์ที่เป็นประโยชน์ในทำนองเดียวกันใน GLM บางทีนั่นก็เพียงพอแล้วสำหรับ OP: การค้นหาชุดการแปลงที่มีประโยชน์สำหรับ 2 คุณสมบัตินั้นง่ายกว่า 12 แต่ประเด็นของฉันคือแม้ว่าการแปลงจะให้รูปแบบเชิงเส้นที่มีประโยชน์ความสำคัญของคุณลักษณะ RF จะไม่แนะนำการเปลี่ยนแปลงด้วยตนเอง1=x12+x22,


1
ฉันคิดว่าในขณะที่ดีมันพลาดจุดทั้งหมด ลองใช้รูปแบบที่ซับซ้อนขึ้นเล็กน้อย - แบบที่ฉันเรียกว่าไม่สำคัญพอที่จะให้ข้อมูล พิจารณาสิ่งนี้ ( people.kyb.tuebingen.mpg.de/spider/demo_dec_vs_svm_2.jpg ) ด้วยเสียงเกลือและพริกไทย ตอนนี้พอดีกับ RF ตอนนี้ใช้ RF เป็น "ตัวกรอง" เพื่อลบปรากฏการณ์ "ปลอม" และฝึกฝนโมเดลสำรองของคุณบนเอาต์พุตของ RF ไม่ใช่ค่าสัมประสิทธิ์ OP ระบุ "คุณสมบัติ" ไม่ใช่ค่าสัมประสิทธิ์ OP ไม่ได้พูดว่า "ป่าสุ่มลด" แต่ "ป่าสุ่ม" ความหมายมีไว้สำหรับผลลัพธ์ของฟอเรสต์ที่สมบูรณ์
EngrStudent

3
ที่น่าสนใจคือตัวอย่างของคุณเป็นแบบเชิงเส้นในตัวทำนายผล - หากคุณแปลงเป็นครั้งแรก สมการของคุณคือดังนั้นการยกกำลังสองของและเปลี่ยนมันเป็นแบบจำลองเชิงเส้น ในความเป็นจริงมันเป็นหนึ่งในตัวอย่างที่ Friedman, Hastie & Tibshirani เคยแสดงให้เห็นว่าการเพิ่มแรงบันดาลใจนั้นเหมาะกับแบบจำลองมิติต่ำ (เติมแต่งในกรณีของตอไม้) x 1 x 2y=x12+x22x1x2
Hong Ooi

3
@ user777 ฉันได้ใช้ฟอเรสต์แบบสุ่มเพื่อลดปัญหามิติที่ซับซ้อนกับปัญหาที่ซับซ้อนมานานหลายปี Intel Semiconductor อดีตนายจ้างของฉันมีกระบวนการผลิตที่มีคอลัมน์ 20k และ 20k ขั้นตอนและสำหรับข้อบกพร่องต่ำกว่า 10 ข้อใช้สิ่งนี้เป็นส่วนหนึ่งของชุดเครื่องมือวิเคราะห์ที่จะเปลี่ยนจากคอลัมน์ 20k เป็น 30 คอลัมน์ พวกเขาสอนหลักสูตรภายในและบรรยายเกี่ยวกับเนื้อหาภายนอก ( web.stanford.edu/class/ee392m/Lecture3Tuv.pdf ) "forest" เป็นเครื่องมือที่ทรงพลังอย่างน่าอัศจรรย์และคุณเข้าสู่เส้นทางที่ไม่ดี มีสองสิ่งที่ดีที่คุณพลาดไม่ได้
EngrStudent

2
@EngrStudent "Intel ใช้ RF เพื่อเปลี่ยนจากคอลัมน์จำนวนมากเป็นคอลัมน์น้อยลง" นั่นคือสิ่งที่การสาธิตของฉันทำ นอกจากนี้ยังตอบคำถามเฉพาะของ OP เกี่ยวกับว่าคุณลักษณะเหล่านั้นอาจนำไปใช้ประโยชน์ในแบบจำลองเชิงเส้นได้หรือไม่และคำตอบของฉันคือ "โดยทั่วไปแล้วพวกเขาจะไม่เป็นประโยชน์โดยตรง แต่ในตัวอย่างนี้คุณอาจพบว่ามันมีประโยชน์
Reinstate Monica

12

คำตอบโดย @Sycorax นั้นยอดเยี่ยมมาก นอกเหนือจากแง่มุมที่อธิบายอย่างครบถ้วนของปัญหาที่เกี่ยวข้องกับโมเดลพอดีแล้วยังมีอีกเหตุผลหนึ่งที่ไม่ต้องดำเนินกระบวนการหลายขั้นตอนเช่นการใช้งานป่าสุ่ม, เชือกหรือตาข่ายยืดหยุ่นเพื่อ "เรียนรู้" ซึ่งมีคุณสมบัติในการป้อนการถดถอยแบบดั้งเดิม การถดถอยสามัญจะไม่ทราบเกี่ยวกับการปรับไหมที่ถูกต้องไปในระหว่างการพัฒนาของป่าสุ่มหรือวิธีการอื่น ๆ และจะพอดีกับผลกระทบ unpenalized ที่ไม่ดีลำเอียงที่จะปรากฏแรงเกินไปในการทำนายYสิ่งนี้จะไม่แตกต่างจากการรันการเลือกตัวแปรแบบขั้นตอนและรายงานรุ่นสุดท้ายโดยไม่คำนึงว่ามันมาถึงอย่างไรY


2
ขอบคุณดร. ฮาร์เรลล์! ในใจของฉันถ้า OP ต้องใช้ไพพ์ไลน์การวิเคราะห์นี้ OP จะทำ RF down-selection และตัวแบบเชิงเส้นที่เหมาะสมภายในโครงร่างการตรวจสอบ (cross-) ของพวกเขา นั่นเพียงพอที่จะลดอคติที่คุณอธิบายหรือมีปัญหาอื่นที่แฝงตัวอยู่ที่ฉันหายไปหรือไม่
Reinstate Monica

2
ฉันไม่รู้วิธีทำโมเดลเชิงเส้นที่เหมาะสม "ข้างใน" โครงร่าง ฉันไม่รู้ว่าจะลดอคติการจัดสรรเกิน / การประเมินที่จะส่งผลอย่างไร บางทีวิธีที่ดีกว่าคือการประมาณแบบจำลองซึ่งบางครั้งเรียกว่าการปรับสภาพล่วงหน้า ที่นี่คุณใช้รูปแบบดั้งเดิมหรือต้นไม้ต้นเดียว (ซึ่งต้องใช้โหนดหลายตัน) เพื่อประมาณเอาต์พุตของกล่องดำโดยสืบทอดการหดตัวของกล่องดำ
Frank Harrell

8

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

ปฏิเสธความรับผิดชอบ:

  • มันเป็น "กระสุนเงิน" หรือไม่? ไม่มีทาง. ไมล์สะสมจะแตกต่างกันไป มันทำงานในที่ทำงานและไม่ได้อยู่ที่อื่น
  • มีวิธีใดบ้างที่คุณสามารถใช้ผิดอย่างผิดพลาดและรับคำตอบที่อยู่ในโดเมน junk-to-voodoo youbetcha เช่นเดียวกับเครื่องมือวิเคราะห์ทุกตัวมันมีข้อ จำกัด
  • หากคุณเลียกบลมหายใจของคุณจะมีกลิ่นเหมือนกบหรือไม่? เป็นไปได้. ฉันไม่มีประสบการณ์

ฉันต้องมอบ "เสียงตะโกน" ให้กับ "เสียงแหลม" ของฉันที่สร้าง "แมงมุม" ( ลิงค์ ) ปัญหาตัวอย่างของพวกเขาแจ้งวิธีการของฉัน ( ลิงค์ ) ฉันรักตัวประเมินของ Theil-Sen และหวังว่าฉันจะมอบอุปกรณ์ประกอบฉากให้ Theil และ Sen

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

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

นี่เป็นตัวอย่างของการลบสัญญาณรบกวนออกจากสัญญาณโดยใช้ฟอเรสต์แบบสุ่ม

#housekeeping
rm(list=ls())

#library
library(randomForest)

#for reproducibility
set.seed(08012015)

#basic
n <- 1:2000
r <- 0.05*n +1 
th <- n*(4*pi)/max(n)

#polar to cartesian
x1=r*cos(th) 
y1=r*sin(th)

#add noise
x2 <- x1+0.1*r*runif(min = -1,max = 1,n=length(n))
y2 <- y1+0.1*r*runif(min = -1,max = 1,n=length(n))

#append salt and pepper
x3 <- runif(min = min(x2),max = max(x2),n=length(n)/2)
y3 <- runif(min = min(y2),max = max(y2),n=length(n)/2)

x4 <- c(x2,x3)
y4 <- c(y2,y3)
z4 <- as.vector(matrix(1,nrow=length(x4)))

#plot class "A" derivation
plot(x1,y1,pch=18,type="l",col="Red", lwd=2)
points(x2,y2)
points(x3,y3,pch=18,col="Blue")
legend(x = 65,y=65,legend = c("true","sampled","false"),
col = c("Red","Black","Blue"),lty = c(1,-1,-1),pch=c(-1,1,18))

ให้ฉันอธิบายสิ่งที่เกิดขึ้นที่นี่ ภาพด้านล่างนี้แสดงข้อมูลการฝึกอบรมสำหรับชั้นเรียน "1" คลาส "2" เป็นแบบสุ่มทั่วโดเมนและช่วงเดียวกัน คุณจะเห็นว่า "ข้อมูล" ของ "1" ส่วนใหญ่เป็นเกลียว แต่เกิดความเสียหายกับเนื้อหาจาก "2" มี 33% ของข้อมูลของคุณเสียหายอาจเป็นปัญหาสำหรับเครื่องมือปรับแต่งมากมาย Theil-Sen เริ่มลดลงประมาณ 29% ( ลิงก์ )

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

ตอนนี้เราแยกข้อมูลออกมาโดยมีความคิดว่าเสียงรบกวนคืออะไร

#Create "B" class of uniform noise
x5 <- runif(min = min(x4),max = max(x4),n=length(x4))
y5 <- runif(min = min(y4),max = max(y4),n=length(x4))
z5 <- 2*z4 

#assemble data into frame 
data <- data.frame(c(x4,x5),c(y4,y5),as.factor(c(z4,z5)))
names(data) <- c("x","y","z")

#train random forest - I like h2o, but this is textbook Breimann
fit.rf <- randomForest(z~.,data=data,
                       ntree = 1000, replace=TRUE, nodesize = 20)
data2 <- predict(fit.rf,newdata=data[data$z==1,c(1,2)],type="response")

#separate class "1" from training data
idx1a <- which(data[,3]==1)

#separate class "1" from the predicted data
idx1b <- which(data2==1)

#show the difference in classes before and after RF based filter
plot(data[idx1a,1],data[idx1a,2])
points(data[idx1b,1],data[idx1b,2],col="Red")

นี่คือผลการกระชับ:

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

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

เปรียบเทียบกับ SVM

นี่คือรหัสที่อนุญาตให้ทำการเปรียบเทียบกับ SVM:

#now to fit to svm
fit.svm <-  svm(z~., data=data, kernel="radial",gamma=10,type = "C")

x5 <- seq(from=min(x2),to=max(x2),by=1)
y5 <- seq(from=min(y2),to=max(y2),by=1)

count <- 1
x6 <- numeric()
y6 <- numeric()
for (i in 1:length(x5)){

     for (j in 1:length(y5)){
          x6[count]<-x5[i]
          y6[count]<-y5[j]
          count <- count+1
     }
}

data4 <- data.frame(x6,y6)
names(data4) <- c("x","y")

data4$z <- predict(fit.svm,newdata=data4)

idx4 <- which(data4$z==1,arr.ind=TRUE)


plot(data4[idx4,1],data4[idx4,2],col="Gray",pch=20)
points(data[idx1b,1],data[idx1b,2],col="Blue",pch=20)
lines(x1,y1,pch=18,col="Green", lwd=2)
grid()
legend(x = 65,y=65,
       legend = c("true","from RF","From SVM"),
       col = c("Green","Blue","Gray"),lty = c(1,-1,-1),pch=c(-1,20,15),pt.cex=c(1,1,2.25))

มันส่งผลให้ภาพดังต่อไปนี้

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

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

ฉันเพลิดเพลิน โดยไม่ต้องมีพื้นหลังฉันได้ทำสิ่งหนึ่งสิ่งแรกเริ่มโดยผู้มีส่วนร่วมที่ดีมากในสนาม ผู้แต่งดั้งเดิมใช้ "การแจกจ่ายอ้างอิง" ( ลิงค์ , ลิงค์ )

แก้ไข:

ใช้ FOREST แบบสุ่มกับโมเดลนี้:
ในขณะที่ผู้ใช้ 777 มีความคิดที่ดีเกี่ยวกับรถเข็นที่เป็นองค์ประกอบของฟอเรสต์แบบสุ่มสถานที่ตั้งของฟอเรสต์แบบสุ่มคือ "การรวมกลุ่มของผู้เรียนที่อ่อนแอ" รถเข็นเป็นผู้เรียนที่อ่อนแอ แต่ไม่มีอะไรอยู่ใกล้กับ "วงดนตรี" "วงดนตรี" แม้ว่าในป่าสุ่มมีจุดประสงค์ "ในขีด จำกัด ของกลุ่มตัวอย่างจำนวนมาก" คำตอบของ user777 ใน scatterplot นั้นใช้อย่างน้อย 500 ตัวอย่างและนั่นบอกบางอย่างเกี่ยวกับความสามารถในการอ่านของมนุษย์และขนาดตัวอย่างในกรณีนี้ ระบบภาพของมนุษย์ (ตัวเองเป็นกลุ่มของผู้เรียน) เป็นเซ็นเซอร์และตัวประมวลผลข้อมูลที่น่าทึ่งและพบว่าค่านั้นเพียงพอสำหรับการประมวลผลที่ง่ายดาย

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

x        <- cbind(x1, x2)
plot(rf,type="b",ylim=c(0,0.06))
grid()

ซึ่งให้ผลผลิต:
ป้อนคำอธิบายรูปภาพที่นี่

หากแทนที่จะดูที่ "ผู้เรียนขั้นต่ำที่อ่อนแอ" เรามองไปที่ "วงดนตรีที่อ่อนแอขั้นต่ำ" ซึ่งแนะนำโดยการแก้ปัญหาแบบสั้นมากสำหรับการตั้งค่าเริ่มต้นของเครื่องมือผลลัพธ์ที่ได้ค่อนข้างแตกต่างกัน

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

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

ตัวอย่างดั้งเดิมมีตัวอย่าง 88 "ภายใน" หากขนาดตัวอย่างเพิ่มขึ้น (อนุญาตให้ใช้วงดนตรีทั้งหมด) คุณภาพของการประมาณก็จะดีขึ้นเช่นกัน จำนวนผู้เรียนที่เท่ากันกับ 20,000 ตัวอย่างทำให้มีขนาดพอดีดีขึ้นอย่างน่าทึ่ง

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

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

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


สิ่งนี้พิสูจน์ได้หรือไม่พิสูจน์ว่า RF สามารถใช้เพื่อเลือกคุณสมบัติที่มีคุณภาพสูงสำหรับแบบจำลองเชิงเส้นได้ คุณไม่ได้หารือเกี่ยวกับการเลือกคุณสมบัติหรือรุ่นเชิงเส้นในคำตอบของคุณ
Reinstate Monica

หลักฐานของผู้ถามเกี่ยวกับการใช้ RF เป็นตัวกรองล่วงหน้าจากนั้นดูที่พารามิเตอร์ของตัวแบบเชิงเส้น เขาไม่ได้ดูพารามิเตอร์ของป่า เมื่อฉันอ่านมันเนื่องจากไม่มีความลึกหรือความเฉพาะเจาะจง "โมเดลเชิงเส้นหลายเส้น" จึงดูเหมือนเป็นรอง สำหรับฉันนี่ดูเหมือนว่า "สามารถประมวลผลล่วงหน้า / ล้างข้อมูล RF ก่อนที่จะผสานเข้าไปในเครื่องมือวิเคราะห์ x"
EngrStudent

ฉันเห็นสิ่งประดิษฐ์แนวนอนและแนวตั้ง ฉันถูกล่อลวงให้สร้าง "ข้อมูลคอนจูเกต" บนพิกัดที่หมุน 45 องศาและต่อท้ายคอลัมน์กับ RF ฉันเดิมพันว่าการแปลงแบบนั้นจะลดจำนวนของสิ่งประดิษฐ์ แต่ฉันไม่แน่ใจว่ามันจะเปลี่ยนพารามิเตอร์อินพุตได้อย่างไร
EngrStudent

2
นอกเหนือจากนี้ "การวนรอบการหมุน" เป็นรูปแบบที่เปลี่ยนแปลงล่าสุดของแนวคิดนี้โดยที่ PCA ใช้เพื่อกำหนดเกณฑ์ใหม่ ncbi.nlm.nih.gov/pubmed/16986543
Reinstate Monica

1
เรียบร้อย: Liu, Fei Tony, Ting, Kai Ming และ Zhou, Zhi-Hua “ ป่าแยก.” การทำเหมืองข้อมูล, 2008. ICDM'08 การประชุมนานาชาติครั้งที่แปดของ IEEE
EngrStudent
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.