【机器学习 | PipeLine】机器学习通用管道最佳实践!!(无论什么问题都能套上,确定不来看看?)

news2024/11/25 0:53:45

在这里插入图片描述

🤵‍♂️ 个人主页: @AI_magician
📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。
👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍
🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)

在这里插入图片描述

【机器学习 | PipeLine】机器学习通用管道最佳实践!!(无论什么问题都能套上,确定不来看看?)
作者: 计算机魔术师
版本: 1.0 ( 2023.10.27 )

摘要: 本系列旨在普及那些深度学习路上必经的核心概念,文章内容都是博主用心学习收集所写,欢迎大家三联支持!本系列会一直更新,核心概念系列会一直更新!欢迎大家订阅

该文章收录专栏
[✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨]

Pipeline

      • 定义问题 & 收集数据
      • 选择衡量指标
      • 确定衡量方法
      • 数据处理
      • 建立具有统计功效的模型
      • 开发过拟合模型
      • 模型正则化与调节超参数

Kaggle: 拥有稳定而强大的管道对于在最终的私人排行榜中取得出色表现最为关键。浪费时间过度拟合以在公共排行榜中获得额外的 0.0001 是没有意义的。始终相信当地的交叉验证分数,因为训练数据量大于公共排行榜的数据量。

无论是怎么样的一个机器学习问题,都有一个通用的处理流程模板,进行 问题定义,特征工程,评估指标,评估方法,损失函数,调优模型等等,总的来说总体如下:

  1. 定义问题与要训练的数据。收集这些数据,有需要的话用标签来标注数据。

  2. 选择衡量问题成功的指标。你要在验证数据上监控哪些指标?

  3. 确定评估方法:留出验证? K 折验证?你应该将哪一部分数据用于验证?

  4. 开发第一个比基准更好的模型,即一个具有统计功效的模型。

  5. 开发过拟合的模型。

  6. 基于模型在验证数据上的性能来进行模型正则化与调节超参数。许多机器学习研究往往只关注这一步,但你一定要牢记整个工作流程。

定义问题 & 收集数据

首先面对的问题:

  1. 面对的问题是什么类型的?

常见的有如,回归、分类、监督还是非监督学习、强化或生成、进化?聚类,二分类还是多分类,多分类是单标签还是多标签,确定问题类型可以有助于确定损失函数和模型架构、激活函数等。

  1. 输入的数据是什么,形式如何,模型需要预测或分类怎么样一个输出结果?

只有可用的数据,我们才能训练我们的模型,学习某种模式,通常在这一部分,数据可用性是比较头疼的问题,比如数据是否高质量,是否充足以让模型学习。

在明确输入输出及所使用的数据中有两个假设:

  • 假设输出是可以根据输入进行预测的。

  • 假设可用数据包含足够多的信息,足以学习输入和输出之间的关系。

我们在面对问题也要考虑到输入数据 X 是否有足够的信息来预测 Y, 比如在股票价格预测,如果只有历史价格显然是无法实现的,因为历史价格并没有包含可以很好预测的信息。

还有比如类似非平稳的问题, 总的来说机器学习只能通过记忆训练数据所存在的模式,识别曾经遇见的东西,根据过去规律预测未来,但显然未来规律并非如此

选择衡量指标

要控制一件事物,就需要能够观察它。要取得成功,就必须给出成功的定义:精度?准确率(precision)和召回率(recall)?客户保留率?衡量成功的指标将指引你选择损失函数,即要优化什么。它应该直接与你的目标(如业务成功)保持一致。(这非常重要!!)

  1. 对于平衡分类问题(每个类别的可能性相同),精度和接收者操作特征曲线下面积(area under the receiver operating characteristic curve,ROC AUC)是常用的指标。
  2. 对于类别不平衡的问题,你可以使用准确率和召回率(全局)。
  3. 对于排序问题或多标签分类,你可以使用平均准确率均值(mean average precision)。

自定义衡量成功的指标也很常见。要想了解当前问题的成功衡量指标以及这些指标与问题的关系,可以浏览 Kaggle 网站上的数据科学竞赛,上面展示了各种各样的问题和评估指标。

确定衡量方法

一旦明确了目标,你必须确定如何衡量当前的进展。 [evaluation & metrics.md](evaluation & metrics.md) 介绍了常见的评估方法。大多数情况下, 留出验证集方法足以满足要求

数据处理

一旦知道了要训练什么、要优化什么以及评估方法,那么你就几乎已经准备好训练模型了。但首先你应该将数据格式化,使其可以输入到机器学习模型中(这里假设模型为深度神经网络)。

  1. 将数据格式化为张量(统一数据格式,用于模型的输入)
  2. 数据归一化 & 数据标准化:这些张量的取值通常应该缩放为较小的值,比如在 [-1, 1] 区间或 [0, 1] 区间。

‰ 如果不同的特征具有不同的取值范围(异质数据),那么应该做数据标准化。

  1. 特征工程:有效提取关键特征,尤其是对于小数据问题。

建立具有统计功效的模型

这一阶段的目标是获得统计功效(statistical power),即开发一个小型模型,它能够打败纯随机的基准(dumb baseline)。在 MNIST 数字分类的例子中,任何精度大于 0.1 的模型都可以说具有统计功效;在 IMDB 的例子中,任何精度大于 0.5 的模型都可以说具有统计功效。不过要注意的是,不一定总是能获得统计功效。如果你尝试了多种合理架构之后仍然无法打败随机基准,那么原因可能是问题的答案并不在输入数据中

要记住最开始所做的两个假设。

  1. 假设输出是可以根据输入进行预测的。

  2. 假设可用的数据包含足够多的信息,足以学习输入和输出之间的关系。

此时这些假设很可能是错误的,这样的话你需要从头重新开始。

如果一切顺利,你还需要选择三个关键参数来构建第一个工作模型。

  1. 最后一层的激活。它对网络输出进行有效的限制。例如,IMDB 分类的例子在最后一层使用了 sigmoid,回归的例子在最后一层没有使用激活,等等。

  2. 损失函数。它应该匹配你要解决的问题的类型。例如,IMDB 的例子使用 binary_crossentropy、回归的例子使用 mse,等等。

  3. 优化配置。你要使用哪种优化器?学习率是多少?大多数情况下,使用最佳实践及其默认的学习率是稳妥的。

关于损失函数的选择,需要注意,直接优化衡量问题成功的指标不一定总是可行的。有时难以将指标转化为损失函数,要知道,损失函数需要在只有小批量数据时即可计算(理想情况下,只有一个数据点时,损失函数应该也是可计算的),而且还必须是可微的(否则无法用反向传播来训练网络)。例如,广泛使用的分类指标 ROC AUC 就不能被直接优化。因此在分类任务中,常见的做法是优化 ROC AUC 的替代指标,即 sensitity,specific,而这两个可以通过交叉熵来解决。一般来说,你可以认为交叉熵越小,ROC AUC 越大。

以下是常见问题类型的最后一层激活函数和损失函数的列表:

问题类型最后一层激活函数损失函数
回归问题(Regression)无激活函数(线性输出)均方误差(Mean Squared Error)
回归到 0~1 范围内的值Sigmoid激活函数均方误差(Mean Squared Error)或 二元交叉熵(Binary Cross-Entropy)
二分类问题(Binary Classification)Sigmoid激活函数二元交叉熵(Binary Cross-Entropy)
多类分类问题(Multi-Class Classification)单标签问题Softmax激活函数多元交叉熵(Categorical Cross-Entropy)
多分类、多标签问题Sigmoid激活函数二元交叉熵(Binary Cross-Entropy)
目标检测问题(Object Detection)无激活函数(线性输出)损失函数因具体算法而异,例如交叉熵损失、平滑L1损失等
图像分割问题(Image Segmentation)无激活函数(线性输出)损失函数因具体算法而异,例如交叉熵损失、Dice损失等
生成对抗网络问题(Generative Adversarial Networks)无激活函数(线性输出)对抗性损失函数,例如生成器使用二元交叉熵,判别器使用Sigmoid交叉熵
强化学习问题(Reinforcement Learning)无激活函数(线性输出)因具体算法和环境而异,例如行动价值(Action Value)函数的均方误差、策略梯度等

请注意,以上列表仅列出了常见问题类型的典型激活函数和损失函数。在实际应用中,具体的选择可能会因问题的特点、数据分布和算法选择等因素而有所不同。

开发过拟合模型

一旦得到了具有统计功效的模型,问题就变成了:模型是否足够强大?它是否具有足够多的层和参数来对问题进行建模?例如,只有单个隐藏层且只有两个单元的网络,在 MNIST 问题上具有统计功效,但并不足以很好地解决问题。请记住,机器学习中无处不在的对立是优化和泛化的对立,理想的模型是刚好在欠拟合和过拟合的界线上,在容量不足和容量过大的界线上。为了找到这条界线,你必须穿过它。

要搞清楚你需要多大的模型,就必须开发一个过拟合的模型,这很简单。

(1) 添加更多的层或采用更复杂的架构

(2) 让每一层变得更大。(参数更多)

(3) 训练更多的轮次。

要始终监控训练损失和验证损失,以及你所关心的指标的训练值和验证值。如果你发现模型在验证数据上的性能开始下降,那么就出现了过拟合。

模型正则化与调节超参数

这一步是最费时间的:你将不断地调节模型、训练、在验证数据上评估(这里不是测试数据)、

再次调节模型,然后重复这一过程,直到模型达到最佳性能。你应该尝试以下几项。

  1. 添加 dropout。
  2. 尝试不同的架构:增加或减少层数。
  3. 添加 L1 和 / 或 L2 正则化。
  4. 尝试不同的超参数(比如每层的单元个数或优化器的学习率),以找到最佳配置。需要搜索
  5. (可选)反复做特征工程:添加新特征或删除没有信息量的特征。

请注意:每次使用验证过程的反馈来调节模型,都会将有关验证过程的信息泄露到模型中

如果只重复几次,那么无关紧要;但如果系统性地迭代许多次,最终会导致模型对验证过程过拟合(即使模型并没有直接在验证数据上训练)。这会降低验证过程的可靠性。一旦开发出令人满意的模型配置,你就可以在所有可用数据(训练数据 + 验证数据)上训练最终的生产模型,然后在测试集上最后评估一次。

如果测试集上的性能比验证集上差很多,那么这可能意味着你的验证流程不可靠,或者你在调节模型参数时在验证数据上出现了过拟合。在这种情况下,你可能需要换用更加可靠的评估方法,比如重复的 K 折验证。

在这里插入图片描述

						  🤞到这里,如果还有什么疑问🤞
					🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
					 	 🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1170135.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

任正非说:只有“有为”才会“有位”,任何组织只有在流程中创造价值,才可能获得成长的机会。

你好!这是华研荟【任正非说】系列的第28篇文章,让我们聆听任正非先生的真知灼见,学习华为的管理思想和管理理念。 一、所有一切要符合未来的作战需要,组织是为了作战而存在的,而不是作战服从组织的。 来源于任正非先生…

RK-3399pro 萤火虫firefly 官方unbuntu 固件系统安装搜狗中文输入法

RK-3399pro 萤火虫firefly 官方unbuntu 固件系统安装搜狗输入法(适用于所有基于Ubuntu的UI桌面系统) 一、添加中文语言支持输入法平台fcitx 1.安装fcitx sudo apt-get install fcitx 2.然后设置fcitx为开机自启动 sudo cp /usr/share/applications/fc…

Python进阶之推导式与生成器

文章目录 一、推导式1.列表推导式2.字典推导式3.集合推导式4.元组推导式(生成器推导式) 二、生成器1.生成器表达式2.生成器函数3.send函数 结束语 💂 个人主页:风间琉璃🤟 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联…

【数智化人物展】华院计算董事长、创始人宣晓华:通用大模型只是起点,尚需结合专业知识方能解决行业核心问题...

宣晓华 本文由华院计算董事长、创始人宣晓华投递并参与《2023中国企业数智化转型升级先锋人物》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 大模型的出现,正在开启着国内新一轮AI热潮。 某种程度上,真正在当下决定企业成败的&#…

22款奔驰S400L升级原厂 360全景影像 高清环绕的视野

您是否经历过这种场面呢? 停车位,狭窄障碍停车困难 避免盲区,倒车盲区危及生命安全 狭窄路段,无法判断是否安全通过 视角盲区,小孩站在视野盲区看不到 360度无缝3D全车可见,解决各个视角盲区&#xff…

开发一款直播弹幕游戏需要多少钱?

开发一款直播弹幕游戏需要多少钱?有好多朋友在咨询过弹幕游戏的开发价格后,都会比较吃惊,一款体量这么小的游戏为什么动辄就要几万块甚至十几万? 我来给你们说分析一下原因,这种游戏如果脱离开直播间,可以…

算法通关村第五关-黄金挑战LRU问题

大家好我是苏麟 , 今天聊聊LRU问题 , 相信学过操作系统的小伙伴并不陌生 . LRU问题 LRU的含义 LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。 图解 : 如果再有其他元素就依…

ST表与RMQ(倍增表)

【概述】 RMQ : Range Maximum/minimum Query 这就是指区间最大或最小值(区间最值) ST表:Spars Table,一种可以解决 RMQ 的,基于倍增的数据结构,利用 ST 算法预处理打出的表,称为 ST 表。 …

EMC Unity存储系统如何查看SSD的使用寿命

为什么要写这个博客? 客户对老的EMC unity的存储系统要扩容,如何确定SSD磁盘是全新的还是拆机二手的?很多时候客户还有一个奇葩的要求,就是要和5年前的磁盘PN一致,甚至要求固件版本一致,最关键的还要求是全…

【LeetCode】每日一题 2023_11_4 数组中两个数的最大异或值

文章目录 刷题前唠嗑题目:数组中两个数的最大异或值题目描述代码与解题思路 结语 刷题前唠嗑 LeetCode? 启动!!! 题目:数组中两个数的最大异或值 题目链接:421. 数组中两个数的最大异或值 题目描述 代…

分享去视频/图片水印的工具(完结篇)

简介 视频去水印是在数字时代日益重要和频繁的需求之一。水印是一种保护版权和确认身份的常见手段,但在某些情况下,水印可能会对视频内容产生负面影响,因此需要去除。 首先,视频去水印可以改善视频观看体验。有些视频平台或个人会…

非常有用的工具箱IT-Tools

什么是 IT-Tools ? IT-Tools 汇集了 70 多种对开发人员和 IT 工作人员有用的工具。这个令人惊叹的工具的酷炫之处在于它不需要设置,不需要持久卷,您可以立即开始使用它。它包含大量工具,可生成密码、编辑 CSS 和 HTML 代码、文件格…

Blazor组件

Blazor组件 前言:博主文章仅用于学习、研究和交流目的,不足和错误之处在所难免,希望大家能够批评指出,博主核实后马上更改。 组件: Blazor 应用基于 Razor 组件,通常仅称为组件。 组件是 UI 的一个元素&…

自动驾驶算法(五):Informed RRT*算法讲解与代码实现(基于采样的路径规划) 与比较

目录 1 RRT*与Informed RRT* 2 Informed RRT*代码解析 3 完整代码 4 算法比较 1 RRT*与Informed RRT* 上篇博客我们介绍了RRT*算法:我们在找到一个路径以后我们还会反复的搜索。 Informed RRT*算法提出的动机(motivation)是能否增加渐近最优的速度呢?…

【腾讯云HAI域探秘】速通腾讯云HAI

速览HAI 产品简介 腾讯云高性能应用服务(Hyper Application lnventor,HA),是一款面向 Al、科学计算的 GPU 应用服务产品,为开发者量身打造的澎湃算力平台。无需复杂配置,便可享受即开即用的GPU云服务体验。在 HA] 中,…

3000 台 Apache ActiveMQ 服务器易受 RCE 攻击

超过三千个暴露在互联网上的 Apache ActiveMQ 服务器容易受到最近披露的关键远程代码执行 (RCE) 漏洞的影响。 Apache ActiveMQ 是一个可扩展的开源消息代理,可促进客户端和服务器之间的通信,支持 Java 和各种跨语言客户端以及许多协议,包括…

Sentinel热点参数限流动

什么是热点 限流是统计访问某个资源的所有请求,判断是否超过QPS阈值。而热点参数限流是分别统计参数值相同的请求,判断是否超过QPS阈值。 何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据&am…

关于Intel Press出版的《Bedyong BIOS》第2版的观后感

文章目录 此书的背景UEFI运行时DXE基础CPU架构协议PCI协议UEFI驱动的初始化串口DXE驱动示例 《Beyond BIOS》首先介绍一个简单的UEFI应用程序模块,用于展示UEFI应用程序的行为。作者为Waldo。该模块名为“InitializeHelloApplication”,它接受两个参数&a…

云栖大会,到底有些啥?

引言:10月31日至11月2日,2023云栖大会在杭州云栖小镇召开。小枣君去了现场,拍了一些照片,特来给大家做一个图文汇报。 云栖大会的前身,是2009年开始举办的地方网站峰会。2011年,这个峰会演变成阿里云开发者…

Linux的历史与环境

目录 Linux的背景介绍 Linux的时代背景-硅谷模式 计算机发展 UNIX发展历史 Linux诞生的偶然与必然 Linux开源 Linux发行版本 搭建Linux的环境 1.直接安装在物理机上 2.使用虚拟机软件 3.使用云服务器 (1)购买云服务器 (2&#x…