missForest
missForest là một phương pháp nội suy phi tham số dành cho dữ liệu dạng bảng hỗn hợp kiểu trong R. Nó xử lý đồng thời các biến số và phân loại bằng cách huấn luyện rừng ngẫu nhiên lặp lại để dự đoán các giá trị thiếu từ các giá trị quan sát được. Không giả định mô hình rõ ràng, không phân tích ma trận—chỉ sử dụng các mô hình dự đoán mạnh mẽ có hiệu quả ngay khi sử dụng.
- Làm việc với bất kỳ sự kết hợp nào của cột số và cột phân loại
- Bắt được các phi tuyến tính và tương tác
- Báo cáo lỗi nội suy out-of-bag (OOB) (NRMSE/PFC)
- Hỗ trợ thực thi song song (theo biến hoặc theo rừng)
- Hai backend rừng:
ranger(mặc định) vàrandomForest(cũ/tương thích)
Cài đặt
# CRAN (recommended)
install.packages("missForest")Development version (from GitHub)
install.packages("remotes")
remotes::install_github("stekhoven/missForest")Quick start
library(missForest)Example data
data(iris)Introduce ~20% MCAR missingness
set.seed(81)
iris_mis <- prodNA(iris, noNA = 0.20)Impute with default backend (ranger)
imp <- missForest(iris_mis, xtrue = iris, verbose = TRUE)Imputed data
head(imp$ximp)Estimated OOB errors (NRMSE for numeric, PFC for factors)
imp$OOBerrorTrue error if xtrue was provided (for benchmarking only)
imp$errorLựa chọn backend
# Legacy behavior using randomForest
imp_rf <- missForest(iris_mis, backend = "randomForest")Explicitly use ranger with limited threads
imp_rg <- missForest(iris_mis, backend = "ranger", num.threads = 2)Song song hóa
Hai chế độ có sẵn thông qua parallelize:
"variables": xây dựng rừng cho các biến khác nhau song song (đăng ký một backend foreach)."forests": song song hóa trong một rừng của biến đơn lẻ (các luồng ranger; hoặc sub-forest foreach cho randomForest).
# Not run:
library(doParallel)
registerDoParallel(2)
imp_vars <- missForest(iris_mis, parallelize = "variables", verbose = TRUE)
imp_fors <- missForest(iris_mis, parallelize = "forests", verbose = TRUE, num.threads = 2)
Tổng quan API
missForest(xmis, ...)
Hàm nội suy chính.
Các tham số chính:
xmis— data frame/matrix chứa giá trị thiếu (các cột phải lànumerichoặcfactor).maxiter— số vòng lặp tối đa (mặc định10).ntree— số cây mỗi rừng (mặc định100).mtry— số biến thử nghiệm tại mỗi lần chia (mặc địnhsqrt(p)).nodesize— mảng số độ dài-2: kích thước nút tối thiểu cho c(numeric, factor). Mặc địnhc(5, 1).variablewise— trả về lỗi OOB theo biến nếuTRUE.parallelize—"no","variables", hoặc"forests".num.threads— số luồng choranger(bỏ qua vớirandomForest).backend—"ranger"(mặc định) hoặc"randomForest".xtrue— dữ liệu đầy đủ tùy chọn để benchmark (thêm$error).
backend = "ranger":ntree → num.treesnodesize → min.bucket(riêng cho hồi quy/phân loại; mặc địnhc(5,1))sampsize(số lượng) →sample.fraction(tỷ lệ; toàn bộ hoặc theo lớp)classwt → class.weightscutoffxử lý bằng cách fit probability forests và hậu kiểm ngưỡng
Tiện ích
mixError(ximp, xmis, xtrue)— tính NRMSE (numeric) và PFC (factor) trên các giá trị thiếu thực tế.nrmse(ximp, xmis, xtrue)— NRMSE cho dữ liệu chỉ liên tục.prodNA(x, noNA = 0.1)— tạo thiếu dữ liệu MCAR vào một data frame.varClass(x)— trả về"numeric"/"factor"theo từng cột.
Mẹo & thực tiễn tốt nhất
- Chuyển đổi các cột ký tự thành factor trước khi gọi
missForest. - Đối với dữ liệu rộng, hãy cân nhắc sử dụng
parallelize = "variables". Đối với cây sâu/tốn kém, hãy cân nhắcparallelize = "forests". - Đặt seed để có kết quả gần như tái lập:
set.seed(123); imp <- missForest(x)
``
- Bạn có thể giảm
ntree trong quá trình thử nghiệm để tăng tốc độ lặp.---
Trích dẫn
Nếu bạn sử dụng missForest, vui lòng trích dẫn:
Stekhoven, D. J. & Bühlmann, P. (2012). MissForest—nonparametric missing value imputation for mixed-type data.* Bioinformatics, 28(1), 112–118. https://doi.org/10.1093/bioinformatics/btr597
Bạn cũng có thể trích dẫn gói phần mềm này:
r
citation("missForest")
``Contributing
Issues and pull requests are welcome. Please include a minimal reproducible example when reporting bugs. For performance discussions, share small benchmarks and session info.
License
GPL (≥ 2)
Contact
Daniel J. Stekhoven — stekhoven@nexus.ethz.ch
--- Tranlated By Open Ai Tx | Last indexed: 2026-07-17 ---