Как я могу усреднить несколько объектов GBM?
Есть ли способ усреднить несколько объектов gbm, чтобы вывод можно было визуализировать с помощью gbm.plot?
Например, используя данные радужной оболочки (неуместно, но код выполняется), я создал функцию f, которая случайным образом выбирает равное количество "обратных" наблюдений для "pres" наблюдений, а затем подгоняет модель с помощью gbm.step().
library('dismo')
library('gbm')
library('readr')
pres <- subset(iris, iris$Species == "setosa")
pres <- pres[1:20,]
pres$Species <- 1
back <- subset(iris, iris$Species == "versicolor")
back$Species <- 0
f <- function(pres, back){
# randomly sample an equal number of background to present points
row_idx = sample(1:nrow(back), 1*nrow(pres)) #index of rows to be used
Back_formatted <- back[row_idx, ] #subset the data
# presence and absence also have different variables so select those
that overlap
shared_cols = intersect(colnames(Back_formatted),
colnames(pres))
# join presences and absences by common column names
pres_df <- pres[, shared_cols]
back_df <- Back_formatted[, shared_cols]
data_df <-as.data.frame(rbind(pres_df, back_df))
output <- gbm.step(data=data_df,
gbm.x =
c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width"),
gbm.y = "Species",
family = "bernoulli",
tree.complexity = 5,
learning.rate = 0.01,
bag.fraction = 1)
return(output)
}
Затем я повторяю эту функцию 10 раз, чтобы получить список выходных данных gbm.model.
v <- replicate(10, f(pres, back), simplify = FALSE)
Я могу построить каждый из этих выходов отдельно в цикле for:
for (i in 1:10){
gbm.plot(v[[i]])
}
Однако есть ли способ усреднить каждый выход в одну модель, которая затем может быть построена?
Любая помощь будет очень высоко ценится!