Cross Validation ในชุดข้อมูลขนาดเล็ก
ฉันมีชุดข้อมูลขนาดเล็กมาก (124 ตัวอย่าง) และฉันต้องการลองดูว่าฉันได้ผลลัพธ์ที่น่าสนใจกับอัลกอริทึมการเรียนรู้ของเครื่องใน R หรือไม่
สิ่งที่ฉันทำ: ฉันแบ่งชุดข้อมูลของฉันออกเป็นการฝึกอบรม 75% และการทดสอบ 25% และฝึกฝนโมเดลที่แตกต่างกัน 6 แบบโดยมีโครงสร้างคล้ายกันดังนี้:
fitControl <- trainControl(## 10-fold CV
method = "repeatedcv",
number = 10,
## repeated five times
repeats = 5,
savePredictions = TRUE,
classProbs = TRUE,
summaryFunction = twoClassSummary)
model_SVM_P <- train(Group ~ ., data = training_set,
method = "svmPoly",
trControl = fitControl,
metric = "Accuracy",
verbose = FALSE,
tuneLength = 10)
อย่างไรก็ตามฉันเพิ่งเริ่มศึกษาเกี่ยวกับการเรียนรู้ของเครื่องและการเรียนรู้เชิงลึกและส่วนของการตรวจสอบความถูกต้องข้ามนั้นยากที่จะเข้าใจ
คำถามคือในโค้ดมีเพียงขั้นตอนการตรวจสอบความถูกต้องไขว้ภายในจำเป็นต้องทำห่วงนอกสำหรับ cv หรือไม่? ถ้าใช่ฉันจะเขียนโค้ดได้อย่างไร?
แก้ไข:
เพียงแค่การอัปเดตที่อาจเป็นประโยชน์หากมีผู้ประสบปัญหาเดียวกัน:
ฉันทำสิ่งนี้และทำงานได้ดี:
folds <- createFolds(training_set$Group,4) split_up <- lapply(folds, function(ind, dat) dat[ind,], dat = training_set) parms_list_SVM_P <- list() model_list_SVM_P <- list() for (i in 1:4) {model_SVM_P <- train(Group ~ ., data = split_up[[i]], method = "svmPoly", trControl = fitControl, metric = "Accuracy", verbose = FALSE, tuneLength = 10) model_list_SVM_P[[i]] <- model_SVM_P parms_list_SVM_P[[i]] <- model_SVM_P$bestTune}
ตอนนี้ฉันกำลังดำเนินการวิเคราะห์เพิ่มเติม
หากมีผู้ที่มีความเชี่ยวชาญมากกว่าพบข้อผิดพลาดโปรดแจ้งให้เราทราบ
ลิงค์นี้ช่วยฉันได้มาก: https://stackoverflow.com/questions/62183291/statistical-test-with-test-data/62193116#62193116
คำตอบ
มี 2 ประเด็นที่ต้องพิจารณา:
คุณต้องมีขั้นตอนการตรวจสอบภายนอกเมื่อใดก็ตามที่คุณใช้ผลลัพธ์ของการตรวจสอบความถูกต้องภายในเพื่อปรับแต่งโมเดลของคุณ
เหตุผลก็คือการปรับแต่งโดยการประมาณประสิทธิภาพที่มีเสียงดังทำให้ประมาณการว่ามีความเอนเอียงในแง่ดีเป็นการประมาณการประสิทธิภาพการประมาณประสิทธิภาพของคุณมีเสียงดังเนื่องจากกรณีทดสอบจำนวนน้อย (ค้นหาช่วงความเชื่อมั่นทวินามและสัดส่วนการวัด) ตัวอย่างเช่นหากคุณสังเกตเห็นการจำแนกประเภทผิด 3 ครั้งจาก 31 กรณีที่ทดสอบความแม่นยำ 90% โดยมีช่วงความเชื่อมั่น 95% 77 - 97%
กล่าวอีกนัยหนึ่งคือเว้นแต่ว่าประสิทธิภาพที่สังเกตได้สำหรับกริดการปรับแต่งของคุณจะมีความแตกต่างอย่างสิ้นเชิงระหว่างรุ่นที่ดีที่สุดและแย่ที่สุดคุณจะไม่สามารถเลือกได้อย่างน่าเชื่อถือตามกรณีที่ทดสอบเพียงไม่กี่กรณี
จะทำอย่างไร?
(ซ้ำ) การตรวจสอบความถูกต้องข้ามในการตรวจสอบความถูกต้องภายใน (การเพิ่มประสิทธิภาพ) ช่วยให้คุณได้ค่าประมาณประสิทธิภาพที่เชื่อถือได้มากขึ้น (อย่าคาดหวังปาฏิหาริย์)
ความแม่นยำ (หรือสัดส่วนอื่น ๆ ) ขึ้นอยู่กับความไม่แน่นอนของผลต่างที่มีขนาดใหญ่มากพวกเขาต้องการขนาดตัวอย่างทดสอบที่ใหญ่มากเพื่อให้แน่ใจ พวกเขามีคุณสมบัติเพิ่มเติมที่ทำให้พวกเขาไม่เหมาะอย่างยิ่งกับการทำงานของเป้าหมายสำหรับการเพิ่มประสิทธิภาพ ดูว่าคุณสามารถใช้กฎการให้คะแนนที่เหมาะสม (เคร่งครัด)แทนได้หรือไม่
ในชุดข้อมูลขนาดเล็กเช่นกรณีของคุณขอแนะนำอย่างยิ่งเนื่องจากการแยกรถไฟ / การทดสอบอาจมีเสียงดัง ค่าประมาณประสิทธิภาพของคุณจะมีประสิทธิภาพมากขึ้นหากคุณทำ CV ภายนอก เท่าที่ฉันรู้คุณต้องเขียนรหัส CV ภายนอกด้วยตัวเองและใช้รหัสของคุณภายในลูปตามที่เป็นอยู่ สิ่งนี้อาจช่วยได้