ใช้ Median Imputation
ในบทนี้จะใช้ชุดข้อมูล Wisconsin Breast Cancer ซึ่งเป็นปัญหา binary classification แบบคลาสสิก โดย 50% ของตัวอย่างเป็น benign และอีก 50% เป็น malignant ความท้าทายคือการแยกแยะว่าตัวอย่างใดเป็นประเภทใด
ชุดข้อมูลนี้น่าสนใจตรงที่ตัวทำนาย (predictor) หลายตัวมีค่าที่หายไป (missing value) และแถวส่วนใหญ่ในชุดข้อมูลมีค่าหายไปอย่างน้อยหนึ่งค่า สิ่งนี้เป็นความท้าทายในการสร้างโมเดล เพราะอัลกอริทึม machine learning ส่วนใหญ่ไม่สามารถจัดการค่าที่หายไปได้โดยตรง เช่น อาจนึกถึงการ fit โมเดล logistic regression กับข้อมูลนี้ก่อนเลย แต่ก่อนจะทำเช่นนั้น ต้องมีกลยุทธ์รับมือกับค่า NA เสียก่อน
โชคดีที่ฟังก์ชัน train() ใน caret มีอาร์กิวเมนต์ชื่อ preProcess ซึ่งช่วยให้ระบุได้ว่าจะใช้ median imputation เพื่อเติมค่าที่หายไป ในบทก่อนหน้า เราสร้างโมเดลด้วยฟังก์ชัน train() โดยใช้สูตร เช่น y ~ . แต่ยังมีอีกวิธีคือการระบุอาร์กิวเมนต์ x และ y ให้กับ train() โดยที่ x คือออบเจกต์ที่มีตัวอย่างในแถวและ feature ในคอลัมน์ ส่วน y คือเวกเตอร์ชนิด numeric หรือ factor ที่เก็บค่าผลลัพธ์ กล่าวอีกนัยหนึ่ง x คือ matrix หรือ data frame ที่มีชุดข้อมูลทั้งหมดซึ่งจะใช้กับอาร์กิวเมนต์ data ใน lm() แต่ไม่รวมคอลัมน์ตัวแปรตอบสนอง (response variable) ในขณะที่ y คือเวกเตอร์ที่มีเฉพาะคอลัมน์ตัวแปรตอบสนองนั้น
สำหรับแบบฝึกหัดนี้ อาร์กิวเมนต์ x ของ train() ถูกโหลดไว้ใน workspace แล้วในชื่อ breast_cancer_x และ y ในชื่อ breast_cancer_y
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning ด้วย caret ใน R
คำแนะนำการฝึกหัด
- ใช้ฟังก์ชัน
train()เพื่อ fit โมเดลglmชื่อmedian_modelกับชุดข้อมูล breast cancer โดยใช้preProcess = "medianImpute"เพื่อจัดการค่าที่หายไป - แสดงผล
median_modelที่ console
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Apply median imputation: median_model
median_model <- train(
x = ___,
y = ___,
method = ___,
trControl = myControl,
preProcess = ___
)
# Print median_model to console