源码结构:
主要内容在src文件夹中
src/
cli_main.cc 命令行接口,主函数中对xgboost执行的任务进行选择
learner.cc 学习算法的简要实现
logging.cc 日志的实现
commom/
group_data.h 用于按照键值将数据分组
math.h softmax logsum 等数学工具以及排序的比较函数
quantile 获取分位数
sync.h rabit通信相关
data/
adapter.h 提供对外部数据格式的访问,并构造DMatrix对象
simple_dmatrix.h 内存版的DMatrix
simple_dmatrix.cc 以上声明的实现
simple_batch_iterator.h 批处理内存中数据的迭代器
sparse_page_dmatrix.h 外存版的DMatrix
sparse_page_dmatrix.cc
sparse_page_source.h用于创建DMatrix的外存数据源
sparse_page_source.cc以上声明的实现
sparse_page_raw_format.cc 二进制的sparse_page
sparse_page_writer.cc sparse_page中的writer
device_dmatrix.h DMatrix放在设备存储中的版本
gbm/
gblinear.cc 带有L1L2正则的线性提升器的实现
gblinear_model.h 线性提升器模型存储加载的定义
gblinear_model.cc 以上内容的实现
gbm.cc 梯度提升器的注册工厂
gbtree.h 梯度提升树的相关声明
gbtree.cc 梯度提升树的简单实现
gbtree_model.h 关于模型加载和存储的声明
gbtree_model.cc 以上内容的实现
metric/
metric.cc 评价矩阵的注册工厂
metric_common.h 将评价矩阵在gpu上注册
multiclass-metric.cc 多分类的评价矩阵
rank_metric.cc 用于ltr的评价矩阵
elementwise_metric.cc 二分类问题和回归问题的评价矩阵
objective/
objective.cc 目标函数的注册工厂
multiclass_obj.cc 多分类目标函数
aft_obj.cc
rank_obj.cc lambda rank的目标函数包含pairwise和group wise两种目标函数以及数据处理的相关过程
regression_obj.cc 单值回归和分类的目标函数
predictor/
predictor.cc predictor的注册工厂
cpu_predictor.cc 通过cpu返回预测数据
gpu_predictor.cu 通过gpu返回预测数据
tree/
param.h 训练的相关参数
param.cc 以上内容的实现
constrains.cc
split_evaluator.h切分方法的定义
split_evaluator.cc切分方法的实现
tree_model.cc树更新器的注册工厂
updater_colmaker.cc 贪婪精确分割法构建树
updater_histmaker.cc 利用直方图构建树
updater_prune.cc 对树进行剪枝
updater_quantile_hist.cc 利用分位点构建树
updater_refresh.cc 根据数据集更新权重和统计量
updater_skmaker.cc 用加权分位图的方法获取分裂点来构造一棵树
参考:https://cloud.tencent.com/developer/user/1008081
https://github.com/xiaoming-qxm/xgboost_code_analysis/blob/master/xgboost.md
网友评论