0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

模型不起作用时的解决办法

汽车玩家 来源:人工智能遇见磐创 作者:人工智能遇见磐创 2020-05-04 09:54 次阅读

你的团队几个月来一直在收集数据、构建预测模型、创建用户界面,并与一些早期的用户一起部署新的机器学习产品。但你现在听到的并不是大家一起庆祝项目胜利的声音,而是听到产品经理对那些早期用户的抱怨,这些早期用户对模型精度不满意并开始认为“模型不起作用”。所以你现在应该做什么?

我们常常在很多模式识别实验室里给相关组织应用机器学习算法到新产品见到这种情况。这不是一个容易迅速解决的问题。真实世界的机器学习模型的性能受到许多因素的影响,其中一些因素可能在控制之下,而另一些因素则可能不在控制之下。最重要的是,当试图对真实世界的现象建模时,每个建模问题都有一个固有的噪声或随机性被混合在信号中,这使得很难理解我们使用一个预测模型真正能够达到的准确度。再加上用户对你的模型准确性的期望,你的数据科学团队就突然陷入了一个棘手的境地,并试图找出从哪里开始解决问题。

1. 了解要解决的问题

首先要确保团队对他们试图用模型解决的用户问题有很好的理解。令人惊讶的是,数据科学团队对成功的定义的理解与用户的标准经常不同。最近,我们与一家公司合作,试图预测恶劣天气对公用事业公司运营的影响。技术团队绞尽脑汁想要提高他们模型的MAPE分数。当我们深入研究时,我们发现MAPE根本不是正确的度量标准,他们所追求的目标是他们自己设定的(而不是倾听用户的意见)。用户实际上最关心的是,我们能够始终如一地将风暴的影响严重程度划分为1-5级的能力,这个划分是为他们的操作程序定义的。

要确保数据科学团队对这个问题有一个全面的理解,并且这个理解最好直接来自用户,这对于一个新计划的成功是至关重要的。如果你的团队陷入了上面描述的模型“不能工作”的情况,那么第一步就是回去,确保你已经正确地定义了问题,并理解你的用户如何定义成功。

2. 数据是否正确、完整?

下一步是回头查看你的团队收集的输入数据。通常,在处理复杂的实际模型时,模型性能不好的主要原因是由于输入数据集和特征的问题,而不是模型本身。特别是当你运行多种类型的模型(我们建议你尽可能这样做)并得到类似的结果时,这通常是输入数据集的问题。

这一步的一个关键部分是确保你已经收集了尽可能多的相关数据。通常,现实世界的模式中有一些因素并不总是直观或者明显的,因此你可以收集的数据和特征越多越好。你可以使用许多技术来降低特征的选择,以便在最相关的特征上构建模型,我们将在下一个步骤中讨论这些特征。但是对于这一步,重点是重新检查你的假设,哪些输入的特征影响了你试图建模的输出,如果需要,还可以返回以获取额外的数据。例如,当试图为现实世界的现象建模时,通常需要考虑一些不明显的因素,因为这些不明显的因素会造成影响,特别是异常情况——例如季节性、天气、日历事件,甚至地缘政治事件。

其次,应该进行一些简单的QA检查,以确保输入数据得到正确映射和处理。最近,我们与一个想改善模型性能的客户进行了合作,但最终发现问题根本不是与模型有关——客户错误地处理了一些地理位置的特征数据,这使得他们运行的模型无法识别正确的模式。

CRISP-DM流程是许多数据科学团队用于管理项目的最常见框架之一。我们喜欢它的重点在于它确保在深入建模之前就能理解业务和数据。CRISP-DM过程中的两个关键步骤是“数据理解”和“数据准备”。正确地遵循这些步骤需要深入研究输入数据以真正地理解它,通常需要可视化数据中的分布、趋势和关系。“数据准备”通常包括预处理、数据扩充与标准化,以便为建模做准备。如果处理得当,这两个步骤可以帮助数据科学家确保输入数据中的错误不会导致他以后遇到的任何模型性能问题。

3. 调整模型提升性能

既然你已经尽可能正确和完整地验证了输入数据,现在是时候关注有趣的东西了——建模本身。这一步中影响最大的部分之一是特征选择——从上到下选择最影响输出的关键特征,并对这些特征进行训练,消除冗余或高度相关的特征,以提高模型的速度和准确度。关于特征选择技术有一些很好的博客文章,包括单变量选择、递归特征消除和随机森林特征重要性。这里有一个可供参考:https://machinelearningmastery.com/feature-selection-machine-learning-python/。无论你使用的是哪种技术,或者它们的组合,都要确保在这一步上花费时间,为你的模型获得特征的最佳组合。

此步骤的另一个重要部分是重新考虑模型的选择,或者考虑添加额外的模型类型或组合多个模型。同样的,也有许多比较不同模型优缺点的好文章,但是我们建议尽可能运行至少两种模型类型(理想情况下,一种是神经网络)来比较结果。

最后,一旦你的特征和选择的模型确定了后,重新调参,并且确保你正确地定义训练集,验证集和测试集,这代表你在调参时并没有选择欺诈,所以它在新数据上可以泛化的很好,而不是在训练集上表现良好甚至过拟合导致在新数据上模型没有良好的工作。

4. 最后,也是最重要的,管理客户的期望

这是许多数据科学家忽视的另一个关键步骤,因为他们认为这“不是他们的工作”。当推出一个面向世界的新机器学习产品时,模型在真实世界的性能存在相当大的不确定性。此外,如上所述,尽管你尽了最大的努力使准确度最大化,但是在你正在解决的问题在真实世界中会出现的大量噪声,这可能会限制模型的性能。所以这个步骤是数据科学团队的责任,需要数据科学团队去与产品经理,销售人员,客户正确定义客户期待在模型中看到的性能,并且在时间的推移拥有额外的数据的情况下,指导他们如何去训练改善模型。

所以下次你的团队在模型放入真实世界里遇到性能问题时,不要玩指责游戏或直接一头扎进调参工作进行优化与拟合,后退一步,跟着这个简单的,结构化的过程一步一步来解决这个问题,在你的新模型上最大化性能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    3161

    浏览量

    48707
  • 数据集
    +关注

    关注

    4

    文章

    1205

    浏览量

    24639
收藏 人收藏

    评论

    相关推荐

    调试PCM3070的时候,进行通道切换时不起作用,为什么?

    当前在调试PCM3070的时候,进行通道切换时不起作用,加载的EQ 数据在IN1也都已工作正常。 我的电路工作方式为三个模拟输入(IN1,IN2,IN3),一个模拟输出(LOL/R),采用DSP做为EQ处理。
    发表于 11-06 07:16

    常见MCU故障及解决办法

    微控制器单元(MCU)是现代电子设备中的核心组件,负责处理和控制各种功能。然而,由于各种原因,MCU可能会出现故障。以下是一些常见的MCU故障及其解决办法: 1. 电源问题 故障现象: MCU无法
    的头像 发表于 11-01 13:41 567次阅读

    TPA3112D1为什么不起作用了?

    您好,我有一块TPA3112D1模块之前用着一直是好的,但是突然就不起作用了,我想知道友们有办法测试一下我的芯片是好是坏,是否工作正常??谢谢
    发表于 09-06 07:45

    通过system_restart WPS重新启动esp8266首次连接不起作用,返回f r-15863的原因?

    当我通过system_restart WPS 重新启动 esp8266 并首次连接不起作用时,返回 f r-15863。此信息: f r-15863 是什么意思?这种情况发生在一台设备上,什么原因可能导致此问题?
    发表于 07-18 08:08

    AT CWHOSTNAME不起作用的原因?

    我想更改主机名,但在命令 AT CWHOSTNAME 不起作用。 我尝试过 AT CWMODE_CUR=1 或 AT CWMODE_CUR=3,但我得到了相同的结果。 PS
    发表于 07-15 06:09

    无人机主动防御系统不起作用

    起作用。无人机主动防御系统是一种用于保护无人机免受攻击的系统。这种系统可以有效地防止无人机被敌方攻击,提高无人机的生存能力。然而,无人机主动防御系统并不是万能的,它也存在一定的局限性。 一、无人机
    的头像 发表于 07-08 09:57 448次阅读

    stm32cubemx的功能不起作用是哪里的问题?

    最近几个版本的stm32cubemx的功能不起作用: 在cube上有一个很好用的功能就是点按ctrl和click按键会让alternative pin显示出来,这个功能非常高效率。然而不知道是java的问题还是新版本的问题,目前的按键不起作用
    发表于 04-08 07:28

    用中断测试了CAN EVAL_BDPS_DRIVER,中断不起作用的原因?

    我用中断测试了 CAN EVAL_BDPS_DRIVER 。 但中断不起作用。 根据我对配置文件所做的更改。 但EVAL_IM_FLEX_ADAPTER_V1未获得正确的输出。 请帮我解决这个问题。
    发表于 03-06 07:44

    TC387不起作用的原因?

    我使用的是 TC387。当我使用 Trace32 下载 *.elf 文件时,它运行良好。但是我使用 Trace32 下载了*.hex 文件,但它不起作用。即使我使用 Trace32 下载 *.elf
    发表于 02-27 08:02

    安装了HighteCide和DAS来连接TriBoard然后使用它,为什么不起作用

    我试着用 TriBoard TC3X9 TH V2.01 我安装了 HighteCide 和 DAS 来连接 TriBoard 然后使用它。 但是,它不起作用,我看到了这样的窗口。 我
    发表于 01-30 08:28

    使用psoc63-ble进行计数,它不起作用的原因?

    我尝试使用 psoc63-ble 进行计数,但它不起作用。 当我尝试在 10MHz 下进行计数时,我只能在较低频率范围内进行计数。 我想知道 CAN 进行的最大计数是多少,以及如果我想以更高的值(例如 10 MHz 或更高)进行计数,如何编写代码。
    发表于 01-30 07:35

    TC377的EVADC配置,硬件触发器不起作用的原因?

    我正在研究 TC377 的 EVADC 配置,我的频道上有硬件触发器 g0ch6-ATOM1_5(不起作用 ) g0ch 7-与 g2ch7 G1ch1-同步 G1ch1-ATOM1_ 4
    发表于 01-25 07:50

    模型训练loss突刺原因和解决办法

    PaLM和GLM130b之前的解决办法是找到loss spike之前最近的checkpoint,更换之后的训练样本来避免loss spike的出现。
    的头像 发表于 01-09 14:20 1233次阅读
    大<b class='flag-5'>模型</b>训练loss突刺原因和<b class='flag-5'>解决办法</b>

    ad9371 radioOn() radioOff()函数不起作用是为什么?

    ),提示radio不在off/idle状态, 执行MYKONOS_radioOn( mykDevice)时也显示错误。 回读radiostatus时一直为1(ready状态)。后来我在这个地方加入radioon()和radiooff()函数后,发现无论怎么样,radiostatus一直为1,函数不起作用
    发表于 12-12 08:05

    codeblocks点击run不起作用

    对于Code::Blocks点击Run无法起作用的问题,有以下几个可能的原因和解决方法: 编译器问题:Code::Blocks使用的是GNU编译器,可能出现了某些编译器设置方面的问题。可以尝试
    的头像 发表于 11-26 09:30 4360次阅读