我不确定是否可以将xgboost的多个特性以我所需的方式结合起来运行一个有稀疏数据预测器的随机森林,用于多分类因变量。我知道xgboost可以通过调整参数做到以下任意一项:
1. 随机森林:
我得到的长度错误是将我的单个多类依赖向量(我们称之为n)的长度与稀疏矩阵索引的长度进行比较,我认为对于j个预测变量,稀疏矩阵索引的长度应该是j* n。
1. 随机森林:
bst <- xgboost(data = train$data, label = train$label, max.depth = 4, num_parallel_tree = 1000, subsample = 0.5, colsample_bytree =0.5, nround = 1, objective = "binary:logistic")
2. 稀疏矩阵预测器。
bst <- xgboost(data = sparse_matrix, label = output_vector, max.depth = 4,
eta = 1, nthread = 2, nround = 10,objective = "binary:logistic")
- Multinomial(多类)依赖变量模型通过
multi:softmax
或multi:softprob
xgboost(data = data, label = multinomial_vector, max.depth = 4,
eta = 1, nthread = 2, nround = 10,objective = "multi:softmax")
然而,当我尝试同时执行它们时,遇到了关于不符合长度的错误:
sparse_matrix <- sparse.model.matrix(TripType~.-1, data = train)
Y <- train$TripType
bst <- xgboost(data = sparse_matrix, label = Y, max.depth = 4, num_parallel_tree = 100, subsample = 0.5, colsample_bytree =0.5, nround = 1, objective = "multi:softmax")
Error in xgb.setinfo(dmat, names(p), p[[1]]) :
The length of labels must equal to the number of rows in the input data
length(Y)
[1] 647054
length(sparse_matrix)
[1] 66210988200
nrow(sparse_matrix)
[1] 642925
我得到的长度错误是将我的单个多类依赖向量(我们称之为n)的长度与稀疏矩阵索引的长度进行比较,我认为对于j个预测变量,稀疏矩阵索引的长度应该是j* n。
具体用例是Kaggle.com上的Walmart竞赛(数据是公开的,但默认情况下非常大 - 约650,000行和几千个候选特征)。我一直在通过H2O对其运行多项式RF模型,但听起来很多其他人一直在使用xgboost
,所以我想知道这是否可能。
如果不可能,那么我想知道是否可以/应该分别估计依赖变量的每个级别并尝试汇总结果?