本系列博客基于温州大学黄海广博士的机器学习课程的笔记,小伙伴们想更详细学习黄博士课程请移步到黄博士的Github、或者机器学习初学者公众号,现在在中国慕课也是可以学习的,内容包括机器学习、深度学习及Python编程,matplotlib、numpy、pandas、sklearn等,资料很详细,要系统学习请移步哦!笔者的博客只是笔记,内容不会十分详细,甚至会有些少错误!
1.XGBoost算法
- XGBoost目标函数定义:
O b j ( t ) = ∑ i = 1 n L ( y i , y ^ t − 1 + f t ( x i ) ) + Ω ( f t ) + c o n s t a n t Obj(t)=\sum_{i=1}^nL(y_i,\hat{y}^{t-1}+f_t(x_i))+\Omega(f_t)+constant Obj(t)=i=1∑nL(yi,y^t−1+ft(xi))+Ω(ft)+constant - 泰勒展开:
f ( x + Δ x ) ≈ f ( x ) + f ′ ( x ) Δ x + 1 2 f ′ ′ ( x ) Δ x 2 f(x+\Delta{x})≈f(x)+f'(x)\Delta{x}+\frac{1}{2}f''(x)\Delta{x}^2 f(x+Δx)≈f(x)+f′(x)Δx+21f′′(x)Δx2
Δ x = f t ( x i ) , 表 示 第 t 棵 树 的 输 出 结 果 等 于 t − 1 时 刻 新 增 加 的 结 果 \Delta{x}=f_t(x_i),表示第t棵树的输出结果等于t-1时刻新增加的结果 Δx=ft(xi),表示第t棵树的输出结果等于t−1时刻新增加的结果; - 化简:
O b j ( t ) = ∑ i = 1 n [ L ( y i , y ^ t − 1 ) + g i f t ( x i ) + 1 2 h i f t 2 ( x i ) ] + Ω ( f t ) + c o n s t a n t g i = ∂ L ( y i , y ^ ( t − 1 ) ) ∂ y ^ ( t − 1 ) ; h i = ∂ 2 L ( y i , y ^ ( t − 1 ) ) ∂ y ^ ( t − 1 ) \begin{aligned} &Obj(t)=\sum_{i=1}^n[L(y_i,\hat{y}^{t-1})+g_if_t(x_i)+\frac{1}{2}h_if_t^2(x_i)]+\Omega(f_t)+constant\ &g_i=\frac{\partial{L(y_i,\hat{y}^{(t-1)})}}{\partial\hat{y}^{(t-1)}};h_i=\frac{\partial^2L(y_i,\hat{y}^{(t-1)})}{\partial\hat{y}^{(t-1)}} \end{aligned} Obj(t)=i=1∑n[L(yi,y^t−1)+gift(xi)+21hift2(xi)]+Ω(ft)+constantgi=∂y^(t−1)∂L(yi,y^(t−1));hi=∂y^(t−1)∂2L(yi,y^(t−1))
-
LightGBM由微软提出,主要用于解决GDBT在海量数据中遇到的问题,以便其可以更好更快地用于工业实践中,其相对XGBoost具有训练速度快、内存占用低的特点;
-
LightGBM与XGBoost比较,优势:
- 更快的训练速度;
- 更低的内存消耗;
- 更好的准确率;
- 分布式支持,可快速处理海量数据;
-
LightGBM主要改进:
- 基于梯度的单边采样算法(Gradient-based One-Side Sampling,GOSS);
- 互斥特征捆绑算法(Exclusive Feature Bundling,EFB);
- 直方图算法(Histogram);
- 基于最大深度的Leaf-wise的垂直生长算法;
-
LightGBM=XGBoost+GOSS+EFB+Histogram;
- 主要思想:通过对样本采样的方法来减少计算目标函数增益时候的复杂度;
- GOSS算法保留了梯度大的样本,并对梯度小的样本进行随机抽样,为了不改变样本的数据分布,在计算增益时,为梯度小的样本引入一个常数进行平衡;
- 如果一个样本的梯度很小,说明该样本的训练误差很小,或说该样本已经得到了很好的训练;
- 输入:训练数据,迭代步数d,大梯度数据的采样率a,小梯度数据的采样率b,损失函数和弱学习器的类型(一般为决策树);
- 输出:训练好的强学习器
- 根据样本点的梯度的绝对值对它们进行降序排序;
- 对排序后的结果选取前 a ∗ 100 % a*100\% a∗100%的样本生成一个大梯度样本点的子集;
- 对剩下的样本集合 ( 1 − a ) ∗ 100 % (1-a)*100\% (1−a)∗100%的样本,随机地选取 b ∗ ( 1 − a ) ∗ 100 % b*(1-a)*100\% b∗(1−a)∗100%个样本点,生成一个小梯度样本点的集合;
- 将大梯度样本和采样的小梯度样本合并;
- 将小梯度样本乘上一个权重系数 1 − a b \frac{1-a}{b} b1−a;
- 使用上述的采样样本,学习一个新的弱学习器;
- 不断地重复以上步骤,直到达到规定的迭代次数或收敛为止;
- 高维特征往往是稀疏的,特征间可能是相互排斥的,如果两个特征不完全互斥,用互斥率表示互斥程度;EFB算法指出如果将一些特征进行融合绑定,则可以降低特征数量;
- 直方图加速
- 在构建叶节点的直方图时,通过父节点的直方图与相邻叶节点的直方图相减的方式构建,可以减少一半的计算量;即:一个叶子节点的直方图通过它的父节点的直方图与其兄弟的直方图做差得到;
注:集成学习这两章讲得不够详细,请小伙伴移步到黄海广教授视频课;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)