关于树的机器学习方法及其区别对比

关于树的机器学习方法及其比较

————随机森林、梯度提升树、XGBoost、LightGBM 和 CatBoost

机器学习方法

支持分类任务

支持回归任务

支持排序任务

随机森林

Yes

Yes

No

GBDT

Yes

Yes

No

XGBoost

Yes

Yes

Yes

LightGBM

Yes

Yes

Yes

CatBoost

Yes

Yes

Yes

一、随机森林(Random Forest):

随机森林是一种集成学习方法,主要用于分类和回归任务。它通过构建多个决策树,并在每个节点随机选择特征来训练每个树,最后通过所有树的投票或平均结果来进行预测。

特点:

易用性:不需要过多的参数调节,适用于各种数据类型。

抗过拟合:通过集成多个树,减少单个树的过拟合风险。

高维数据处理:在处理高维数据时表现良好,因为每个节点只选择一部分特征。

缺点:

计算成本高:由于构建多个决策树,计算资源需求较高。

解释性较差:由于模型的复杂性,难以解释每个特征对预测结果的影响。

{

max_features 决定了每棵树在每个分裂节点上能够使用的特征数量,是一个重要的参数,通常,我们从变量个数(特征)的平方根开始,然后在该数字上下尝试,最后选择一个最优值。在库中,一般默认值为使用特征总数的平方根个特征。

}

二、梯度提升树(Gradient Boosting Decision Tree, GBDT)

梯度提升树是一种提升方法,通过逐步添加新的树来纠正前一棵树的错误,从而提高模型的精度。每棵树都是基于前一棵树的残差训练的。

特点:

高精度:通过逐步优化,能够获得高精度的预测结果。

灵活性:可以用于分类、回归等多种任务。

缺点:

训练时间长:逐步训练每棵树,需要较长的训练时间。

易过拟合:如果树的数量过多,容易出现过拟合。

{

梯度提升方法一般使用具有8-32个叶子结构的树来进行训练和预测

}

三、XGBoost(Extreme Gradient Boosting)

XGBoost(Extreme Gradient Boosting)是GBDT的一种高效实现,使用二次泰勒展开来近似损失函数,并在计算过程中进行优化。

特点:

适用于大型复杂的数据集。

高效性:利用并行计算和增量学习等技术,提高了训练速度和效率。

鲁棒性(鲁棒性(Robustness)在机器学习和统计学中,是指模型或算法在面对不完美、异常、或不完整的数据时,仍然能够保持稳定和较好性能的能力。鲁棒性是衡量模型适应性和稳定性的重要指标。):对缺失值有较好的处理能力,并且可以自动进行特征选择。

正则化(正则化(Regularization)是一种防止机器学习模型过拟合的方法。):通过L1和L2正则化减少过拟合。

{

//正则化详细内容:

正则化通过在损失函数中加入额外的项,惩罚模型的复杂度,从而限制模型的自由度,防止其在训练数据上过度拟合。

L1正则化(Lasso Regression):L1正则化通过在损失函数中加入参数的绝对值之和作为惩罚项。

公式:损失函数 = 原损失函数 + λ * ∑|w|

效果:L1正则化可以产生稀疏模型,即许多参数会被缩减为零,这对于特征选择有帮助。

L2正则化(Ridge Regression):L2正则化通过在损失函数中加入参数的平方和作为惩罚项。

公式:损失函数 = 原损失函数 + λ * ∑w²

效果:L2正则化会使参数趋向于较小的值,但不会使其完全为零,这可以防止模型过度复杂化,但仍保留所有特征。

在实际应用中,正则化通过调整λ(正则化强度)参数来控制正则化项的影响力。较大的λ会增加正则化项的影响,减少模型复杂度;较小的λ则会减少正则化项的影响,允许模型更复杂。

}

缺点:

参数调节复杂:需要较多的参数调节,调参过程较为复杂。

例如:

learning_rate(eta):

默认值:0.3

推荐范围:0.01到0.3

调节建议:较小的学习率(如0.01或0.1)通常与较大的树数量(n_estimators)配合使用。

n_estimators:总的树数量,迭代次数。

默认值:100

推荐范围:100到1000,具体视情况而定。

调节建议:结合学习率调节。如果学习率较小,树数量应增加。

max_depth:树的最大深度。

默认值:6

推荐范围:3到10

调节建议:较小的深度可以防止过拟合,但可能降低模型表现;较大的深度能捕捉更复杂的模式,但也容易过拟合。

min_child_weight:决定一个子节点中所需的最小样本权重和。这个参数可以用来避免过拟合。

默认值:1

推荐范围:1到10

调节建议:较大的值可以避免模型学习到局部的噪声。

subsample:控制每棵树随机采样的比例,防止过拟合。

默认值:1

推荐范围:0.5到1

调节建议:通常设置为0.8左右。

gamma: gain-gamma如果为正数,则保留这个树枝,如果为负数,则去除这个树枝。

默认值:0,若为1,可以防止模型过拟合。

作用:指定节点分裂所需的最小损失减少量。越大越保守。

reg_alpha(L1正则化):L1正则化项系数。

默认值:0

推荐范围:0到1

调节建议:增加此参数可以减少模型复杂度,防止过拟合。

reg_lambda(L2正则化):L2正则化项系数。

默认值:1

推荐范围:0到1

调节建议:增加此参数可以减少模型复杂度,防止过拟合。

四、LightGBM(Light Gradient Boosting Machine)

LightGBM(Light Gradient Boosting Machine)是微软开发的一种基于直方图的梯度提升框架,旨在提高训练效率和速度以及提高了准确率。

主要特别的有三点:

  1. 优化分割树,基于直方图的梯度提升框架。
  2. 进行特征工程,简化数据维度。
  3. 基于梯度一侧采样。

特点:

高效性:通过基于直方图和智能捆绑(合并)的方法,实现了将部分数据降维度,显著提高了训练速度和内存效率。

处理大规模数据:可以处理大规模数据和高维数据。

支持并行和GPU:支持并行计算和GPU加速,进一步提高训练速度。

缺点:

处理类别特征较弱:在处理类别特征时表现较差,需要进行特征工程。

五、CatBoost(Categorical Boosting)

CatBoost(Categorical Boosting)是Yandex开发的一种梯度提升框架,专门针对类别特征进行了优化。

特点:

处理类别特征:无需进行复杂的特征工程,能够自动处理类别特征。

高效性:通过高效的算法设计,提供快速的训练速度。

鲁棒性:对缺失值、噪声数据有较好的鲁棒性。

缺点:

新兴算法:相对于XGBoost和LightGBM,应用和社区支持还不够广泛。

六、训练结果

对于数据集使用以上不同方法,获得的ACC和AUC以及训练时间如下。

算法

训练ACC

训练AUC

测试ACC

测试AUC

耗时(s)

Random Forest

0.9797

0.9714

0.9797

0.9711

12.26

GBDT

0.9786

0.9770

0.9791

0.9751

22.95

XGBoost

0.9787

0.9786

0.9786

0.9736

1.09

LightGBM

0.9800

0.9810

0.9803

0.9753

2.03

CatBoost

0.9800

0.9790

0.9808

0.9740

1.86

对于避免训练过拟合,除了在各树的算法中提到的一些参数调整的方法外,我们还可以设置最少数据量为n时(一般为20),便不再进行下一步分枝。

损失函数

一般情况,做分类任务时,我们常用对数损失函数,做回归任务时,我们常使用用均方误差。

原因如下:

对数损失函数(Log Loss)

对数损失函数,它的主要特点包括:

衡量概率预测的准确性:对数损失函数不仅仅考虑预测的类别是否正确,还考虑了预测的概率大小。正确的预测概率越接近1,损失越小;错误的预测概率越接近0,损失越大。

梯度的性质:对数损失函数的梯度在接近正确类别时变化更平缓,而在远离正确类别时变化更剧烈,这有助于模型在优化过程中更快地收敛。

均方误差(Mean Squared Error, MSE)

均方误差常用于回归任务,其主要特点包括:

衡量预测值与真实值的距离:均方误差是预测值与实际值之间差异的平方和的平均值。预测值越接近实际值,误差越小。

凸函数:均方误差是一个凸函数,这意味着它只有一个全局最小值,有助于梯度下降法找到最优解。

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值