ฉันจะโต้แย้งว่าการรักษาตัวแปรที่ไม่มีหมวดหมู่อย่างแท้จริงอย่างต่อเนื่องในบางครั้งอาจทำให้รู้สึกได้
หากคุณกำลังสร้างแผนผังการตัดสินใจตามชุดข้อมูลขนาดใหญ่อาจมีค่าใช้จ่ายสูงในแง่ของพลังการประมวลผลและหน่วยความจำในการแปลงตัวแปรเด็ดขาดเป็นตัวแปรจำลอง นอกจากนี้บางรุ่น (เช่นrandomForest
ใน R) ไม่สามารถจัดการตัวแปรเด็ดขาดที่มีหลายระดับ
ในกรณีเหล่านี้แบบจำลองที่มีโครงสร้างเป็นต้นไม้ควรจะสามารถระบุหมวดหมู่ที่สำคัญอย่างยิ่งแม้ว่าจะถูกเข้ารหัสเป็นตัวแปรต่อเนื่อง ตัวอย่างที่วางแผนไว้:
set.seed(42)
library(caret)
n <- 10000
a <- sample(1:100, n, replace=TRUE)
b <- sample(1:100, n, replace=TRUE)
e <- runif(n)
y <- 2*a + 1000*(b==7) + 500*(b==42) + 1000*e
dat1 <- data.frame(y, a, b)
dat2 <- data.frame(y, a, b=factor(b))
y เป็นตัวแปรต่อเนื่อง a เป็นตัวแปรต่อเนื่องและ b เป็นตัวแปรเด็ดขาด อย่างไรก็ตามในdat1
b จะถือว่าต่อเนื่อง
ติดตั้งโครงสร้างการตัดสินใจกับชุดข้อมูล 2 ชุดนี้เราพบว่าdat1
แย่กว่าdat2
:
model1 <- train(y~., dat1, method='rpart')
model2 <- train(y~., dat2, method='rpart')
> min(model1$results$RMSE)
[1] 302.0428
> min(model2$results$RMSE)
[1] 294.1411
หากคุณดูทั้ง 2 รุ่นคุณจะพบว่ามันคล้ายกันมาก แต่ model1 พลาดความสำคัญของ b == 42:
> model1$finalModel
n= 10000
node), split, n, deviance, yval
* denotes terminal node
1) root 10000 988408000 614.0377
2) a< 42.5 4206 407731400 553.5374 *
3) a>=42.5 5794 554105700 657.9563
6) b>=7.5 5376 468539000 649.2613 *
7) b< 7.5 418 79932820 769.7852
14) b< 6.5 365 29980450 644.6897 *
15) b>=6.5 53 4904253 1631.2920 *
> model2$finalModel
n= 10000
node), split, n, deviance, yval
* denotes terminal node
1) root 10000 988408000 614.0377
2) b7< 0.5 9906 889387900 604.7904
4) a< 42.5 4165 364209500 543.8927 *
5) a>=42.5 5741 498526600 648.9707
10) b42< 0.5 5679 478456300 643.7210 *
11) b42>=0.5 62 5578230 1129.8230 *
3) b7>=0.5 94 8903490 1588.5500 *
อย่างไรก็ตาม model1 รันในเวลาประมาณ 1/10 ของเวลาของ model2:
> model1$times$everything
user system elapsed
4.881 0.169 5.058
> model2$times$everything
user system elapsed
45.060 3.016 48.066
แน่นอนคุณสามารถปรับแต่งค่าพารามิเตอร์ของปัญหาที่จะหาสถานการณ์ที่dat2
มีประสิทธิภาพเหนือกว่าไกลdat1
หรือเล็กน้อยมีประสิทธิภาพดีกว่าdat1
dat2
ฉันไม่ได้สนับสนุนให้มีการจัดหมวดหมู่ตัวแปรอย่างต่อเนื่อง แต่ฉันได้พบสถานการณ์ที่การทำเช่นนั้นได้ลดเวลาลงอย่างมากเพื่อให้พอดีกับแบบจำลองของฉันโดยไม่ลดความแม่นยำในการทำนายลง