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

    文章

    3649

    浏览量

    51713
  • 数据集
    +关注

    关注

    4

    文章

    1230

    浏览量

    26046
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32L010F8P6开发板的复位键不起作用怎么解决?

    拿到手的CW32L010F8P6开发板,在测试过程中发现,复位按键好像是没起作用。不知道是没连接到对应的引脚上,还是线路断开了。原来的板载程序运行中,按复位按键不起作用;程序下载后,按复位按键也不起作用
    发表于 11-26 07:19

    Bluetooth® LE FindMe 示例在CY8C6347LQI-BLD52中不起作用是怎么回事?

    Bluetooth® LE FindMe 示例在CY8C6347LQI-BLD52中不起作用
    发表于 11-11 07:23

    rt-thread使用xshell连接上下键不起作用是怎么回事?

    rt-thread使用xshell连接上下键不起作用,不能进行历史追溯,求问怎么回事
    发表于 10-13 06:27

    TSLIB 触摸屏校准不起作用是怎么回事?

    我遇到触摸屏校准问题 在触摸屏校准期间我看不到任何窗口,只能在 RS232 中更新 所以我使用我自己创建的模板用于触摸屏校准 实际上它以前有效,但现在不起作用 不知道为什么会这样
    发表于 09-04 06:06

    wiced_hal_sflash_write在CYW20721B2上不起作用是怎么回事?

    时,写入不起作用。 逻辑分析仪上没有保存命令。 我记得在 CYW20706 中必须通过 *((unsigned char*)(0x00201a14)) = 1 解锁写入能力;
    发表于 06-30 06:22

    rt-thread-studio添加任何的软件包都失败,更改github或者gitee源都不起作用,有什么解决方案吗?

    如图,添加任何的软件包都失败,更改github或者gitee源都不起作用,有什么解决方案吗?
    发表于 06-13 08:17

    PFC在250W LED驱动器中不起作用是怎么回事?

    PFC 在 250W LED 驱动器中不起作用。 请在下面找到详细信息。 PFCVS 时的 Volt. -1.50 BO-1.80 VCC-18V
    发表于 05-29 06:12

    使用IntCtrl_IP添加回调函数不起作用是怎么回事?

    使用 IntCtrl_IP 添加回调函数,但它不起作用。 这是我的 LPUART0_ISR 函数 void LPUART0_ISR() { const char* pBuffer = "
    发表于 04-11 07:38

    GPS北斗定位模块问题及解决办法

    GPS北斗定位模块使用上大多需要配置和设置下的,因此出现应用方面的问题也是可以理解的。以下是常见的问题及其解决办法: 一、搜不到信号 问题描述: 在家或个别位置无法接收到GPS或北斗定位模块的信号
    的头像 发表于 03-30 07:37 2522次阅读

    板载UART在S32K388中不起作用怎么解决?

    使用 Trace32 调试相同的项目时,我的串行终端中没有收到打印消息(我为此目的使用 Tera Term)。板载 UART 在 S32K388 中不起作用,因此我对连接到电路板 J695引脚组的 TX
    发表于 03-28 08:13

    外部构建器在S32DS 3.6.0中不起作用怎么解决?

    您好 NXP, 安装 S32DS 3.6.0 后,外部构建器(用于 makefile 项目)似乎不起作用,IDE 没有调用我的 *.bat 文件。相同的设置在 3.5.0 中可以正常工作。 我尝试
    发表于 03-20 07:06

    STM32G431KBU3只要开中断HAL_xxxx_Start_IT()就死机一动不动了,为什么?

    自己画的G431KBU3 ,没有使用外部晶振, 只要在代码中开启 中断, 就是 使用 HAL_xxx_Start_IT 这个函数, 后面的代码就不起作用了,卡住了,哪位大师帮忙分析一下原因及解决办法
    发表于 03-13 07:49

    PLC异常工作的原因和解决办法

    PLC(可编程逻辑控制器)异常工作的原因及解决办法
    的头像 发表于 02-24 17:27 1855次阅读

    常见垫圈故障及解决办法 防漏垫圈的设计与应用

    常见垫圈故障及解决办法 1. 垫圈老化 故障现象: 垫圈因长时间使用而老化,失去弹性,导致密封性能下降。 解决办法: 定期检查垫圈的老化情况,及时更换新的垫圈。 2. 垫圈变形 故障现象: 由于安装
    的头像 发表于 12-12 15:31 1870次阅读

    AFE5816的TR_EN为什么不起作用呢?

    相关寄存器为默认,REG230的BIT4为0代表由TR_EN[X]引脚决定是否断开LNA的HPF连接, 但我的TR_EN为什么不起作用呢??如下图所示
    发表于 12-09 06:11