เปรียบเทียบ R-squared จาก Random Forest สองรุ่นที่แตกต่างกัน


10

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

โดยเฉพาะฉันเหมาะสมกับโมเดล RF หนึ่งตัวที่อนุญาตให้กระบวนการเลือกชุดตัวแปรพยากรณ์ 75 ตัวที่ฉันคิดว่าสำคัญ

ฉันกำลังทดสอบว่าตัวแบบนั้นทำนายผลที่แท้จริงสำหรับชุดการทดสอบที่สงวนไว้อย่างไรโดยใช้วิธีการโพสต์ที่นี่ก่อนหน้านี้คือ

... หรือใน R:

1 - sum((y-predicted)^2)/sum((y-mean(y))^2)

แต่ตอนนี้ฉันมีตัวแปรทำนายอีก 25 ตัวที่ฉันสามารถเพิ่มได้ เมื่อใช้ชุดตัวทำนาย ~ 100 ตัวR²จะสูงกว่า ฉันต้องการที่จะทดสอบทางสถิติในคำอื่น ๆ เมื่อใช้ชุดของ ~ 100 ทำนายที่จะทดสอบแบบจำลองอย่างมีนัยสำคัญที่ดีกว่าในการทดสอบข้อมูลกว่ารุ่นพอดีโดยใช้ ~ 75 พยากรณ์ นั่นคือR²จากการทดสอบโมเดล RF บนชุดข้อมูลแบบเต็มสูงกว่าR²อย่างมากจากการทดสอบโมเดล RF บนชุดข้อมูลที่ลดลง

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

ฉันพยายามคิดถึงวิธี resampling / permutation บางอย่าง แต่ไม่มีสิ่งใดในใจ

คำตอบ:


8

ข้ามตรวจสอบ! ใช้ฟังก์ชั่นรถไฟในคาเร็ตเพื่อให้พอดีกับ 2 รุ่นของคุณ ใช้หนึ่งค่าของ mtry (เหมือนกันสำหรับทั้งสองรุ่น) คาเร็ตจะส่งคืนค่าประมาณของ RMSE และสุ่มใหม่R2

ดูหน้า 3 ของบทความสั้น (เช่นในคู่มืออ้างอิงฉบับเต็ม )


ฉันเห็นด้วยยกเว้นการละเว้นของคุณที่ OP ควรใช้การปรับ R-squared เนื่องจากนี่คือสิ่งที่มันถูกออกแบบมา โมเดลมี Y เหมือนกัน แต่มีชุดทำนายที่แตกต่างกันดังนั้นจำเป็นต้องปรับ R-squared เพื่อลงโทษสำหรับความแตกต่างขององศาอิสระ / ความซับซ้อนของโมเดลที่ใช้ไป ปัญหาอื่น ๆ ที่ฉันเห็นอาจเป็นปัญหาขนาดตัวอย่าง OP จะต้องมีขนาดตัวอย่างใหญ่เพื่อให้มีความหวังที่แท้จริงสิ่งนี้ไม่ได้เป็นเพียงการล้นเกินแม้จะมีประวัติย่อ
LSC

@LSC ฉันจะบอกว่าถ้ามีชุดข้อมูลเพิ่มเติม (ไม่ได้ใช้สำหรับการเลือก) พวกเขาสามารถใช้ R2 โดยไม่ต้องปรับเนื่องจากเป็น RMSE ปกติ ฉันยอมรับว่าพวกเขาต้องการชุดข้อมูลขนาดใหญ่พอสมควรในการทำเช่นนี้
Zach

ข้อมูลใหม่หรือเก่าคงที่ทั้งหมดการใส่ 100 เทอมในแบบจำลองกับ 25 จะมี R-squared ที่ไม่ต้องปรับปรุงสูงกว่าเมื่อเทียบกับ R-squared จากตัวทำนาย 25 แบบ สิ่งนี้จะเห็นได้ง่ายเมื่อทำการคำนวณผลรวมของข้อผิดพลาดกำลังสองระหว่างสองเงื่อนไข ฉันคิดว่าคนมักจะลืมไปว่าคำศัพท์เพิ่มเติมจะไม่ลด R-squared แต่ถ้าพวกเขาเหม็นเมื่อเทียบกับค่าของพวกเขาพวกเขาสามารถลด R-squared ที่ปรับซึ่งเป็นมาตรการที่ดีกว่าที่จะใช้ดูปังเจ้าชู้
LSC

"คำศัพท์เพิ่มเติมจะไม่ลด R-squared" <- คำสั่งนี้เป็นเท็จเมื่อคำนวณ R2 จากตัวอย่าง
Zach

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

4

ฉันเห็นด้วยกับ Zachว่าความคิดที่ดีที่สุดคือการตรวจสอบความถูกต้องของทั้งสองโมเดลแล้วเปรียบเทียบ s เช่นโดยการรวบรวมค่าจากแต่ละครั้งและเปรียบเทียบเวกเตอร์ที่ได้ด้วยการทดสอบ Wilcoxon (จับคู่กับ k-fold, ไม่จับคู่สำหรับการสุ่ม ประวัติย่อ).R2

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


สำหรับการทดสอบแบบจับคู่ฉันคิดว่ารุ่น 2 นั้นพอดีกับรอยพับเท่ากัน? แล้วแถว k ของ matrx คือรอยพับและคอลัมน์สองคอลัมน์คือโมเดล 1 และโมเดล 2?
B_Miner

@B_Miner แม่นยำ

1

คุณอาจต้องการคิดในแง่ของความสำคัญเชิงปฏิบัติมากกว่านัยสำคัญทางสถิติ (หรือทั้งสองอย่าง) มีข้อมูลเพียงพอคุณสามารถค้นหาสิ่งต่าง ๆ ที่มีนัยสำคัญทางสถิติซึ่งจะไม่มีผลกระทบต่อการใช้งานของคุณ ฉันจำการวิเคราะห์แบบจำลองได้ครั้งเดียวซึ่งการโต้ตอบแบบ 5 ทิศทางมีความสำคัญทางสถิติ แต่เมื่อการทำนายจากแบบจำลองรวมถึงทุกอย่างจนถึงการปฏิสัมพันธ์แบบ 5 ทางนั้นถูกนำมาเปรียบเทียบกับการทำนายจากแบบจำลองรวมถึงการโต้ตอบแบบสองทางเท่านั้น ความแตกต่างที่ใหญ่ที่สุดคือน้อยกว่า 1 คน (การตอบสนองคือจำนวนคนและค่าที่น่าสนใจทั้งหมดอยู่ห่างจาก 0) ดังนั้นความซับซ้อนที่เพิ่มเข้ามาจึงไม่คุ้มค่า ดังนั้นดูความแตกต่างในการทำนายของคุณเพื่อดูว่าความแตกต่างนั้นเพียงพอที่จะพิสูจน์ค่าใช้จ่ายเพิ่มเติมหรือไม่ ถ้าไม่ใช่ถ้าอย่างนั้นทำไมถึงต้องมองหานัยสำคัญทางสถิติ? หากความแตกต่างนั้นใหญ่พอที่จะพิสูจน์ค่าใช้จ่ายหากเป็นของจริงฉันก็จะลองใช้การตรวจสอบข้ามแบบอื่น


1

ทางเลือกหนึ่งคือการสร้างช่วงความมั่นใจสำหรับข้อผิดพลาดกำลังสองเฉลี่ย ฉันจะใช้ข้อผิดพลาดกำลังสองเฉลี่ยแทนเนื่องจากตัวส่วนเหมือนกันสำหรับทั้งสองรุ่น กระดาษโดย Dudoit และ van der Laan ( บทความและกระดาษทำงาน ) ให้ทฤษฎีบททั่วไปสำหรับการสร้างช่วงความมั่นใจสำหรับการประเมินความเสี่ยงใด ๆ ใช้ตัวอย่างจากข้อมูลม่านตานี่คือรหัส R บางตัวที่สร้างช่วงความมั่นใจ 95% โดยใช้วิธีการ:R2

library(randomForest)
data(iris)
set.seed(42)

# split the data into training and testing sets
index <- 1:nrow(iris)
trainindex <- sample(index, trunc(length(index)/2))
trainset <- iris[trainindex, ]
testset <- iris[-trainindex, ]

# with species
model1 <- randomForest(Sepal.Length ~ Sepal.Width + Petal.Length +
   Petal.Width + Species, data = trainset)
# without species
model2 <- randomForest(Sepal.Length ~ Sepal.Width + Petal.Length + 
   Petal.Width, data = trainset)

pred1 <- predict(model1, testset[, -1])
pred2 <- predict(model2, testset[, -1])

y <- testset[, 1]
n <- length(y)

# psi is the mean squared prediction error (MSPE) estimate
# sigma2 is the estimate of the variance of the MSPE
psi1 <- mean((y - pred1)^2)
sigma21 <- 1/n * var((y - pred1)^2) 
# 95% CI:
c(psi1 - 1.96 * sqrt(sigma21), psi1, psi1 + 1.96 * sqrt(sigma21))

psi2 <- mean((y - pred2)^2)
sigma22 <- 1/n * var((y - pred2)^2) 
# 95% CI:
c(psi2 - 1.96 * sqrt(sigma22), psi2, psi2 + 1.96 * sqrt(sigma22))

วิธีนี้ยังสามารถขยายให้ทำงานภายในการตรวจสอบความถูกต้องไขว้ได้ (ไม่ใช่แค่การแยกตัวอย่างตามที่แสดงด้านบน)


0

เนื่องจากคุณใช้อยู่แล้วrandomForestหลังจากที่คุณตรวจสอบความถูกต้องแล้วคุณอาจปล่อยการคำนวณแบบพอดีของค่าความสำคัญของตัวทำนาย

> require(randomForest)
> rf.fit = randomForest(Species~.,data=iris,importance=TRUE)
> rf.fit$importance
                  setosa   versicolor   virginica MeanDecreaseAccuracy MeanDecreaseGini
Sepal.Length 0.036340893  0.021013369 0.032345037          0.030708732         9.444598
Sepal.Width  0.005399468 -0.002131412 0.007499143          0.003577089         2.046650
Petal.Length 0.319872296  0.297426025 0.290278930          0.299795555        42.494972
Petal.Width  0.343995456  0.309455331 0.277644128          0.307843300        45.286720

0

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

โปรดทราบ:

  1. คุณระบุว่า R ^ 2 = ESS / TSS = 1 - RSS / TSS สิ่งนี้เป็นจริงในบริบทเชิงเส้นเท่านั้น ความเท่าเทียมกัน TSS = RSS + ESS ถือเป็นจริงเฉพาะในการถดถอยเชิงเส้นที่มีการสกัดกั้น ดังนั้นคุณไม่สามารถใช้คำจำกัดความเหล่านั้นสำหรับสุ่มฟอเรสต์แทนกันได้ นี่คือเหตุผลที่ RMSE และคล้ายกันเป็นฟังก์ชั่นการสูญเสียทั่วไปมากขึ้น

  2. สำคัญกว่าสำหรับจุดประสงค์ทางสถิติ: R ^ 2 ตามด้วยการแจกแจงที่ไม่รู้จัก (เช่นเดียวกับการตั้งค่าเชิงเส้น) นั่นหมายความว่าการทดสอบสมมติฐานด้วยนัยสำคัญทางสถิติโดยใช้ R ^ 2 นั้นไม่ตรงไปตรงมา Cross-Validation ตามที่Zachพูดถึงเป็นตัวเลือกที่ดี

สำหรับการตอบสนองของผู้ใช้88 : การตรวจสอบข้ามด้วยการทดสอบ Wilcoxon เป็นวิธีการที่ถูกต้อง บทความล่าสุดใช้วิลคอกซันลงนามทดสอบยศและทดสอบฟรีดแมนเพื่อเปรียบเทียบวิธีการและอัลกอริธึมที่แตกต่างกัน

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