IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 树家族集成篇--xgboost篇(基于spark) -> 正文阅读

[人工智能]树家族集成篇--xgboost篇(基于spark)


1、数据质量要求?

算法机器学习类别缺失值连续值不平衡数据离群点数据归一离散特征处理树形特征选择依据spark实现过拟合处理、参数
xgboost二分类、多分类、回归不敏感不敏感不敏感敏感不敏感one-hot树或者线性模型目标函数增益第三方
梯度提升决策树(GBDT)spark支持二分类、回归

敏感,

spark需处理

不敏感分类可能敏感敏感不敏感one-hot 或? K值编码二叉树

mse

yes

超参数:

loss类型、nums、learningrate一般不调

随机森林(rf)多分类、回归

敏感,

spark需处理

不敏感不敏感不敏感不敏感one-hot 或? K值编码--树的特征选择依据yes

超参数:

在上述决策树的基础上,增加树的个数nums、featuresaction一般不调

决策树-ID3多分类无法处理无法处理不敏感不敏感不敏感可处理多叉树信息增益no
决策树-C4.5多分类不敏感不敏感不敏感不敏感不敏感one-hot 或? K值编码多叉树信息增益率no后剪枝,计算大
决策树-CART多分类

spark中敏感,需处理

不敏感不敏感不敏感不敏感one-hot 或? K值编码二叉树Gini系数yes

超参数:

maxdepth、

maxbins、mininfogain、impurity

决策树-CART回归spark中敏感,需处理不敏感--敏感不敏感one-hot 或? K值编码二叉树mseyes

超参数:

没具体使用,暂不清楚

xgboost的离散特征需要进行one-hot编码(也可以embedding编码?),gbdt不一定,spark实现gbdt的时候可以区分离散特征、连续特征;而xgboost原理是把所有的特征当做连续特征,在对树生成的时候排序特征进行遍历然后切分。

embedding编码:

(1)调参

三类参数:

通用参数:宏观函数控制

?nthread

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

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

2、原理解释

(1)白话原理

原理文章参考:https://zhuanlan.zhihu.com/p/83901304

调参文章参考:https://blog.csdn.net/han_xiaoyang/article/details/52665396

官网调参说明:https://xgboost.readthedocs.io/en/latest/parameter.html#general-parameters

简单理解:

是gbdt算法的工程实现,boosting流程差不多,不同的是目标函数发生了变化,1是增加了正则化项,2是目标函数采用泰勒二阶展开,这里导致的变化是在gbdt的时候 通过目标函数和前项分布算法,给了当前树“拟合目标”,树去完成就好了;在xgboost这儿,目标函数形式变化后不是直接给出“拟合目标”,而是也对树结构有追求,因为最终的目标函数形式中包含当前树的叶子结点权重和节点数量。

目标函数推导过程:

(2)场景

可以处理回归、分类问题

(3)特点

?优点

  • 精度更高:GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二阶泰勒展开。XGBoost 引入二阶导一方面是为了增加精度,另一方面也是为了能够自定义损失函数,二阶泰勒展开可以近似大量损失函数;
  • 灵活性更强:GBDT 以 CART 作为基分类器,XGBoost 不仅支持 CART 还支持线性分类器,使用线性分类器的 XGBoost 相当于带 L1 和 L2 正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。此外,XGBoost 工具支持自定义损失函数,只需函数支持一阶和二阶求导;
  • 正则化:XGBoost 在目标函数中加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、叶子节点权重的 L2 范式。正则项降低了模型的方差,使学习出来的模型更加简单,有助于防止过拟合,这也是XGBoost优于传统GBDT的一个特性。
  • Shrinkage(缩减):相当于学习速率。XGBoost 在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。传统GBDT的实现也有学习速率;
  • 列抽样:XGBoost 借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算。这也是XGBoost异于传统GBDT的一个特性;
  • 缺失值处理:对于特征的值有缺失的样本,XGBoost 采用的稀疏感知算法可以自动学习出它的分裂方向;
  • XGBoost工具支持并行:boosting不是一种串行的结构吗?怎么并行的?注意XGBoost的并行不是tree粒度的并行,XGBoost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。XGBoost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),XGBoost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
  • 可并行的近似算法:树节点在进行分裂时,我们需要计算每个特征的每个分割点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情况下,贪心算法效率就会变得很低,所以XGBoost还提出了一种可并行的近似算法,用于高效地生成候选的分割点。

?缺点

  • 虽然利用预排序和近似算法可以降低寻找最佳分裂点的计算量,但在节点分裂过程中仍需要遍历数据集;
  • 预排序过程的空间复杂度过高,不仅需要存储特征值,还需要存储特征对应样本的梯度统计值的索引,相当于消耗了两倍的内存

3、代码相关

后续补充

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:49:09  更:2021-08-02 10:50:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:22:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码