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 x
pró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.obs
był liczbą losową między 1000 a 5000
n.extra.dummy.variables
między 1 a 20
ntree
zawsze 1000
sample_replacement
zawsze true
mtry
wynosi od 5 do 25, ograniczona n.obs
noise.factor
mię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.performance
jego zdolność do wyjaśnienia najwyższy ułamek TEV
zwiększa w ogóle, gdy samplesize
obniża się, gdy TEV
jest mniejsze niż 50%, zmniejsza się, gdy TEV
jest wyższa niż 50%.
Tak więc, jeśli twoje randomForest-modelfit
raporty 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 sampsize
do 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.