Cross-Validation คืออะไร?

Aug 30 2020

จากความเข้าใจของผมจาก google และโพสต์อื่น ๆ เช่นนี้การตรวจสอบความถูกต้องข้ามกันคืออะไร? และการตรวจสอบความถูกต้องข้ามคืออะไร? . ฉันเข้าใจว่า (k- fold) cross validation หมายถึงการแยกข้อมูลออกเป็น ($k-1$) การฝึกอบรมและการทดสอบ 1 ชุด กล่าวอีกนัยหนึ่งคือใช้สำหรับค้นหาความแม่นยำของแบบจำลอง

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

model = train(target~., data = data, method = "glmnet",
  trControl = trainControl("cv", number = 10),
  tuneLength = 10
)

รหัสนี้จะหาโมเดลที่ดีที่สุดให้ฉันในการทดลองทั้ง 10 ครั้งแล้วเมื่อฉันทำการทำนายฉันกำลังใช้โมเดลที่ดีที่สุด?

คำตอบ

3 Bernhard Aug 30 2020 at 15:06

การตรวจสอบความถูกต้องข้ามเป็นรูปแบบพิเศษที่แบ่งข้อมูลออกเป็นข้อมูลการฝึกอบรมและการทดสอบซึ่งการแยกนี้ไม่ได้เกิดขึ้นเพียงครั้งเดียว แต่เป็นตัวเลข $n$ ครั้ง.

นอกจากนี้บอกว่าถ้าฉันทำ (ใน r)

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

รหัสนี้จะหารุ่นที่ดีที่สุดให้ฉัน

มันจะค้นหาชุดพารามิเตอร์ที่ดีที่สุดจากตารางการรวมพารามิเตอร์ที่กำหนดโดยการลองใช้ ก่อนที่จะใช้เครื่องมือที่มีประสิทธิภาพเช่นtrainคุณควรเข้าใจตัวเลือกต่างๆให้ดีและเข้าใจด้วยว่าจะมีผลต่อตารางพารามิเตอร์ใดที่กำลังทดลองอยู่

โชคดีที่caretมาพร้อมกับคำอธิบายที่ยอดเยี่ยม เริ่มที่นี่:https://topepo.github.io/caret/model-training-and-tuning.html หรือเริ่มต้นที่จุดเริ่มต้นของหนังสือเล่มนั้นดีกว่า