xgboost相关

xgboost多线程预测的不安全问题

xgboost的predict_proba

官网上说了,predict_proba是一个多线程不安全的方法,主要是因为预测的一个C++代码内部调用的时候有一个PredLoopSpecalize,里面对openmp的thread_temp变量作为类成员变量,在多线程会被当成公共变量修改。说白了就是有预测的内部变量是公共变量。

xgboost特征重要性

如何获取特征重要性:booster中有三种获取方式:
Importance type can be defined as:
'weight' - the number of times a feature is used to split the data across all trees.
'gain' - the average gain of the feature when it is used in trees
'cover' - the average coverage of the feature when it is used in trees
默认是用weight来显示,但是不一定准确
cover: the sum of second order gradient of training data classified to the leaf, if it is square loss, this simply corresponds to the number of instances in that branch. Deeper in the tree a node is, lower this metric will be

XGBoost函数笔记

XGBoost核心代码基于C++开发,训练和预测都是C++代码,外部由Python封装。
最常用的两个类是:

  1. xgboost.XGBClassifier分类器
  2. xgboost.XGBRegressor回归器
    两个类都继承了XGBModel,XGBModel实现了sklearn的接口
    其中分类和回归都是基于booster来完成的,内部有个Booster类,非常重要,每个booset都是一个单独的模型,内部有很多函数,比如get_score,get_dump等函数,都非常有用。booset里面很多函数也是和C代码结合的部分。

booster类别初探

booster有三种选择: gbtree, gblinear or dart.

  1. gbtree 梯度提升树,常用,默认
  2. gblinear就是一个线性分类/回归器
  3. dart 带dropout的

gblinear

利用gblinear训练出的结果就是一个线性分类器

并行化

树内的部可以做并行,在一次分裂之后,子树的分裂可以通过

你可能感兴趣的:(xgboost相关)