missForest
missForest, R dilinde karışık tipte tablosal veriler için parametrik olmayan bir tamamlama yöntemidir. Sayısal ve kategorik değişkenleri aynı anda işler; gözlemlenenlerden eksik verileri tahmin etmek için rastgele ormanları yinelemeli olarak eğitir. Açık bir modelleme varsayımı veya matris ayrıştırması yoktur—sadece kutudan çıktığı gibi iyi çalışan güçlü kestirimsel tabanlar kullanılır.
- Herhangi bir sayısal ve faktör sütunu karışımıyla çalışır
- Doğrusal olmayanlıkları ve etkileşimleri yakalar
- Çanta dışı (OOB) tamamlama hatasını raporlar (NRMSE/PFC)
- Paralel yürütmeyi destekler (değişken başına veya orman başına)
- İki orman altyapısı:
ranger(varsayılan) verandomForest(eski/uyumluluk)
Kurulum
# 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$errorBir arka uç seçmek
# 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)Paralelleştirme
parallelize aracılığıyla iki mod mevcuttur:
"variables": farklı değişkenler için ormanları paralel olarak oluşturur (bir foreach arka ucu kaydedin)."forests": tek bir değişkenin ormanı içinde paralelleştirme yapar (ranger iş parçacıkları; veya randomForest için foreach alt-ormanları).
# 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)
API genel bakış
missForest(xmis, ...)
Çekirdek imputasyon fonksiyonu.
Temel argümanlar:
xmis— eksik değer içeren veri çerçevesi/matrisi (sütunlarnumericveyafactorolmalı).maxiter— maksimum iterasyon sayısı (varsayılan10).ntree— orman başına ağaç sayısı (varsayılan100).mtry— her bölmede denenen değişken sayısı (varsayılansqrt(p)).nodesize— uzunluk-2 sayısal: c(numeric, factor) için minimum düğüm boyutu. Varsayılanc(5, 1).variablewise—TRUEise değişken başına OOB hatası döndürür.parallelize—"no","variables"veya"forests".num.threads—rangeriçin iş parçacığı (randomForesttarafından dikkate alınmaz).backend—"ranger"(varsayılan) veya"randomForest".xtrue— karşılaştırma için isteğe bağlı tam veri ($errorekler).
backend = "ranger" için bazı argüman eşlemeleri:ntree → num.treesnodesize → min.bucket(regresyon/sınıflandırma için ayrı ayrı; varsayılanc(5,1))sampsize(sayılar) →sample.fraction(oranlar; tümü veya sınıf başına)classwt → class.weightscutoffolasılık ormanları uydurularak ve eşik sonrası işlemle ele alınır
Yardımcılar
mixError(ximp, xmis, xtrue)— gerçek eksik girdilerde NRMSE (sayısal) ve PFC (faktör) hesaplar.nrmse(ximp, xmis, xtrue)— sadece sürekli veriler için NRMSE hesaplar.prodNA(x, noNA = 0.1)— bir veri çerçevesine MCAR eksiklik enjekte eder.varClass(x)— her sütun için"numeric"/"factor"döndürür.
İpuçları & en iyi uygulamalar
- Karakter sütunlarını
missForestçağırmadan önce faktöre dönüştürün. - Geniş veri için
parallelize = "variables"seçeneğini düşünün. Derin/pahalı ağaçlar içinparallelize = "forests"seçeneğini düşünün. - Yarı-tekrarlanabilir sonuçlar için bir seed belirleyin:
set.seed(123); imp <- missForest(x)
``
- Prototipleme sırasında yinelemeyi hızlandırmak için
ntree değerini düşürebilirsiniz.---
Atıf
missForest kullanıyorsanız, lütfen aşağıdaki kaynağı atıf yapın:
Stekhoven, D. J. & Bühlmann, P. (2012). MissForest—karışık tipte veriler için parametrik olmayan eksik değer ataması.* Bioinformatics, 28(1), 112–118. https://doi.org/10.1093/bioinformatics/btr597
Paketi de şu şekilde atıf yapabilirsiniz:
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 ---