繁体   English   中英

R中xgboost的人类可读规则

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM