[英]human readable rules from xgboost in R
我尝试在R中使用xgboost从我的数据中获取规则(gbtree),因此我可以在其他系统中使用这些规则(而不是带有'predict'的预测数据)。 输入数据具有约数。 1500列和40 Mio行包含二进制稀疏数据,Label也是二进制列。
library(xgboost)
library(Matrix)
labels <- data.frame(labels = sample.int(2, m*1, TRUE)-1L)
observations <- Matrix(as.matrix(data.frame(feat_01=sample.int(2, size=100, T) -1,
feat_02=sample.int(2, size=100, T) -1,
feat_03=sample.int(2, size=100, T) -1,
feat_04=sample.int(2, size=100, T) -1,
feat_05=sample.int(2, size=100, T) -1)), sparse=T)
dtrain <- xgb.DMatrix(data = observations, label = labels$labels)
bstResult <- xgb.train(data = dtrain,
nthread = 1,
nround = 4,
max_depth = 3,
verbose = T,
objective = "binary:logistic",
booster='gbtree')
xgb.dump(bstResult)
xgb.plot.tree(model = bstResult, n_first_tree = 2)
我将数据可视化为xgb.dump或xgb.plot.tree。 但是我需要这样的形式的数据:
rule1:feat_01 == 1&feat_02 == 1&feat_03 == 0->标签= 1
rule2:feat_01 == 0&feat_03 == 1&feat_04 == 1->标签= 0
这可能吗?还是我走错了路?
问候平子
编辑:添加示例,并试图使问题更好
一方面,我认为您可以使用重要性矩阵来获取每个功能的覆盖范围和排名。 另一方面,xgboost使用装袋的弱学习者合奏,规则应该是“稀有”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.