Przez noc prowadziłem 4500 losowych lasów z losowymi ustawieniami parametrów:
Problem regresji, w Ysignal = x1^2+sin(x2*pi) + x3 * x4 + x5
którym xpróbkuje się dowolne niezależnie od rozkładu normalnego, sd = 1, średnia = 1
Ytotal = Ysignal + Yerror
gdzie Yerror = rnorm(n.observations,sd=sd(Ysignal))*noise.factor
theoretical.explainable.variance"TEV" = var(Ysignal= / var(Ytotal)
randomForest.performance = explained.variance(OOB cross-validation) / TEV
próbki danych zostały pobrane z problemu regresji, a dodatkowy szum
n.obsbył liczbą losową między 1000 a 5000
n.extra.dummy.variablesmiędzy 1 a 20
ntree zawsze 1000
sample_replacement zawsze true
mtrywynosi od 5 do 25, ograniczona n.obs
noise.factormiędzy 0 a 9
samplesize.ratio losowa liczba od 10% do 100%, stosunek wielkości każdego bootstrapu
wszystkie modele zostały przeszkolone rfo = randomForest(x=X, y=Ytotal, <more args>)
randomForest.performancejego zdolność do wyjaśnienia najwyższy ułamek TEVzwiększa w ogóle, gdy samplesizeobniża się, gdy TEVjest mniejsze niż 50%, zmniejsza się, gdy TEVjest wyższa niż 50%.
Tak więc, jeśli twoje randomForest-modelfitraporty np. 15% wyjaśniają wariancję przez OOB-CV, i jest to dla ciebie akceptowalna precyzja modelu, prawdopodobnie prawdopodobnie możesz podnieść nieco wydajność, obniżając sampsizedo jednej trzeciej podanych obserwacji ntree > 1000.
Morale : W przypadku bardzo hałaśliwych danych lepiej jest dekorelować drzewa, niż obniżyć uprzedzenie poprzez hodowanie drzew o maksymalnej wielkości.