眾所周知,通過函式構建xgboost模型時boost_tree(),可以通過函式的objective引數引入gamma回歸set_engine(),如下圖:
xgbst = boost_tree(
trees = tune(),
tree_depth = tune(),
min_n = tune(),
learn_rate = tune(),
loss_reduction = tune(),
sample_size = tune()) %>%
set_engine("xgboost", objective = "reg:gamma") %>%
set_mode("regression")
但是,我對使用隨機森林模型很感興趣。因此,考慮到可以在目標函式中引入引數,我嘗試重復上述相同的計算程序,但對于隨機森林,如下所示:
library(randomForest)
library(parsnip)
rfmod = rand_forest(
trees = tune(),
mtry = tune(),
min_n = tune()) %>%
set_engine("randomForest", objective = "reg:gamma") %>%
set_mode("regression")
結果,我面臨一個錯誤,即無法在上述模型中引入 Gamma 回歸,并且計算例程中存在錯誤規范。在文獻中,我已經找到了在隨機森林模型中利用 Gamma 分布的作品。
在這種情況下,我該如何解決?
uj5u.com熱心網友回復:
rpart您正在尋找的方法不在 randomForest我的理解范圍內。但是有一個包distRforest有一個名為 的方法(函式)rforest,在這個方法中你可以設定一個型別的森林來構建。選項之一是 Gamma。
method = 'gamma'
您還可以通過設定使用 gamma 來檢查袋外錯誤:
track_oob=TRUE使用時method=gamma
看看您是否能夠以這種方式配置您的模型
uj5u.com熱心網友回復:
根據XGBoost 中的 Random Forests(TM) ,您可以將演算法設定為適合 randomForest,假設 sample_size 小于 1 并且您不進行提升階段:
library(parsnip)
xgbst = boost_tree(
trees = 100,
learn_rate = 1,
sample_size = 0.8) %>%
set_engine("xgboost", objective = "reg:gamma",
num_boost_round=1, colsample_bytree=0.8, counts=F) %>%
set_mode("regression")
fit(xgbst, mpg ~ ., data = mtcars, )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/526661.html
標籤:r机器学习回归随机森林
下一篇:ValueError:multilabel-indicatorformatisnotsupported,由于錯誤無法制作ROC曲線
