เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การประเมินความแม่นยำของโมเดลแบบ Out-of-Sample

ตอนนี้รู้แล้วว่าการดูความแม่นยำแบบ out-of-sample นั้นสมเหตุสมผลกว่าแบบ in-sample ในแบบฝึกหัดนี้จึงต้องการสร้างตัววัดความแม่นยำแบบ out-of-sample ขึ้นมา

ก่อนอื่นต้องเตรียมข้อมูลให้พร้อมก่อน ให้นำ defaultData มาใช้อีกครั้ง โดย logitModelNew ถูกโหลดไว้ในสภาพแวดล้อมแล้ว

โปรดทราบว่าสำหรับการวิเคราะห์ที่ครบถ้วน จะต้องเปรียบเทียบโมเดลตัวเลือกต่าง ๆ โดยใช้ข้อมูลแบบ out-of-sample ด้วยเสมอ

ค่าความแม่นยำแบบ in-sample โดยใช้ threshold ที่เหมาะสมที่ 0.3 คือ 0.7922901 ตรวจสอบให้แน่ใจว่าเข้าใจว่ามี overfitting เกิดขึ้นหรือไม่

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Machine Learning for Marketing Analytics ใน R

ดูคอร์ส

คำแนะนำการฝึกหัด

  • แบ่งชุดข้อมูลแบบสุ่มออกเป็น training set และ test set โดย training set ควรมีข้อมูล 2/3 ของข้อมูลทั้งหมด

  • จากนั้นรันโมเดลและตั้งชื่อว่า logitTrainNew โดยใช้สูตรที่กำหนดให้

  • ทำนายผลบน test set แล้วคำนวณค่าความแม่นยำแบบ out-of-sample ด้วย confusion matrix โปรดทราบว่าไม่สามารถดาวน์โหลด SDMTools จาก CRAN ได้อีกต่อไป หากต้องการติดตั้งในคอมพิวเตอร์ส่วนตัว ให้ใช้คำสั่ง remotes::install_version("SDMTools", "1.1-221.2") แทน

  • เปรียบเทียบค่าความแม่นยำแบบ out-of-sample กับค่า in-sample ที่ระบุไว้ข้างต้น

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Split data in train and test set
set.seed(534381) 
defaultData$isTrain <- rbinom(nrow(defaultData), 1, 0.66)
train <- subset(defaultData, ___ == 1)
test <- subset(defaultData, ___  == 0)

logitTrainNew <- glm(formulaLogit, family = binomial, data = ___) # Modeling
test$predNew <- predict(logitTrainNew, type = "response", newdata = ___) # Predictions

# Out-of-sample confusion matrix and accuracy
confMatrixModelNew <- confusion.matrix(___, ___, threshold = 0.3) 
sum(diag(confMatrixModelNew)) / sum(confMatrixModelNew) # Compare this value to the in-sample accuracy
แก้ไขและรันโค้ด