当前位置: 首页 > news >正文

机器学习日报16

目录

  • 摘要
  • Abstract
  • 一、XGBoost
  • 二、什么时候使用决策树
    • 1、决策树的优缺点
    • 2、神经网络的优缺点
  • 总结

摘要

今天学习了XGBoost算法和决策树与神经网络的比较。XGBoost通过提升方法专注于之前分类错误的样本,比传统决策树集成更高效。它的开源实现内置正则化防止过拟合,代码使用简单。在模型选择方面,决策树适合表格数据且训练快速,而神经网络更适合非结构化数据并支持迁移学习,但训练时间较长。

Abstract

Today’s lesson covered XGBoost and the comparison between decision trees and neural networks. XGBoost employs boosting to focus on misclassified samples from previous iterations, making it more efficient than traditional ensemble methods. Its open-source implementation includes built-in regularization and offers simple code usage. Regarding model selection, decision trees excel with tabular data and fast training, while neural networks better handle unstructured data and support transfer learning, albeit with longer training times.

一、XGBoost

多年来,机器学习研究人员已经提出了许多构建决策树的不同方法,迄今为止最常用的决策树集成或决策树实现方法是一种算法,称为XGBoost,它运行更快,开源容易使用,它也被非常成功地用于赢得许多机器学习比赛,让我们看看XGBoost是如何工作的,在我们上一个视频中看到的决策树算法,有一个修改可以使其效果更好,这里是我们之前写下的算法,给定一个大小为m的训练集,我们重复B次,使用有放回抽样创建一个大小为m的新训练集,然后训练决策树,在新的数据集上训练决策树,因此第一次通过这个循环时,我们可能会像这样创建一个训练集,并像这样训练决策树
在这里插入图片描述
但是这里是我们要改变的地方,也就是每次通过这个循环,除了第一次,会有第二遍,第三次,以此类推,在抽样时,不是以相同概率选择每个训练样本,我们将以更高的概率选择那些在我们目前构建的树集合中表现较差的样本,但是第二次通过这个循环时,不是从所有m个样本中以相同的概率选择,而是让我们更有可能选择之前训练的树分类错误的样本嫩或者之前训练的树表现不佳的样本,举个例子,如果我们在学习钢琴并且我们在尝试精通一首钢琴项目,练习整个曲目,在不断的学习途中,我们可以只专注于那些我们还没有掌握的部分,在实际效果中会表现得很好,因为对于我们已经掌握的部分,我们可以相对地练习少点,对于我们还不熟悉、不熟练的部分,我们可以适当多倾斜一些时间和精力去训练我们还不会的部分

所以boosting(提升)就是这个意思,我们将查看到目前为止训练的决策树并找出我们仍然没有做好的地方,然后在构建下一个决策树时,我们会更关注那些我们还没有处理好的例子,所以我们不会看到所有的训练例子,而是更多的注意力放在尚未处理好的例子子集上,并用新的决策树构建集成来尝试处理这些问题,这就是提升背后的理念,事实证明,这样有助于学习算法更快地学习和改进

具体来说,我们会查看刚刚构建的决策树并回到原始训练集

在这里插入图片描述
注意,这是原始训练集,不是通过某种方法或替换生成的训练集,我们会查看所有10个例子并查看这个学习的决策树对10个例子的预测,所以这第四列是它们的预测结果,我们会在这些例子旁边打勾,取决于树的分类是否正确,所以在第二次循环中,我们会使用有放回的抽样来重新生成另一个包含10个例子的训练集,每次从10个例子中选取一个例子时,我们会更有可能从这三个仍然分类错误的例子中选取,所以这会让第二棵决策树通过一种类似刻意训练的过程关注那些例子,这种提升一共可执行B次,在每次迭代中,我们会查看第一棵树的集成结果,第二棵。。。。直到B-1棵树的集成结果,我们会更有可能选择那些之前构建的树的集成仍然分类错误的例子,增加选择这个例子而不是那个例子的概率的数学细节相当复杂,我们不需要担心这些细节来提升树的实现,在各种提升的方法中,目前最广泛使用的是XGBoost,这是一种非常快速并且高效的开源提升树实现,XGBoost还提供了默认的分裂标准和停止分裂的标准,XGBoost的一项创新是内置了正则化以防止过拟合,我们需要知道的是,XGBoost不是放回的采样,实际上它是会为不同的训练样本分配不同的权重,所以它实际上不需要生成大量随机选择的训练集这使得它比使用有放回采样程序更高效一点

XGBoost分类的代码如下:

from xgboost import XGBClassifier
model = XGBcliassifier()model.fit(x_train, y_train)
y_pred = model.predict(x_test)

XGBoost回归的代码如下:

from xgboost import XGBRegressor
model = XGBRegressor()model.fit(x_train, y_train)
y_pred = model.predict(x_test)

二、什么时候使用决策树

1、决策树的优缺点

无论是决策树包括集成树,还是神经网络,都是非常强大、非常有效的学习算法,什么时候选择其中一个呢?让我们来看一下各自的一些优缺点,决策树和集成树通常在表数据上表现良好,也称结构化数据,这意味着如果我们的数据看起来像一个巨大的电子表格,那么决策树是值得考虑的,例如在房价预测中,我们有一个数据集,其中包含与房屋大小、卧室数量、楼层数量和房龄相关的特征,这种类型的数据存储在电子表格中,带有分类或连续特征,无论是用于分类任务还是回归任务,当我们试图预测一个离散类别或预测一个数值时,所有这些问题都是决策树能够做的很好的,相比之下,不推荐在非结构化数据上使用决策树和集成树,例如图像、视频、音频和文本,这些数据不太可能以电子表格格式存储,神经网络,稍后我们将看到其更适合处理非结构化数据任务,决策树和集成树一个巨大的优势是它们训练速度非常快,我们回想一下之前学习的一个图表,讨论的是机器学习的迭代循环
在这里插入图片描述
如果我们的模型需要训练很多时间,那么这就限制了这个循环并提高算法性能的速度,但由于决策树,包括集成树,往往训练速度是非常快的,这使我们能够更快地完成迭代过程,从而可能有效地提高我们的学习效率,最后小型决策树可能更容易被人类理解,如果我们只训练一个决策树,而且这个决策树只有几十个节点,我们可以打印出这个决策树,以确切了解它是如何做出决策的,如果我们决定使用决策树或集成树,我们可以用我们上一小节学到的XGBoost,大部分情况我们也都是使用它

但是集成树有一个小缺点,就是它比单个决策树稍微昂贵一点,如果我们的计算预算非常非常有限,我们也许会使用单个决策树,但除此之外,我们几乎总是使用集成树,特别是XGBoost

2、神经网络的优缺点

与决策树和集成树不同,神经网络在所有类型的数据上表现都非常不错,包括表格或结构化数据,也包括非结构化数据,以及包含结构化和非结构化组件的混合数据,在表格型结构化数据上,神经网络和决策树通常都具有竞争力,而在非结构化数据上,比如图像、视频、音频和文本,神经网络确实是首选的方法,而不是决策树和集成树,但不利的一面是,神经网络需要花费的时长是很多的,一个大型的神经网络需要很长的时间去训练,但是瑕不掩瑜,神经网络的其他优势包括:它可以与迁移学习结合,这非常重要,如果我们数据集很小,能够使用迁移学习并在一个更大的数据集上进行预训练,这是获得竞争性表现的关键,最后有一些技术上的原因,可能使得更容易将多个神经网络串联使用,构建一个更大的机器学习系统,基本原因是神经网络输出y计算为输入x的平滑或连续函数,这些不同模型的输出本身是可微的,而对于决策树 ,我们一次只能训练一棵树,而神经网络串联训练多个神经网络可能比多个决策树更容易

总结

今天的学习让我对XGBoost有了深入理解,它通过类似"刻意练习"的方式重点关注之前分类错误的样本,这种提升策略很聪明。XGBoost代码实现也很简洁,几行代码就能完成分类或回归任务。在模型选择方面,我明白了决策树适合处理表格数据且训练速度快,适合快速迭代;而神经网络虽然训练慢,但在图像、文本等非结构化数据上表现更好,还能利用迁移学习。这让我以后在做项目时能更明智地选择合适算法:表格数据用XGBoost,非结构化数据用神经网络。

http://www.dtcms.com/a/597348.html

相关文章:

  • 11月份运维面试题
  • H100服务器维修“病历卡”:五大常见故障现象与根源分析
  • 9. Linux-riscv内存管理41-46问
  • 用mcu做灯光效果网站大连金州新区规划建设局网站
  • React 实战: Todo 应用学习小结
  • 网站性能优化方案网络设计及网络设计文档
  • 香港科技大学广州|可持续能源与环境学域博士招生宣讲会—兰州大学专场
  • 下午察:当机器人变得太像人
  • 青海城乡与建设厅网站个人简历简短范文
  • 黑马JAVAWeb -Vue工程化-API风格 - 组合式API
  • ubuntu更新nvidia显卡驱动
  • React Native 自建 JS Bundle OTA 更新系统:从零到一的完整实现与踩坑记录
  • 珠海建设网站公司代刷网站只做软件下载
  • 磐安县建设局网站甘肃营销型网站制作
  • UEC++ 如何知道有哪些UComponent?
  • 创建轻量级 3D 资产 - Three.js 中的 GLTF 案例
  • Android 主线程性能优化实战:从 90% 降至 13%
  • EPLAN电气设计-EPLAN在翻译中遇到的问题解析
  • 了解正向代理服务器:功能与用途
  • 建设厅网站业绩备案公示期诸城网络推广公司
  • sendfile函数与传统 read+write 拷贝相比的优势
  • ARL部署
  • 突破智能体训练瓶颈:DreamGym如何通过经验合成实现可扩展的强化学习?
  • 如何学习销售技巧,提高销售能力?
  • 建设北京公司网站兰州网站建设方案
  • 乐趣做网站公众信息服务平台
  • 有源代码怎么制作网站企业网络营销推广方案策划
  • C#使用Chart图表控件实时显示运动坐标
  • 数据结构---哈夫曼树的实现
  • 扁平 网站 模板物联网网站开发公司