GBDT模型学习
2024-07-09 13:47:38 7 举报
AI智能生成
GBDT(Gradient Boosting Decision Tree)模型是一种基于决策树算法的集成学习方法,主要用于回归和分类任务。GBDT模型通过迭代地训练决策树,然后将所有树的预测结果相加得到最终的预测结果。在每次迭代中,新的决策树会尝试纠正之前树的预测错误,从而提升整体的预测性能。GBDT模型的特点包括:鲁棒性强,可以处理非线性数据和特征之间的相互作用,以及可以自动进行特征选择和降维。GBDT模型的训练过程包括:初始化一个常数值作为预测结果,然后迭代地对每个训练样本进行预测,并计算损失函数,最后使用梯度提升算法训练决策树,以最小化损失函数。GBDT模型在许多领域都有广泛的应用,如广告点击率预测、信用评分、疾病预测等。
作者其他创作
大纲/内容
XGBoost<br>自动学习缺失值策略<br>显性正则化控制<br>特征复杂<br>可解释性
核心原理
损失函数<br>
XGBoost使用泰勒展开式对损失函数进行近似,通常到二阶,这有助于更精确地逼近最优解
正则化项:为了防止过拟合,XGBoost引入了正则化项,该项考虑了模型的复杂度,包括叶子节点的数量和叶子节点的分数。
目标函数:XGBoost的目标函数是损失函数和正则化项的加权和,通过优化此目标函数来构建模型。
模型更新:采用贪婪算法逐步构建树模型,每一步迭代都会学习一个新的树模型以减小目标函数。
特点
高效的并行化处理:XGBoost能够有效地利用多核处理器进行并行计算,加速模型训练过程。
支持多种损失函数和自定义评价指标:适合多种类型的问题。
灵活性强:支持多种参数调整,以适应不同的数据集和问题。
LightGBM<br>适用于大规模数据集<br>大量类别特征<br>
核心原理
直方图算法:LightGBM使用直方图算法来加速寻找最佳分枝点的过程,相比于传统的预排序算法,它更加高效且节省内存。
<b>Leaf-wise</b>生长策略:与传统的Level-wise(XGBoost)生长策略不同,LightGBM使用Leaf-wise策略,<br>这意味着<b>每次选择当前损失最大的叶子节点进行分裂</b>,从而得到更好的精度,通常能够更快地找到最优的分裂点。<br>但为了防止过拟合,LightGBM在Leaf-wise之上增加了一个最大深度的限制。<br>
特点
训练速度快:特别是在处理大数据集时,其训练速度远超其他GBDT工具。
内存占用低:通过直方图算法和特征捆绑技术,降低了内存使用。<br>
精度高:由于采用Leaf-wise生长策略,能够在相同分裂次数下获得更低的误差。
CatBoost<br>专注于处理分类问题<br>
核心原理
类别型特征处理:<b>CatBoost擅长处理类别型特征</b>,可以直接传入类别型特征的列标识,模型<b>会自动对其进行独热编码或类似的编码方法</b>。
目标变量预测偏移:为了解决梯度偏差和预测偏移问题,CatBoost使用了一种特殊的算法来为每个样本计算一个权重,该权重用于在训练过程中调整目标变量的预测值。
特点
支持类别型特征:无需手动进行独热编码或其他类型的预处理。
高效处理大规模数据集:通过优化算法和并行处理,CatBoost能够在短时间内处理大量数据。
高准确性:由于其独特的算法设计和对类别型特征的支持,CatBoost在许多实际问题中都表现出较高的准确性。
GBDT引申知识点
梯度提升<br>&梯度下降
梯度提升(Gradient Boosting)<br>
目的
梯度提升是一种<b>集成学习算法</b>,用于<b>构建强预测模型</b>,通常用于<b>分类和回归</b>问题。
原理
<font color="#a23735"><b>通过逐步添加新的弱预测模型(通常是决策树),每个新的模型都在前一个模型的残差上进行训练,目的是最小化损失函数。</b></font>
应用
用于构建预测模型,特别是在需要<b>处理复杂数据集和提高模型性能</b>时
梯度下降(Gradient Descent)
目的
梯度下降是一种用于最小化目标函数的优化算法,通常用于<b>寻找参数的最优值</b>,如在<b>线性回归、逻辑回归</b>或其他机器学习模型中。
原理
通过计算目标函数相对于参数的梯度(即导数),然后更新参数以减少误差。这个过程重复进行,直到找到一个局部最小值。
应用
主要用于<b>参数估计和函数优化</b>,特别是在<b>参数数量相对较少</b>时
正则化
L1范数(L1 norm)
也被称为曼哈顿距离(Manhattan distance)或绝对值范数(Absolute value norm),是向量中各个元素绝对值之和。<br>
对于一个n维向量x = [x1, x2, ..., xn],L1公式计算:<br>( ||x||_1 = |x_1| + |x_2| + ... + |x_n| )
由于其性质,L1范数在某些优化问题中会导致解向量的稀疏性,即解的许多组件为零。<br>这使得L1范数在<b>特征选择</b>和稀疏表示中特别有用。<br>
常用于<b>Lasso正则化</b>,可以用于<b>特征选择</b>
L2范数(L2 norm)
也被称为欧几里得范数(Euclidean norm)或模长(Magnitude),是向量各个元素平方和的平方根。
对于同一个n维向量x,其L2范数定义为:<br>( ||x||_2 = \sqrt{|x_1|^2 + |x_2|^2 + ... + |x_n|^2} )
L2范数:对异常值更敏感。
L2范数通常更容易求解,尤其是当使用像梯度下降这样的优化算法时。
L2范数:常用于<b>Ridge</b>正则化,有助于<b>防止模型过拟合</b>。
损失函数<br>&目标函数
定义
损失函数:<br>损失函数用于衡量模型预测值与真实值之间的差异。<br>在XGBoost中,损失函数通常用于评估模型在<b>单个</b>样本上的预测误差。<br>
常见损失函数:<br>1. 回归常用:<br> 1.1 均方误差(Mean Squared Error, MSE):<br>用于回归问题,计算预测值与实际值差的平方的平均值。<br> 1.2 绝对误差(Mean Absolute Error, MAE):<br>计算预测值与实际值差的绝对值的平均值,常用于回归问题。<br>2. 分类常用:<br> 2.1 交叉熵损失(Cross-Entropy Loss):<br>其中,<span class="equation-text" data-index="0" data-equation="M"><span></span><span></span></span> 是真实类别数量,<span class="equation-text" data-index="1" data-equation="y_{o,c}"><span></span><span></span></span> 是真实标签的独热编码,<span class="equation-text" data-index="2" data-equation="p_{o,c}"><span></span><span><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mrow><mi>o</mi><mo separator="true">,</mo><mi>c</mi></mrow></msub></mrow></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="mord"><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.15139200000000003em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><br></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.286108em;"><span></span></span></span></span></span></span></span></span></span></span><span></span></span> 是模型预测属于第 <span class="equation-text" data-index="3" data-equation="c"><span></span><span> </span></span>类的概率。<br> 2.2 对数损失(Log Loss) 或 对数似然损失<b><font color="#a23735">(Log-Likelihood Loss)</font></b>:<br>与交叉熵损失相似,通常用于二分类问题。<br>其中,<span class="equation-text" data-index="4" data-equation="y_i"><span></span><span></span></span> 是二进制标签(0或1),<span class="equation-text" data-index="5" data-equation="\hat{y}_i"><span></span><span></span></span> 是模型预测的概率。<br> 2.3 Hinge损失(Hinge Loss):<br>用于支持向量机(SVM),用于分类问题。<br>其中,<span class="equation-text" data-index="6" data-equation="x_i"><span></span><span></span></span> 是样本的特征向量,<span class="equation-text" data-index="7" data-equation="y_i"><span></span><span></span></span> 是样本的标签。<br><br>
目标函数:<br>如XGBoost的目标函数=损失函数+ 正则化项的加权和<br><br><b>目标函数优化的过程就是最小化预测误差和模型复杂度的过程。</b><br>
类型
经验风险损失函数:<br>它表示预测结果和实际结果的差别。<br>在XGBoost中,这通常通过泰勒展开式(通常到二阶)来近似损失函数,以更精确地逼近<b>最优解</b>。<br>
结构风险损失函数:<br>在经验风险损失函数的基础上,<b>加上正则项</b>,用于<b>控制模型的复杂度</b>。<br>正则项通常包括树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和等。<br>
计算
正则化项:<br>正则化项用于防止过拟合,它包含了树模型的复杂度。<br>正则化项可以写作:其中,T是叶子节点的数量,w是叶子节点的分数,λ和γ是正则化参数。<br>
泰勒展开式:<br>是一种数学计算方法,如XGBoost中使用泰勒展开式对损失函数进行近似计算。<br>对于一般的损失函数,泰勒展开式可以写作:其中,f(x)是当前模型的预测值,<br>g和h分别是损失函数关于预测值的一阶导数(梯度)和二阶导数(海森矩阵)。0
应用
模型训练:<br>在模型训练过程中,XGBoost通过最小化目标函数(即损失函数和正则化项的加权和)来<b>构建最优模型</b>。<br>
模型评估:<br>损失函数也用于<b>评估模型的性能</b>。<br>损失越小,表示模型在训练集上的预测误差越小,模型的性能通常也越好。<br>
损失函数选择
选择合适的损失函数:<br>不同的预测建模问题(如分类或回归)需要选择不同的损失函数。<br>例如,对于分类问题,常用的损失函数有softmax交叉熵损失函数;对于回归问题,常用的损失函数有均方误差损失函数。<br>
调整<b>正则化参数</b>:<br>正则化参数λ和γ用于控制模型的复杂度。<br>通过调整这些参数,可以在模型的预测能力和复杂度之间找到平衡,以防止过拟合或欠拟合。<br>
0 条评论
下一页