0、万恶之源版本号
tensorflow,pytorch,显卡版本,conda版本
1、什么是GBDT?
2、xgboost在GBDT上做了哪些优化?
3、随机森林核心思想有几个,分别是什么?
4、随机森林输出由什么决定?
5、xgboost怎么处理缺失值?
6、xgboost并行化怎么体现?
7、xgboost为什么用泰勒二阶展开?
1、gradient boosting decision tree
一种基于boosting增强策略的加法模型,训练的时候采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t-1 棵树的预测结果与训练样本真实值的残差。
一种基于boosting增强策略的加法模型,训练时采用前向分布算法进行贪婪学习,每次迭代都学习一棵CART(classification and regression tree)树拟合前t-1棵树的预测结果与训练样本真实值的残差。
增强策略:boosting bagging
2、损失函数进行了二阶泰勒展开
目标函数加入正则项
3、2个,采样和完全分裂
完全分裂:决策树每一次分裂扩张节点时,能分裂必须分裂,分裂依据可以是信息增益/信息增益比
采样:行采样/列采样 分别对应 样本/特征
行采样:模型从M条数据中随机采样m条数据,m一般是M的平方根大小。分别作为每一棵决策树的训练集
保证每棵决策树使用不用的训练集,一定程度上防止过拟合
列采样:每棵决策树都从M个特征中随机挑选m个特征作为节点分裂特征计算
全局/局部列采样
全局:一棵树建树过程用同一批采样特征
局部:每一次节点分裂时,均匀单独随机挑选m个特征进行扩展。
列采样进一步保证了随机森林不会出现过拟合问题
4、随机森林输出由每一棵决策树的结果共同决定
分类树 投票
回归树 所有结果的平均值
5、对树中每个非叶子节点,xgboost可以自动学出其默认的分裂方向,若某个样本该特征值缺失,会将其划入默认分支
6、并行化是对特征维度的并行,树还是串行的
xgboost预先将每个特征按特征值排好序,存储为块结构,在后面查找特征分割点的时候可以重复使用,分裂结点时采用多线程并行查找每个特征的最优分裂点,极大提升了训练速度
7、两点
精确性:GBDT一阶泰勒展开,xgboost二阶泰勒展开,更精准的逼近真实的损失函数
可扩展性:支持损失函数自定义,只需新损失函数二阶可导