XGBoost的注意点

  1. 注意:XGBoost的切分操作和普通的决策树切分过程是不一样的。普通的决策树在切分的时候并不考虑树的复杂度,而依赖后续的剪枝操作来控制。xgboost在切分的时候就已经考虑了树的复杂度,就是那个γ参数。所以,它不需要进行单独的剪枝操作。

  2. XGBoost的应用选择:
    “reg:linear” –线性回归。
    “reg:logistic” –逻辑回归。
    “binary:logistic” –二分类的逻辑回归问题,输出为概率。
    “binary:logitraw” –二分类的逻辑回归问题,输出的结果为wTx。
    “count:poisson” –计数问题的poisson回归,输出结果为poisson分布。 在poisson回归中,max_delta_step的缺省值为0.7。(used to safeguard optimization)
    “multi:softmax” –让XGBoost采用softmax目标函数处理多分类问题,同时需要设置参数num_class(类别个数)
    “multi:softprob” –和softmax一样,但是输出的是ndata * nclass的向量,可以将该向量reshape成ndata行nclass列的矩阵。没行数据表示样本所属于每个类别的概率。
    “rank:pairwise” –set XGBoost to do ranking task by minimizing the pairwise loss

  3. Adaboost与GBDT两者boosting的不同策略是两者的本质区别。
    Adaboost强调Adaptive(自适应),通过不断修改样本权重(增大分错样本权重,降低分对样本权重),不断加入弱分类器进行boosting。
    而GBDT则是旨在不断减少残差(回归),通过不断加入新的树旨在在残差减少(负梯度)的方向上建立一个新的模型。——即损失函数是旨在最快速度降低残差。
    而XGBoost的boosting策略则与GBDT类似,区别在于GBDT旨在通过不断加入新的树最快速度降低残差,而XGBoost则可以人为定义损失函数(可以是最小平方差、logistic loss function、hinge loss function或者人为定义的loss function),只需要知道该loss function对参数的一阶、二阶导数便可以进行boosting,其进一步增大了模型的泛华能力,其贪婪法寻找添加树的结构以及loss function中的损失函数与正则项等一系列策略也使得XGBoost预测更准确。
    XGBoost是通过最小化损失函数求取最优的树结构。 GBDT每一次的计算是都为了减少上一次的残差,进而在残差减少(负梯度)的方向上建立一个新的模型。
    XGBoost则可以自定义一套损失函数,借助泰勒展开(只需知道损失函数的一阶、二阶导数即可求出损失函数)转换为一元二次函数,得到极值点与对应极值即为所求。

4.XGBoost的调参细节:
estimator: model = xgb.XGBRegressor
https://blog.youkuaiyun.com/han_xiaoyang/article/details/52665396
estimator: model = xgb.XGBClassifier
https://segmentfault.com/a/1190000014040317
网格调参示例:https://blog.youkuaiyun.com/zllnau66/article/details/81980876

GBM调参:https://blog.youkuaiyun.com/han_xiaoyang/article/details/52663170

资源参考:

Adaboost、GBDT与XGBoost的区别
xgboost的原理没你想像的那么难

XGBoost是一个强大的梯度 boosting 框架,而注意力机制通常用于处理自然语言处理中的序列数据,比如在机器翻译或文本分类中。将这两个技术结合起来,可以提高模型对特征重要性的关注,特别是在非结构化的数据上。 要在XGBoost中集成注意力机制,首先需要明确的是,XGBoost本身并不直接支持注意力机制,因为它是基于树的模型。但是,我们可以通过一些间接的方式实现这一融合: 1. **特征加权**: 可以在每个训练样本生成之前,先通过注意力机制计算输入特征的重要性分数,然后将其作为特征权重传递给XGBoost。这相当于赋予了模型一种动态调整特征影响力的机制。 2. **自注意力层**: 如果是在深度学习模型(如Transformer)中先使用注意力机制,你可以提取出的注意力分布,然后用作特征选择,仅保留高注意力值的特征给XGBoost。 下面是一个简单的Python示例(假设你已经在XGBoost和PyTorch库中安装并导入了必要的模块): ```python import torch from sklearn.preprocessing import LabelEncoder from xgboost import DMatrix from transformers import TransformerModel # 定义注意力模型 attention_model = TransformerModel.from_pretrained('bert-base-chinese') def attention_weights(input_ids): # 使用BERT获取注意力权重 with torch.no_grad(): outputs = attention_model(input_ids) attentions = outputs[0] return attentions.softmax(dim=-1) # 对应XGBoost的数据预处理 le = LabelEncoder() y = le.fit_transform(y_labels) # 将标签编码 dtrain = DMatrix(X_train, label=y) # 预测阶段 input_ids = ... # 从输入数据中提取tokens attention_weights = attention_weights(input_ids).numpy() # 更新特征权重 weighted_features = X_train * attention_weights # 创建XGBoost DMatrix实例,注意将特征权重包含进来 xgb_dmatrix = DMatrix(weighted_features, label=y) # 训练XGBoost模型 model = xgb.train(params, xgb_dmatrix) ``` 请注意,这个例子非常简化,并未涵盖完整的训练流程,实际应用中还需要进行更多的细节处理和优化。此外,由于XGBoost和Transformer库的工作原理不同,它们之间的整合可能会有一些复杂性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值