Bổ sung giá trị thiếu bằng cây quyết định

Xử lý dữ liệu khuyết bằng Imputation trong R

Michal Oleszak

Machine Learning Engineer

Tiếp cận bổ sung bằng cây quyết định

Dùng mô hình máy học để dự đoán giá trị thiếu!

  • Phi tham số: không giả định quan hệ giữa các biến.
  • Nắm bắt mẫu phi tuyến phức tạp.
  • Thường dự đoán tốt hơn mô hình thống kê đơn giản.

Khóa học này: gói missForest, dựa trên randomForest

Xử lý dữ liệu khuyết bằng Imputation trong R

Cây quyết định

Sơ đồ cây quyết định cho thấy mô hình gán xác suất Tiểu đường khác nhau theo các kết hợp Chiều cao và Cân nặng.

Xử lý dữ liệu khuyết bằng Imputation trong R

Rừng ngẫu nhiên

Sơ đồ cách hoạt động của rừng ngẫu nhiên. Dữ liệu gốc tạo ba tập bagging với các tập cột ngẫu nhiên. Phù hợp một cây quyết định cho mỗi tập và gộp kết quả các cây ở cuối.

Xử lý dữ liệu khuyết bằng Imputation trong R

Thuật toán missForest

  1. Đoán ban đầu cho giá trị thiếu bằng trung bình.
  2. Sắp xếp biến tăng dần theo tỷ lệ thiếu.
  3. Với mỗi biến x:
    • Huấn luyện rừng ngẫu nhiên trên phần quan sát của x (dùng biến khác làm dự báo).
    • Dùng mô hình dự đoán phần thiếu của x.
  4. Lặp bước 3 đến khi giá trị bù hầu như không đổi.
Xử lý dữ liệu khuyết bằng Imputation trong R

missForest trong thực hành

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
Xử lý dữ liệu khuyết bằng Imputation trong R

Lỗi bổ sung

missForest() cung cấp ước lượng lỗi bù ngoài túi (OOB):

  • NRMSE (sai số căn bậc hai trung bình chuẩn hóa) cho biến liên tục.
  • PFC (tỷ lệ phân loại sai) cho biến phân loại.

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
Xử lý dữ liệu khuyết bằng Imputation trong R

Lỗi bổ sung

missForest() cung cấp ước lượng lỗi bù ngoài túi (OOB):

  • NRMSE (sai số căn bậc hai trung bình chuẩn hóa) cho biến liên tục.
  • PFC (tỷ lệ phân loại sai) cho biến phân loại.

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
Xử lý dữ liệu khuyết bằng Imputation trong R

Đánh đổi tốc độ–độ chính xác

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.

  • Giảm số cây trong mỗi rừng (tham số ntree).
  • Giảm số biến dùng để chia (tham số mtry).

Ảnh hưởng tới thời gian tính:

  • Giảm ntree tác động tuyến tính.
  • Giảm mtry tăng tốc hơn khi có nhiều biến.
Xử lý dữ liệu khuyết bằng Imputation trong R

Đánh đổi tốc độ–độ chính xác: thực hành

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

Ayo berlatih!

Xử lý dữ liệu khuyết bằng Imputation trong R

Preparing Video For Download...