Cross-Validation คืออะไร?
จากความเข้าใจของผมจาก google และโพสต์อื่น ๆ เช่นนี้การตรวจสอบความถูกต้องข้ามกันคืออะไร? และการตรวจสอบความถูกต้องข้ามคืออะไร? . ฉันเข้าใจว่า (k- fold) cross validation หมายถึงการแยกข้อมูลออกเป็น ($k-1$) การฝึกอบรมและการทดสอบ 1 ชุด กล่าวอีกนัยหนึ่งคือใช้สำหรับค้นหาความแม่นยำของแบบจำลอง
นั่นหมายความว่าถ้าฉันทำการตรวจสอบความถูกต้องข้ามฉันก็ไม่จำเป็นต้องแยกข้อมูลของฉันออกเป็นชุดข้อมูลการฝึกอบรมและการทดสอบใช่หรือไม่ พูดว่าถ้าฉันทำ (ใน r):
model = train(target~., data = data, method = "glmnet",
trControl = trainControl("cv", number = 10),
tuneLength = 10
)
รหัสนี้จะหาโมเดลที่ดีที่สุดให้ฉันในการทดลองทั้ง 10 ครั้งแล้วเมื่อฉันทำการทำนายฉันกำลังใช้โมเดลที่ดีที่สุด?
คำตอบ
การตรวจสอบความถูกต้องข้ามเป็นรูปแบบพิเศษที่แบ่งข้อมูลออกเป็นข้อมูลการฝึกอบรมและการทดสอบซึ่งการแยกนี้ไม่ได้เกิดขึ้นเพียงครั้งเดียว แต่เป็นตัวเลข $n$ ครั้ง.
นอกจากนี้บอกว่าถ้าฉันทำ (ใน r)
มีแพ็คเกจที่มีประสิทธิภาพมากที่สามารถโหลดลงใน R เรียกว่าcaret. caretมอบฟังก์ชันอันทรงพลังtrainที่ใช้ในโค้ดตัวอย่างของคุณ caretใช้เวลามากในการหาชุดพารามิเตอร์ที่ดีที่สุด (จากตารางของชุดค่าผสมที่เป็นไปได้) สำหรับการเรียนรู้ของเครื่อง รวมถึงผ่านการตรวจสอบความถูกต้องข้าม คุณจะไม่ต้องแยกข้อมูลด้วยมือ แต่จะเกิดการแยก
รหัสนี้จะหารุ่นที่ดีที่สุดให้ฉัน
มันจะค้นหาชุดพารามิเตอร์ที่ดีที่สุดจากตารางการรวมพารามิเตอร์ที่กำหนดโดยการลองใช้ ก่อนที่จะใช้เครื่องมือที่มีประสิทธิภาพเช่นtrainคุณควรเข้าใจตัวเลือกต่างๆให้ดีและเข้าใจด้วยว่าจะมีผลต่อตารางพารามิเตอร์ใดที่กำลังทดลองอยู่
โชคดีที่caretมาพร้อมกับคำอธิบายที่ยอดเยี่ยม เริ่มที่นี่:https://topepo.github.io/caret/model-training-and-tuning.html หรือเริ่มต้นที่จุดเริ่มต้นของหนังสือเล่มนั้นดีกว่า