如何更新你的机器学习模型?手把手带你设计一个可持续的预测模型!
作者 | CloudFactory
译者 | 天道酬勤 责编 | 徐威龙
出品 | AI科技大本营(ID:rgznai100)
高效的机器学习模型需要高质量的数据。训练你的机器学习模型并不是过程中的单个有限阶段。即使将其部署到生产环境中,也可能需要稳定的新训练数据流来确保模型随时间推移的预测准确性。
毕竟,训练数据会显式地调用数据集中的属性,这些属性代表外部世界中不断变化的基本事实。如果不进行周期性的重新训练,随着现实世界变量的演变,模型的准确性自然会随时间下降。
在本文中,我们将讨论为什么不管你的初始训练数据过程多么严格,继续训练你的机器学习模型都是至关重要的。我们还将讨论再训练的方法以及每种方法的优点。
最后,我们将介绍如何在任何机器学习项目开始时预见对后续更新的需求。通过从一开始就建立再训练流程,帮你设计一个可持续的预测模型。
数据漂移与再训练需求
为什么大多数机器学习模型都需要更新才能保持准确性?答案在于训练数据的性质以及它如何告知机器学习模型的预测功能。
训练数据是一个静态数据集,机器学习模型可从该数据集中推断出模式和关系,并形成对未来的预测。
随着现实世界条件的变化,训练数据的基本事实方面表示可能会不太准确。想象一下用于预测50个大型都会区租金成本的机器学习模型。从2000年到2019年的训练数据可能会以惊人的准确性预测2020年的租金价格。在预测2050年的租金价格时,这种方法可能会不太有效,因为房地产市场的基本性质可能在未来几十年内发生变化。
应用自然语言处理(NLP)来训练聊天机器人提供了数据漂移的另一个有用的例子。我们使用语言的方式正在不断演变,因此必须更新用于聊天机器人的训练数据的语义分析,来反映当前的语言。想象一下,尝试使用1980年代的培训数据来训练聊天机器人与现代消费者进行互动。在40年中,语言可能会发生重大变化,这迫使人们需要更新训练数据。
这一现象已经有了多种描述方法,包括数据漂移、概念漂移和模型衰减。不管你怎么称呼它,它都代表了机器学习的硬道理:在未来的某个时候,你的训练数据将不再为准确的预测提供基础。
如何应对这个不可避免的挑战呢?答案是定期使用新的或扩展的数据重新训练你的模型。实际上,训练你的模型是一个持续的过程,特别是在质量要求很高的情况下。
你应该如何更新你的机器学习模型?简单来说,你有两个选择:使用更新的输入手动重新训练模型,或构建一个旨在从新数据中不断学习的模型。
手动模型重新训练方法
手动更新机器学习模型的方法本质上是复制你的初始训练数据过程,但要使用一组更新的数据输入。在这种情况下,你可以决定如何以及何时向算法提供新数据。
此选项的可行性取决于你定期获取和准备新训练数据的能力。你可以随时监控模型的性能,确定何时需要更新。如果模型的准确性明显下降,则可能需要对更新的数据进行重新训练。
这种方法的优点之一是修修补补通常可以带来真知灼见和创新。如果密切监视模型并找出缺点,你可能会发现包含额外数据或以更基本的方式修改算法的价值。
模型训练的持续学习方法
持续学习模型通常会从部署了数据的生产环境中合并新的数据流。
消费者每天都会参与持续学习的机器学习模型。以音乐流媒体平台Spotify为例,该平台使用协作过滤功能,根据具有相似爱好的其他用户的偏好向用户提供推荐,来创造价值和竞争优势。
当Spotify用户收听音乐时,与他们的选择有关的数据会反馈到公司的预测算法中。由此产生的反馈循环完善了该应用为其用户提供的推荐,并允许高级个性化设置,例如机器生成的个性化播放列表。Netflix等其他领先的消费媒体服务提供商也使用类似的持续学习系统。
如你所料,构建这些系统所需的技术专业知识和资源对于许多组织来说根本无法满足。此外,你需要稳定的数据流来进行自动集成。在持续学习模型中,人为干预是可能的,但它代表了一个真正的瓶颈。例如,Spotify在将其数百万用户生成的数据反馈回其算法之前,不需要对其进行清理或格式化。
无论是手动更新还是持续学习似乎都是更有效(可行)的选择,你需要从战略上考虑用于生成新数据来进行再培训的劳动力和技术。如果你打算在可预见的将来使用你的模型,则需要合适的资源来保持该模型最新。
预测进化:选择团队
创建训练数据需要人员、流程和工具的战略组合。要解决收集、清理和标记数据的模糊性,你需要一个高效的技术人员团队,其中包括熟练的技术人员和先进的技术。
许多组织无法管理或扩展内部团队来准备训练数据,因此他们寻求利用人类智能的替代方法。众包劳动力是一种常见选择,它使你可以在短时间内找到数百名匿名工人。
然而,匿名众包带来了隐性成本,包括与员工的沟通不畅,这可能导致工作质量低下。而且,如果在开发初期训练数据集时这些缺点很明显,那么当你尝试重新训练和更新模型时,这些缺点将让人特别沮丧。
在一群匿名的众包工人的情况下,几乎不可能进行监督或转移机构记忆。每次开发新的训练数据时,都有发现新的不一致和性能问题的风险。
或许你也可以选择另一种方式,将这个问题外包给靠谱的、专业解决这种问题的企业,会更有保障。
如果有不清楚的地方或其他意见,欢迎评论告诉我们。
原文:
https://hackernoon.com/how-to-keep-your-machine-learning-models-up-to-date-vd5z3yzw
【end】◆有奖征文◆推荐阅读如何用Jupyter Notebook制作新冠病毒疫情追踪器?万人马拉松赛事,人脸识别系统如何快速、准确完成校验?突破性能极限,阿里云神龙最新ASPLOS论文解读DevOps 转型时如何安全融入?对企业产出有何影响?2019年 DevOps 最新现状研究报告解读百万人学AI:CSDN重磅共建人工智能技术新生态漫画:如何给女朋友解释什么是熔断?你点的每个“在看”,我都认真当成了AI
如何更新你的机器学习模型?手把手带你设计一个可持续的预测模型!相关推荐
- 【NLP】Pyhon+讯飞开放平台:手把手带你写一个智能语音播报系统
手把手带你写一个智能语音播报系统. 微信扫码登陆讯飞开放平台:https://www.xfyun.cn/ 完成个人认证. 在控制台创建应用,注意应用名称全库查重,很容易跟别人重复. 可查看到pytho ...
- 手把手带你撸一个校园APP(五):新闻中心模块
这个项目是很早之前在学校做的,如今再回首.很多代码很是粗糙,逻辑也不尽完善.还望各位看官海涵. 前言 通过上一篇文章的功能设计,我们可以发现新闻通知公告等是APP的最主要功能点.主要是聚合展示学校官网 ...
- 手把手带你撸一个校园APP(六):失物招领二手交易模块
代码经过简单的整理,已经放到Github上了.https://github.com/zhengweichao/Hevttc 回首来看,代码质量一般,里面也有各种逻辑问题,还望各位看官海涵.接下来有时间 ...
- 手把手带你写一个JavaScript类型判断小工具
业务写了很多,依然不是前端大神,我相信这是很多'入坑'前端开发同学的迷茫之处,个人觉得前端职业发展是有路径可寻的,前期写业务是一个积累过程,后期提炼总结,比如编程思想,父子类的原型继承,还是对象之间的 ...
- Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx丨惊群效应|error|负载均衡|Openresty丨C/C++Linux服务器开发丨中间件
Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx 视频讲解如下,点击观看: Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx丨惊群效应|error|负载均衡|O ...
- 【技术分享篇】Linux内核——手把手带你实现一个Linux内核文件系统丨Linux内核源码分析
手把手带你实现一个Linux内核文件系统 1. 内核文件系统架构分析 2. 行行珠玑,代码实现 [技术分享篇]Linux内核--手把手带你实现一个Linux内核文件系统丨Linux内核源码分析 更多L ...
- 手把手带你设计接口自动化测试用例(二):根据接口信息设计测试用例
手把手带你设计接口自动化测试用例(二):根据接口信息设计测试用例 上一篇文章 手把手带你设计接口自动化测试用例(一):提取接口信息并分析 详细介绍了如何提取并分析登录.发布.修改.删除.查询等接口信息 ...
- 手把手带你设计接口自动化测试用例:建立数据库实例和测试用例表
目录 建立数据库实例 建立主测试用例表 参考建议 设计接口自动化框架需要考虑测试用例存储的方式.在实际项目中,测试用例存储的方式有多种,可以存放在 Excel 表格中,也可以存放于 Yaml 文件中, ...
- 手把手教你设计一个翻译器—实现复制即翻译(基于百度翻译API)
手把手教你设计一个翻译器 1 获取百度翻译 API 2 先简单实现调用百度翻译并打印翻译结果 3 实现复制即翻译功能 3.1 翻译剪贴板内容并在终端输出 3.2 翻译剪贴板内容并在屏幕输出 4 设计一 ...
最新文章
- python 发布到linux_Linux(CentOS)下的Python3部署流程
- Python黑客编程基础3网络数据监听和过滤
- java第二章_零基础学Java第二章
- js检测弹出窗口拦截程序
- 阿里涉足零售 IoT 的猜想
- java向上向下取整与四舍五入
- java httppost raw_httpclient raw请求
- 全国大数据分析系统基于vue echarts
- 2020牛客多校训练1 I 1or2(拆点拆边带花树一般图最大匹配)
- 计算机网络保密管理十个严禁,涉密网络保密管理规定
- 双人游戏根据胜负关系匹配
- Web安全——同源策略理解
- helm install Error: timed out waiting for the condition
- RTP打包G711音频数据发送
- vscode如何运行python文件_vscode怎么运行.py文件_编程开发工具
- 水货iPad 2价格骤降数千元
- springboot根据cron获取任务执行上次和下次执行时间
- Spring学习总结
- 纤亿通带您了解光开关是如何工作的?
- 调MURA数据集keras CNN模型笔记
热门文章
- (Mirage系列之六)在Mirage里使用Collection
- cocos2d-x JS 获取当前系统时间(解决屏幕双击点击事件)
- Alisql源码编译安装(详细篇)
- 手动创建Spring项目 Spring framework
- Netscaler 认证,访问报http 5000 内部错误
- fragment 横竖屏 不重建
- 在CSS中定义a:link、a:visited、a:hover、a:active顺序
- XMOVE3.0手持终端——软件介绍(五):在2KB内存的单片机上实现的T9中文输入法
- 《SharePoint Portal Server 2003 深入指南》出版预告
- DFS:深入优先搜索 POJ-2386 Lake Counting