XGBoost
提升集成学习模型的性能
从基学习器本身入手
从误差优化入手
集成回归树的误差定义
$arg minL=\sum_{i=1}^n l(y_i,y_i^\Lambda) +\sum_{k=1} ^K \Omega(f_k) $ \(y_i\)是实际值,$y_i^\Lambda $是误差
\(sl\Omega(f_k)=\gamma T+\frac{1}{2}\lambda \parallel w\parallel^2\)
T是树的深度,w是树f上不同结点的权重分数,\(\gamma\) 和 \(\lambda\) 是常数可以优化
找到最优结构解得函数最优解
贪心搜索
启发式搜索
原理:左子树梯度优化+右子树梯度优化-整体梯度优化=对某个节点分枝后的增益
精确搜索:这一步优化了就继续往下走,没有就回退。缺点是复杂度比较高
粗略搜索:对某个特征有个具体的分位值
需要对特征按照分数进行预排序
LightGBM
直方图算法
步骤:(1)对当前模型下的所有叶子结点处理
(2)对某个叶子进行分裂处理,这一步开始遍历所有的特征
(3)遍历所有的样本来构建直方图(装箱操作),计算每个箱中的样本的梯度和并记数
GOSS
训练算法更加关注没有充分训练的样本
EFB算法
合并互斥特征从而减少特征的数目
如何合并互斥特征
(1)以特征为节点,构造互斥关系图(类似图着色问题)
(2)特征偏移与替换法
一些参数的作用
(1)提高准确率
learn_rate
max_depth
num_leaves
(2)降低过拟合
max_bin
min_data_in_leaf
feature_fraction
bagging_fraction
bagging_freq
lambda_l2
min_split_gain
(3)并行化
device