Xử lý dữ liệu khuyết bằng Imputation trong R
Michal Oleszak
Machine Learning Engineer
Dùng mô hình máy học để dự đoán giá trị thiếu!
Khóa học này: gói missForest, dựa trên randomForest


nhanes %>% is.na() %>% colSums()
Age Gender Weight Height Diabetes TotChol Pulse PhysActive
0 0 9 8 1 85 32 26
library(missForest)
imp_res <- missForest(nhanes)
nhanes_imp <- imp_res$ximp
nhanes_imp %>% is.na() %>% colSums()
Age Gender Weight Height Diabetes TotChol Pulse PhysActive
0 0 0 0 0 0 0 0
missForest() cung cấp ước lượng lỗi bù ngoài túi (OOB):
Trong cả hai, kết quả tốt gần 0; gần 1 là kém.
imp_res <- missForest(nhanes)
imp_res$OOBerror
NRMSE PFC
0.147687025 0.003676471
missForest() cung cấp ước lượng lỗi bù ngoài túi (OOB):
Trong cả hai, kết quả tốt gần 0; gần 1 là kém.
imp_res <- missForest(nhanes, variablewise = TRUE)
imp_res$OOBerror
MSE PFC MSE MSE PFC MSE MSE MSE
0.00000 0.00000 285.79563 40.42142 0.00735 0.53444 129.03609 0.17576
Huấn luyện nhiều rừng ngẫu nhiên có thể tốn thời gian.
Ý tưởng: hy sinh chút độ chính xác, giảm kích thước rừng để rút ngắn thời gian tính.
ntree).mtry).Ảnh hưởng tới thời gian tính:
ntree tác động tuyến tính.mtry tăng tốc hơn khi có nhiều biến.Thiết lập mặc định:
start_time <- Sys.time()
imp_res <- missForest(nhanes)
end_time <- Sys.time()
print(imp_res$OOBerror)
print(end_time - start_time)
NRMSE PFC
0.147687025 0.003676471
Time difference of 5.496582 secs
Rừng rút gọn:
start_time <- Sys.time()
imp_res <- missForest(nhanes,
ntree = 10,
mtry = 2)
end_time <- Sys.time()
print(imp_res$OOBerror)
print(end_time - start_time)
NRMSE PFC
0.162420139 0.007425743
Time difference of 0.516367 secs
Xử lý dữ liệu khuyết bằng Imputation trong R