xgboost 订阅
XGBoost是一个优化的分布式梯度增强库,旨在实现高效,灵活和便携。它在 Gradient Boosting 框架下实现机器学习算法。XGBoost提供并行树提升(也称为GBDT,GBM),可以快速准确地解决许多数据科学问题。相同的代码在主要的分布式环境(Hadoop,SGE,MPI)上运行,并且可以解决数十亿个示例之外的问题。 [1] 展开全文
XGBoost是一个优化的分布式梯度增强库,旨在实现高效,灵活和便携。它在 Gradient Boosting 框架下实现机器学习算法。XGBoost提供并行树提升(也称为GBDT,GBM),可以快速准确地解决许多数据科学问题。相同的代码在主要的分布式环境(Hadoop,SGE,MPI)上运行,并且可以解决数十亿个示例之外的问题。 [1]
信息
外文名
XGBoost
易语言简介
XGBoost [2]  是对梯度提升算法的改进,求解损失函数极值时使用了牛顿法,将损失函数泰勒展开到二阶,另外损失函数中加入了正则化项。训练时的目标函数由两部分构成,第一部分为梯度提升算法损失,第二部分为正则化项。损失函数定义为 [2]  其中n为训练函数样本数,l是对单个样本的损失,假设它为凸函数, 为模型对训练样本的预测值, 为训练样本的真实标签值。正则化项定义了模型的复杂程度: 其中, 和 为人工设置的参数,w为决策树所有叶子节点值形成的向量,T为叶子节点数。正则化项
收起全文
精华内容
下载资源
问答
  • xgboost
    千次阅读
    2021-01-14 00:49:53

    目录

    1、CART树

    CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布。

    CART算法由以下两步组成:

    决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;

    决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时损失函数最小作为剪枝的标准。

    CART生成

    决策树的生成是递归地构建二叉决策树的过程,对回归树用平方误差最小化准则,对分类树使用基尼系数最小化准则,进行特征选择,生成二叉树。

    2、XgBoost损失函数原理

    不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数,去拟合上次预测的残差。当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数,最后只需要将每棵树对应的分数加起来就是该样本的预测值。

    3、XgBoost损失函数

    4、分裂节点算法

    基于空间切分去构造一颗决策树是一个NP难问题,我们不可能去遍历所有树结构,因此,XGBoost使用了和CART回归树一样的想法,利用贪婪算法,遍历所有特征的所有特征划分点,不同的是使用上式目标函数值作为评价函数。具体做法就是分裂后的目标函数值比单子叶子节点的目标函数的增益,同时为了限制树生长过深,还加了个阈值,只有当增益大于该阈值才进行分裂

    5、正则化

    XGBoost有几种防止过拟合的正则化方法。

    1.在目标函数中,不仅包含了模型的拟合误差函数,还增加了关于每棵树复杂度的惩罚项,即叶子节点的个数以及叶子节点分数的平方项,限制了树的复杂度。

    2.像GBDT那样,可以对每个模型乘上一个步长a,a∈(0,1],用来降低每个模型对预测的贡献。

    3.可以行采样与列采样,与随机森林类似。

    6、缺失值处理

    当样本的第i个特征值缺失时,无法利用该特征进行划分时,XGBoost的想法是将该样本分别划分到左结点和右结点,然后计算其增益,哪个大就划分到哪边。

    7、XGBoost优缺点

    优点

    1.使用许多策略去防止过拟合,如:正则化项、Shrinkage and Column Subsampling等。

    2.目标函数优化利用了损失函数关于待求函数的二阶导数

    3.支持并行化,这是XGBoost的闪光点,虽然树与树之间是串行关系,但是同层级节点可并行。具体的对于某个节点,节点内选择最佳分裂点,候选分裂点计算增益用多线程并行。训练速度快。

    4.添加了对稀疏数据的处理。

    5.交叉验证,early stop,当预测结果已经很好的时候可以提前停止建树,加快训练速度。

    6.支持设置样本权重,该权重体现在一阶导数g和二阶导数h,通过调整权重可以去更加关注一些样本。

    缺点

    与LightGBM相比不足之处如下:

    1)xgBoosting采用预排序,在迭代之前,对结点的特征做预排序,遍历选择最优分割点,数据量大时,贪心法耗时,LightGBM方法采用histogram算法,占用的内存低,数据分割的复杂度更低;

    2)xgBoosting采用level-wise生成决策树,同时分裂同一层的叶子,从而进行多线程优化,不容易过拟合,但很多叶子节点的分裂增益较低,没必要进行跟进一步的分裂,这就带来了不必要的开销;LightGBM采用深度优化,leaf-wise生长策略,每次从当前叶子中选择增益最大的结点进行分裂,循环迭代,但会生长出更深的决策树,产生过拟合,因此引入了一个阈值进行限制,防止过拟合

    8、sklearn中XGBoost参数

    XGBoost的作者把所有的参数分成了三类:

    1、通用参数:宏观函数控制。

    2、Booster参数:控制每一步的booster(tree/regression)。

    3、学习目标参数:控制训练目标的表现。

    8.1 通用参数

    这些参数用来控制XGBoost的宏观功能。

    1、booster[默认gbtree]

    选择每次迭代的模型,有两种选择:

    gbtree:基于树的模型

    gbliner:线性模型

    2、silent[默认0]

    当这个参数值为1时,静默模式开启,不会输出任何信息。 一般这个参数就保持默认的0,因为这样能帮我们更好地理解模型.

    3、nthread[默认值为最大可能的线程数]

    这个参数用来进行多线程控制,应当输入系统的核数。 如果你希望使用CPU全部的核,那就不要输入这个参数,算法会自动检测它。

    还有两个参数,XGBoost会自动设置,目前不用管它。

    8.2 booster参数

    尽管有两种booster可供选择,我这里只介绍tree booster,因为它的表现远远胜过linear booster,所以linear booster很少用到。

    1、eta[默认0.3]

    和GBM中的 learning rate 参数类似。 通过减少每一步的权重,可以提高模型的鲁棒性。 典型值为0.01-0.2。

    2、min_child_weight[默认1]

    决定最小叶子节点样本权重和。 和GBM的 min_child_leaf 参数类似,但不完全一样。XGBoost的这个参数是最小样本权重的和,而GBM参数是最小样本总数。 这个参数用于避免过拟合。当它的值较大时,可以避免模型学习到局部的特殊样本。 但是如果这个值过高,会导致欠拟合。这个参数需要使用CV来调整。

    3、max_depth[默认6]

    这个值为树的最大深度。 这个值也是用来避免过拟合的。max_depth越大,模型会学到更具体更局部的样本。 需要使用CV函数来进行调优。 典型值:3-10

    4、max_leaf_nodes

    树上最大的节点或叶子的数量。 可以替代max_depth的作用。因为如果生成的是二叉树,一个深度为n的树最多生成n2个叶子。 如果定义了这个参数,GBM会忽略max_depth参数。

    5、gamma[默认0]

    在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关,所以是需要调整的。

    6、max_delta_step[默认0]

    这参数限制每棵树权重改变的最大步长。如果这个参数的值为0,那就意味着没有约束。如果它被赋予了某个正值,那么它会让这个算法更加保守。 通常,这个参数不需要设置。但是当各类别的样本十分不平衡时,它对逻辑回归是很有帮助的。 这个参数一般用不到,但是你可以挖掘出来它更多的用处。

    7、subsample[默认1]

    这个参数控制对于每棵树,随机采样的比例。 减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。 典型值:0.5-1

    8、colsample_bytree[默认1]

    和GBM里面的max_features参数类似。用来控制每棵随机采样的列数的占比(每一列是一个特征)。 典型值:0.5-1

    9、colsample_bylevel[默认1]

    用来控制树的每一级的每一次分裂,对列数的采样的占比。 我个人一般不太用这个参数,因为subsample参数和colsample_bytree参数可以起到相同的作用。但是如果感兴趣,可以挖掘这个参数更多的用处。

    10、lambda[默认1]

    权重的L2正则化项。(和Ridge regression类似)。 这个参数是用来控制XGBoost的正则化部分的。虽然大部分数据科学家很少用到这个参数,但是这个参数在减少过拟合上还是可以挖掘出更多用处的。

    11、alpha[默认1]

    权重的L1正则化项。(和Lasso regression类似)。 可以应用在很高维度的情况下,使得算法的速度更快。

    12、scale_pos_weight[默认1]

    在各类别样本十分不平衡时,把这个参数设定为一个正值,可以使算法更快收敛。

    8.3 学习目标参数

    这个参数用来控制理想的优化目标和每一步结果的度量方法。

    1、objective[默认reg:linear]

    这个参数定义需要被最小化的损失函数。最常用的值有:

    binary:logistic 二分类的逻辑回归,返回预测的概率(不是类别)。 multi:softmax 使用softmax的多分类器,返回预测的类别(不是概率)。

    在这种情况下,你还需要多设一个参数:num_class(类别数目)。 multi:softprob 和multi:softmax参数一样,但是返回的是每个数据属于各个类别的概率。

    2、eval_metric[默认值取决于objective参数的取值]

    对于有效数据的度量方法。 对于回归问题,默认值是rmse,对于分类问题,默认值是error。 典型值有:

    rmse 均方根误差(∑Ni=1?2N???√) mae 平均绝对误差(∑Ni=1|?|N) logloss 负对数似然函数值 error 二分类错误率(阈值为0.5) merror 多分类错误率 mlogloss 多分类logloss损失函数 auc 曲线下面积

    3、seed(默认0)

    随机数的种子 设置它可以复现随机数据的结果,也可以用于调整参数

    参考链接

    更多相关内容
  • Xgboost

    2021-03-29 12:05:53
    Xgboost
  • 失衡-Xgboost 该软件包含二进制分类问题中Xgboost [2](<\ url> )的加权损失和焦点损失[1]实现的代码。 我们使用加权和失焦函数的主要原因是为了解决标签不平衡数据的问题。 原始的Xgboost程序提供了一种简便的...
  • 利用xgboost对多变量结果进行预测分析的学习,建立模型
  • 1、内容概要:本资源主要基于XGBoost与LightGBM实现文本分类,适用于初学者学习文本分类使用。 2、数据集为电商真实商品评论数据,主要包括训练集data_train,测试集data_test ,经过预处理的训练集clean_data_train...
  • 提供了两个文件:xgboost_train和xgboost_test,它们从Matlab内部调用xgboost dll。 该示例用于分类。 可以提供停止学习过程迭代的评估标准。 支持的评估标准是“AUC”、“准确度”、“无”。 'AUC'和'Accuracy'...
  • weka-xgboost 此软件包需要在系统中。 该软件包与Weka> = 3.9.1兼容它可以作为非官方软件包安装在Weka中(您可以从下载预构建软件包)。 可从Weka GUIChooser的“工具”菜单中获得GUI软件包管理器。 您可以通过选择...
  • JPMML-XGBoost Java库和命令行应用程序,用于将模型转换为PMML。先决条件Java 1.8或更高版本。安装输入项目根目录并使用构建: mvn clean install构建生成可执行的uber-JAR文件target/jpmml-xgboost-executable-1.5-...
  • xgboost代码回归matlab 功能选择 我编写了简单的代码来合并特征选择的几种方法和机器学习的分类器方法。 通过使用此代码,我们可以选择特征后得到结果,也可以知道分类后的结果。 通过分类结果,我们可以了解选择后...
  • xgboost代码回归matlab 通过遥感CNN功能预测贫困 入门 对于此项目,我们提供了使用遥感CNN功能进行贫困预测的研究。 通过从CNN提供的4096个特征中精心选择特征,我们训练了一个模型,该模型可以比使用夜灯强度更好地...
  • xgboost代码回归matlab 神经解码: 包含许多用于解码神经活动的方法的python软件包 该软件包包含经典解码方法(维纳滤波器,维纳级联,卡尔曼滤波器,支持向量回归)和现代机器学习方法(XGBoost,密集神经网络,...
  • xgboost4j 适用于Java的Xgboost
  • 清华镜像源安装 NGboost XGboost Catboost pip install catboost -i https://pypi.tuna.tsinghua.edu.cn/simple pip install ngboost -i https://pypi.tuna.tsinghua.edu.cn/simple pip install xgboost -i ...
  • 回归预测 | MATLAB实现XGBoost多输入单输出(完整源码和数据) 多输入单输出,运行环境MATLAB2018b及以上。
  • xgboost代码回归matlab PSYCH259:语音性别识别 先决条件 Tensorflow 1.0 源代码 python代码 /src文件夹包含我所有的源代码。 *.py文件用于实现RNN模型和预处理音频原始数据; rnn_main.py文件实现了整个培训和测试...
  • 本文通过XGBoost的算法思想到XGBoost的目标函数转换,通过泰勒公式和叶节点的角度对XGBoost目标函数进行转换,然后通过树结构的生成策略去生成每一颗模型树,最后讲解于GBDT的算法区别以及相关参数。 目录如下: ...
  • 手写xgboost算法,几乎实现xgboost的所有算法,之中有与xgboost库进行比较xgboos的性能和方法,结果是差不多的,达到了预期的要求,简单的数据集也放在了上面。 并且这之中包括详细的注释,也包括了很多有关于...
  • 直接pip install xgboost报错xgboost.libpath.XGBoostLibraryNotFound: Cannot find XGBoost Library in the candidate path, did you install compilers and run build.sh in root path? xgboost.libpath....
  • pyspark-xgboost.zip

    2021-06-25 09:35:29
    使用方式参见: https://season.blog.csdn.net/article/details/118196915
  • 深度XGBoost图像分类器对于这个项目,我开发了用于图像分类的CNN-XGBoost模型。 这个想法是在分类时利用CNN的特征提取功能和XGBoost的准确性。 我将使用CIFAR-10数据集,并将在三种不同的CNN架构上测试混合模型。 ...
  • Linux下安装Xgboost并支持GPU下载源码支持GPU正常流程报错:nvcc fatal : redefinition of argument ‘std’查看本机cmake版本查找报错原因确认报错原因解决办法安装Python支持查看安装包 下载源码 git clone --...
  • 2. copy libxgboost.dll into the xgboost_install_dir\python-package\xgboost\ directory 3. cd xgboost_install_dir\python-package\ 4. python setup.py install 下面是使用举例 import xgboost xr = ...
  • xgboost windows依赖jar包 用于 spark等计算 maven依赖: <groupId>ml.dmlc <artifactId>xgboost4j-spark <!--windows使用0.81-SNAPSHOT版本--> <!--version>0.80; <version>0.81-SNAPSHOT 包含 ...
  • RF、GBDT、XGBoost

    2021-01-06 21:29:00
    RF、GBDT和XGBoost都属于集成学习(Ensemble Learning),集成学习的目的是通过结合多个学习器的预测结果来改善单个学习器的泛化能力和鲁棒性。 根据个体学习器的生成方式,目前的集成学习方法大致分为两大类:即...
  • XGBoost is an optimized distributed gradient boosting library designed to be highly efficient, flexible and portable. It implements machine learning algorithms under the Gradient Boosting framework. ...
  • 隐私保护XGBoost推断 描述 此仓库是隐私保护XGBoost( )的原型实现。 我们采用几种保留属性的加密方案来加密XGBoost模型,以便保留隐私的模型可以预测加密的查询。 这项工作的扩展摘要( )出现在NeurIPS 2020的...
  • lightgbm(xgboost)中的焦点损失和标签平滑,用于多类 此损失函数包含焦点损失[1]和标签平滑[2],现在仅支持lightgbm用于多类(类> 3,它将在以后支持xgboost和二进制类问题) 标签平滑 平滑值表示ε的值: 焦点...
  • 改进的 XGBoost 类似 scikit-learn 的界面关于scikit-learn 是 Python 的机器学习库。 XGBoost 是一个新的有用的梯度提升库,它提供了一个定制的 Python 界面以及一个简化的 scikit-learn-like 界面。 这个 repo ...
  • XGBoost 的增强决策树,并使用最佳模型在未标记数据中找到我们的信号(数据挑战)。 最后计算进程的for。 作者: (帕多瓦大学) (帕多瓦大学、慕尼黑路德维希马克西米利安大学) (帕多瓦大学) 监督人是: 教授...
  • XGBoost运算符 运营商的孵化项目。 使用XGBoost运算符可以轻松地在Kubernetes集群上运行分布式XGBoost作业训练和批处理预测。 总体设计可以在找到。概述该存储库包含XGBoostJob定制资源定义的规范和实现。 使用此...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,205
精华内容 13,682
关键字:

xgboost