如何防止特征在 python XGBClassifier 模型中相互影响
How to prevent features to interact with each other in python XGBClassifier model
我训练过这个模型:
model = XGBClassifier( #XGBClassifier
objective='binary:logistic',
base_score=0.5,
booster='gbtree',
colsample_bylevel=1,
colsample_bynode=1,
colsample_bytree=1,
enable_categorical=False,
gamma=2,
gpu_id=-1,
importance_type=None,
interaction_constraints='',
learning_rate=0.1,
max_delta_step=0,
max_depth=3,
min_child_weight=7,
monotone_constraints='(1,1,1,1,1)',
n_jobs=1,
nthread=1,
num_parallel_tree=1,
predictor='auto',
random_state=0,
reg_alpha=0,
reg_lambda=1,
scale_pos_weight=1,
silent=True,
subsample=0.8,
tree_method='exact',
validate_parameters=1,
pred_contribs=True,
verbose=True)
model.fit(X, Y)
X 数据框有 5 个预测特征。
有没有办法通过编辑 XGBClassifier 代码中的参数来防止这 5 个特征相互影响?
如果您更改 interaction_constraints=[]
它将强制这些功能无法交互。
如果您想验证情况是否如此,您可以通过执行类似
的操作来询问各个树的输出
trees = model.get_booster().get_dump()
然后检查树 [0]、树 [1] 等,您会发现每棵树只能存在一个特征。
我训练过这个模型:
model = XGBClassifier( #XGBClassifier
objective='binary:logistic',
base_score=0.5,
booster='gbtree',
colsample_bylevel=1,
colsample_bynode=1,
colsample_bytree=1,
enable_categorical=False,
gamma=2,
gpu_id=-1,
importance_type=None,
interaction_constraints='',
learning_rate=0.1,
max_delta_step=0,
max_depth=3,
min_child_weight=7,
monotone_constraints='(1,1,1,1,1)',
n_jobs=1,
nthread=1,
num_parallel_tree=1,
predictor='auto',
random_state=0,
reg_alpha=0,
reg_lambda=1,
scale_pos_weight=1,
silent=True,
subsample=0.8,
tree_method='exact',
validate_parameters=1,
pred_contribs=True,
verbose=True)
model.fit(X, Y)
X 数据框有 5 个预测特征。 有没有办法通过编辑 XGBClassifier 代码中的参数来防止这 5 个特征相互影响?
如果您更改 interaction_constraints=[]
它将强制这些功能无法交互。
如果您想验证情况是否如此,您可以通过执行类似
的操作来询问各个树的输出trees = model.get_booster().get_dump()
然后检查树 [0]、树 [1] 等,您会发现每棵树只能存在一个特征。