机器学习过程的三个坑,看看你踩过哪一个

精准校准:深入解析scikit-learn中的StandardScaler 是库中的一个预处理类,用于将特征转换为标准分数(z-scores),即每个特征都会减去其均值并除以其标准差。这样处理后,所有特征都会有0的均值和1的标准差。 阅读详情

大数据文摘出品

编译:Vicky、曹培信


几十年来,机器学习领域一直饱受“坦克问题(tank problem)”的折磨。


故事发生在上个世纪60年代(此研究已知的最早文献,此处感谢软件工程师Jeff Kaufman),事件的细节已湮没在时间的迷雾当中,不过故事大概是这样子的:


研究者们编写了个算法来从军方提供的照片中识别坦克。该模型成功地在测试图中找到了坦克,但随后使用真实的照片时却失败了。


原因是什么呢?口口相传的具体细节各不相同,但算法用来测试的图片包含了其他信息,比如在晨光中或从云层下显现的坦克影响了机器判断是一个重要的原因。所以说,并不是坦克的存在决定了算法,其它因素也很重要。


类似的情况在当今也引起了反省。许多机器学习的论文未能完成足够多的实验,审查标准不够一致,并且行业内激烈的竞争也鼓励一些研究人员,一旦得到了他们想要的答案就偷工减料跳过检查。所以在无数领域的科学家正急于用机器学习解决问题时,谷歌的Patrick Riley却呼吁大家在研究中制定更加明确的标准。


不可否认的是机器学习正在推动着整个科学界的发展,尤其是它发现及预测的模式正在从各个领域辅助研究者们,从搜寻分子制造的新方法和在试验中发现微小信号,到改进医疗诊断与揭示基本粒子,皆有其身影。


然而,机器学习工具也会变成“智障”,比如假正例、死胡同与各种错误。而且由于许多算法都太过复杂,以至于无法检查所有参数或者准确了解输入的方式,随着这些算法被更加广泛地应用,错误的结论和科学成果所引发的风险将会呈螺旋式上升。


这些问题并不是一朝一夕的事,所以预测每次分析中出现的所有问题或困境也是不可能的,但至少,那些在自己的领域使用机器学习的研究者们,应该去熟悉一些常见的陷阱,以及如何检测或避免那些陷阱。


为了说明这点,这里列举三个Google Accelerate Science团队所面临并且克服的机器学习的三大问题。


机器学习三大陷阱


不适当地拆分数据


在建模时,机器学习从业者通常将数据分成训练集和测试集,用训练集训练模型,用测试集评估模型的性能。研究员通常会随机拆分数据,但是现实生活里真正随机的数据少之又少。他们可能包含了时间趋势,例如收集数据方法的变化,或是收集信息的各种选择。


例如,这种历史模式隐藏在分子数据集中,而机器学习算法正在对这些数据集进行虚拟筛选,以寻找候选药物。这里的挑战在于预测一个分子如何会被有效地被人体吸收或减少炎症。筛选从有关分子的数据开始,这些分子具有或不具有预期的效果,但是收集数据的背景或许会与机器学习模型的使用方式有所不同。


一个模型可能是用一组公开可用的分子数据集训练的,然后用于测试另一组专有的分子数据集。而当有希望的候选项被检测和丢弃时,化学家的关注点往往从某些分子群转移到另一些分子群。 因此,研究人员经常高估模型在实践中的表现。 这会导致期望值的膨胀,并且在选择不适合的分子上浪费时间和金钱。 许多模型制造者都落入这个陷阱。


换句话说,你要解决的问题才应该影响你如何分割数据。为了预测向一个分子中添加两个原子的效果,测试集中的每个分子在训练集中应该至少存在两个原子的差别。 如果你想对不同的化学分子有更好的预测,测试集中的每个分子都应该不同于训练集中的任何东西。 分割数据的“正确”方法可能并不显眼,但是仔细考虑和尝试几种方法或有意想不到的收获。


隐藏变量


在一个理想的实验当中,研究者只改变他们感兴趣的变量,并让其他变量保持不变,而这种控制在现实当中几乎是不可能的。仪器的精确度会随着时间而改变,试剂的批次会有所不同,一个实验条件会先于另一个进行表现出来,甚至天气都有可能影响结果。在机器学习模型中,这些不受控制的变量都将是有害无益的。


举个例子,谷歌的一个团队一直在加利福尼亚州的福特·希尔兰赫 (Foothill Ranch, California) 的核聚变初创公司TAE Technologies工作,进行优化生产高能等离子体的实验。他们在这里建了模型来试图理解等离子机的最佳设备装置。这里存在着上百个从“何时接通电极”到“设置在磁体上的电压为多少”等控制参数,然后记录了一系列包括温度和光谱在内的测量值。


他们历经数月,从数千次运行的等离子机中提取了数据,其中的设定会随着我们的设备调整、部件磨损和多种尝试有所变化。当我们得到了一个在给定的设置下,无论等离子能量是否会变高,预测结果都很不错的模型时,大家都很高兴,不过很快就打脸了。


当他们以实验时间为唯一输入而不是机器的所有设置来训练模型,也得到了相似的预测效果。为什么?因为模型锁定的就是时间趋势,而不是物理现象。也就是说,机器运转良好的时间段和不良的时间段分别出现,所以,从实验完成的时间可以看出等离子体是否是高能量的。此外,通过控制参数的设置可以粗略预测实验何时进行ーー这些参数的变化也存在时间趋势。也就是说,除了时间规律,模型什么物理规律都没管。


隐藏变量也会来源于实验布局。像我们在解读显微镜图像方面与许多机构合作,其中包括纽约市的纽约干细胞基金会研究所。这些图像包括了在培养皿上进行的生物实验,通常是一些包含细胞和液体的网格孔。我们的目标是发现拥有某些特征的孔,比如化学处理后细胞外观的变化。但是生物变异意味着每个培养皿本身总是会看起来有稍许不同,并且单个培养皿也可能存有差异。如果外围孔有更多液体蒸发,或者培养皿有被倾斜,那边缘看起来通常会与中心不一样。


机器学习算法能轻而易举地注意到这些变化。比如说模型可能刚辨认出了哪些孔处在培养皿的边缘 ,一种检查模型的简易方法就是让模型去预测其他方面,如培养皿的位置、哪一块培养皿,或者图片来源的批次。如果算法能做到这一点,那你最好对结果持怀疑态度。


最重要的一点是,要使用多个模型来检测那些意外变量与隐藏变量。可以用一个模型侧重你关心的问题,比如离子是高能还是低能,细胞是否健康,其他模型则用来清除干扰因子。如果后者结果很强,那么请将数据标准化,做些进一步的实验,或者调整一下结论。


曲解目标


机器学习算法要求研究员明确一个用来估量各种错误严重度的“损失函数”,例如到底是有两个1%的错误好,还是单个2%的错误更合理。从业者们倾向于应用函数的一小部分,从而导致他们无法得到真正需要的内容。


还是举个例子,大家一直有用机器学习来辅佐求解微分方程。这些公式在包括流体力学、电磁学、材料科学、天体物理学和金融建模中很常见,一般情况下它们必须以数字方式解决,然后开始训练模型,从而能在有限的条件下提供更高的精确性。


比如说从一个方程开始描述水波如何在一维进行传播吧。该算法的任务是从当前的时间步长来重复预测下一步,在这方面可以准备两种略微不同的方法与训练模型。根据损失函数来看,这两个模型是一样优秀的,但实际上其中一个做了一堆无用功,另一个的产生结果更接近预期。


原因就是控制学习的损失函数只考虑到了下一步的错误,而不是研究者真正想要的多重步骤的解决方案有效性。


我们在糖尿病视网膜病变的机器筛查方面也出现了分歧目标。这是糖尿病的一种并发症,也是世界上可预防性失明的主要原因。如果能从眼后图像及时检测到该病症,它就能被有效治疗。当我们收集数据并且让眼科医生通过图像进行诊断时,我们让机器学习的工具预测一下医生都会说些什么,此时出现了两种情况。


在印度Madurai的Aravind医院,工作人员和谷歌研究员正在进行眼科检查,试图自动诊断由糖尿病引起的失明。图源:Atul Loke /纽约时报/ Red / eyevine


情况一是眼科医生经常不认同诊断,因此研究人员意识到不能通过单一的预测来建立模型。总不能来个投票说少数服从多数,因为在医疗上,有时候少数人的意见才是正确的。情况二是单一疾病的诊断实际上并不是真正的目标。因为往往需要问的是:“这个患者需要去看医生吗?”,然后通过这种方式将目标从单一疾病的诊断扩展到多重疾病。


机器学习从业者很容易迷恋上数据标签都清晰的 “明显“目标,但他们可能正在设置算法来解决错误的问题。所以必须牢记大方向和总目标,否则就只会为错误问题埋单。


那可以做什么呢?


首先,机器学习专家需要让自己和同事们持有更高的标准。当有新实验设备到来时,大家总是寄希望于实验室的小伙伴们搞懂其功能,怎么校准,怎么检测到问题,还要了解其功能的限制。因此,面对机器学习时也应如此。机器学习不是魔法,工具的使用者们必须了解如何掌控它们。


其次,当需要使用机器学习时,不同学科需要为其制定出明确的标准。合适的控制、健全性检查和错误的测量会因领域而异,所以这些都需要解释清楚,以便研究者、审查者和从业者有规可循。


第三,机器学习科学家们所受的教育需要包括一些更广泛的内容。即使有些类似于这样开源的资源存在,需要做的仍然很多。授人以鱼不如授人以渔,可能更多人只去学算法与工具,但学习如何应用算法与适当地提出质疑也很重要。


所有从事机器学习的人都正处在一个神奇的点上——计算能力、数据和算法交织在一起,在机器学习的的协助下碰撞出了新的美妙火花 ,利用好这个机会将是整个科学界义不容辞的责任。


谷歌AI教育

http://ai.google/education


相关报道:

https://www.nature.com/articles/d41586-019-02307-y


机器学习与【流体力学】相关应用 湍流建模:湍流是流体力学中最复杂的问题之一。传统的湍流模型(如RANS和LES)虽然有效,但计算成本高。机器学习可以通过训练深度神经网络(如卷积神经网络、长短期记忆网络等)来预测湍流的特征,从而降低计算成本。降维和加速模拟:将高维的流场数据通过自编码器等方法降维,减少计算量,同时保持模拟精度。机器学习还能用于替代部分数值计算步骤(如Poisson求解),加速整体模拟过程。 阅读详情

相关推荐

机器学习常见问题整理?

机器学习项目流程? 答:理解实际问题,抽象成数学模型(分类、回归、聚类)——>获取数据——>特征预处理与特征选择——>训练模型与调优——>模型诊断(过拟合、欠拟合等)——>模型融合——>上线运行。 机器学习算法的分类? 答:监督学习、非监督学习、半监督学习、强化学习。 特征选择与降维的区别? 答:两者达到的效果是一样的,都是试图去减少特征数据集...

moledyzhang的博客 5607

很棒的机器学习流体力学:FM中ML的精选列表

很棒的流体力学机器学习 适用于流体力学的机器学习论文,代码,库和数据库的精选列表。 目录 构架 是Google开发的著名机器学习库。 是Facebook开发的另一种机器学习框架。 是通用的机器学习库。 它还提供了其他几种数据分析算法的实现。 是回声状态网络(储层计算)的一个很好的实现。 ESN通常在动态系统中找到其应用。 是基于PyTorch的ESN的另一个很好的实现。 是一个软件包,其中包含几种用于非线性动力系统(SINDy)的稀疏识别的实现。 它也非常适合于动态系统。 是用于奇异值分解(SVD)的实现,该奇异值分解是分布式和并行化的,因此对于大型数据而言非常有效。 研究文章 评论论文 数据时代的湍流建模,2019年。() 湍流中机器学习的观点,2019年。( ) 面向流体力学的机器学习,2020年。( ) 湍流建模中的机器学习方法透视,2020年。() 机器学习

机器学习的模型校准

机器学习分类问题的模型校准

weixin_46277779的博客 4153

流体力学+机器学习

而对于第二个问题(流体的运动情况很复杂,难以准确预测),机器学习其实很难解决,除非你的训练集来源于高质量的实测数据,但是这样的数据获取成本相当高而且不排除随机误差的噪声干扰。数值模拟在部分情况下可以用于生成比较稳定的训练数据集,但是如果遇到比较那啥的老师来攻击你训练集的准确性,那就比较麻烦了,毕竟很多数值模拟的结果本身就是自欺欺人的(误)。链接:https://www.zhihu.com/question/358960812/answer/1639353995。的预测,另一种是基于。作者:Tenny-X。

weixin_44708254的博客 1169

【AI】用iOS的ML(机器学习)创建自己的AI App

在机器学习中,一切都始于模型,这是进行预测或识别的系统。教计算机学习涉及使用训练数据的机器学习算法进行学习。从训练中生成的输出通常称为机器学习模型。有不同类型的机器学习模型来解决同一个问题(例如对象识别),但使用不同的算法。是其中一些机器学习算法。

欧阳天涵的专栏 5738

ML system 入坑指南

ML system 入坑指南

s178435865的专栏 2118

Unity 机器学习(ML-Agents) 基础

Unity 机器学习 ML-Agents 基础Unity 官方示例下载ML-Agents 部分Python 下载AnacondaAnaconda 虚拟环境构建 ML-Agents安装 ML-Agents Python 包安装 ML-Agents 包ML-Agents 入门指南Unity Hub 部分虚拟环境 训练虚拟环境 训练运行:虚拟环境 开始训练:虚拟环境 观察训练进度:虚拟环境 停止训练虚拟环境 恢复训练虚拟环境 训练模型ML-Agents 打造新的学习环境ML-Agents 资产导入 Unity 官

Maddie_Mo的博客 1万+

Spark 2.0 机器学习 ML 库:常见的机器学习模型(Scala 版)

一、前言 机器学习中,人为地设计算法,需要一定的知识积淀。 而使用别人设计好的机器学习库如 Spark 2.0 ML,那是基本不需要什么基础的,开箱即用。 首先,看一个简单、完整、规范的案例,无疑是最好的方式。 之前的文章(内含短小精悍的案例): Spark 2.0 机器学习 ML 库:特征提取、转化、选取(Scala 版) Spark 2.0 机器学习 ML 库:机器学...

IT小村 1万+

ML.NET:一个.NET开源、免费、跨平台的机器学习框架

今天大姚给大家分享一个.NET开源、免费、跨平台(支持Windows、Linux、macOS多个操作系统)的机器学习框架:ML.NET。并且本文将会带你快速使用ML.NET训练一个属于自己的图像分类模型,对图像进行分类。ML.NET 允许开发人员在其 .NET 应用程序中轻松构建、训练、部署和使用自定义模型,而无需具备开发机器学习模型的专业知识或使用 Python 或 R 等其他编程语言的经验。该框架提供从文件和数据加载的数据。数据库,支持数据转换,并包含许多机器学习算法。

专注于C#/.NET/.NET Core学习、工作、面试干货和实战教程分享。这里聚焦了大量的C#/.NET/.NET Core优质文章、开源项目、实用工具和学习、工作、面试心得。 2597

在 Azure ML 上用 .NET 跑机器学习

.NET ML 你在用了吗?

Kinfey 4351

人工智能AI 与 机器学习ML 的关键区别

人工智能(AI)是指计算机系统能够执行通常需要人类智能才能完成的任务。包括理解自然语言、识别图像、解决复杂问题和做出决策。AI的目标是创建能够模仿或超越人类智能的系统。弱人工智能(弱AI):也称为窄AI,专注于特定任务。例如,语音助手(如Siri和Alexa)和推荐系统(如Netflix和Amazon的推荐算法)。强人工智能(强AI):也称为通用AI,具有执行任何人类智能任务的能力。目前,强AI仍处于理论阶段,尚未实现。机器学习(ML)是人工智能的一个子领域。

王教主的博客 5943

ML:MLOps系列讲解之《基于ML的软件的三个层次》解读

ML:MLOps系列讲解之《基于ML的软件的三个层次》解读 目录 《基于ML的软件的三个层次》解读 1、Data: Data Engineering Pipelines 1.1、Data Ingestion 1.2、Exploration and Validation 1.3、Data Splitting 2、Model: Machine Learning Pipelines 2.1、Model Training 2.2、Model Evaluation 2.3、Mode

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 4019

使用 Spark ML Pipeline 进行机器学习

Spark ML Pipeline 的引入,是受到scikit-learn的启发,虽然 MLlib 已经足够简单实用,但如果目标数据集结构复杂,需要多次处理,或是在学习过程中,要使用多个转化器 (Transformer) 和预测器 (Estimator),这种情况下使用 MLlib 将会让程序结构极其复杂。所以,一个可用于构建复杂机器学习工作流应用的新库已经出现了,它就是 Spark 1.2 ...

小数据研究院 7213

AIDE ML — 机器学习工程代理

AIDE 算法是一个树搜索代理,能够自主地编写、调试和测试代码,直到用户定义的指标达到最大值。由 LLM 驱动的代理,能够编写、评估和改进机器学习代码。知道还有其他引用或衍生自 AIDE 的公共项目吗?提示:使用完全本地化的模型时,性能可能会有所下降。使用侧边栏粘贴您的 API 密钥,上传数据,设置。用户界面显示实时日志、解决方案树和最佳代码。使用的Python 包的形式发布,并包含。智能体使用数据集,并用通俗易懂的英语描述。完全本地化(代码+评估器——无外部调用)替换新的搜索启发式方法、评估器。

具身机器人和通用AI 3638

机器学习ML.NET

是用于 .NET 的跨平台开源机器学习 (ML) 框架。ML.NET 允许开发人员在其 .NET 应用程序中轻松构建、训练、部署和使用自定义模型,而无需开发机器学习模型的专业知识或使用 Python 或 R 等其他编程语言的经验。该框架提供从文件和数据库加载数据,支持数据转换,并包含许多 ML 算法。借助 ML.NET,您可以针对(如分类、预测和异常检测)训练模型。您还可以在 ML.NET 中使用 TensorFlow 和 ONNX 模型,这使得框架更具可扩展性,并扩展了支持的方案数量。

A_nanda的博客 5456

ML:MLOps系列讲解之《CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型—业务和数据理解→数据工程(数据准备)→ML模型工程→评估ML模型→模型部署→模型监控和维护》解读

​ ML:MLOps系列讲解之《CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型—业务和数据理解→数据工程(数据准备)→ML模型工程→评估ML模型→模型部署→模型监控和维护》解读 目录 MLOps系列讲解之《CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型》解读 6、CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型。 6.1、Business and Data Understanding业务和数据理解 6.2、Data Eng

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 3018

Unity机器学习2 ML-Agents第一个例子

Unity机器学习2 ML-Agents第一个例子 上一节我们安装了机器学习mlagents的开发环境,本节我们创建第一个例子,了解什么是机器学习。 我们的例子很简单,就是让机器人自主移动到目标位置,不能移动到地板范围外。 机器学习的过程 MLAgents机器强化学习的过程(reinforcement learning) observation - 监视 decision - 决策 action - 行动 reward - 奖罚 这4个步骤的翻译可能不是很准确,大概就是先观察,后决策,然后行动,最后奖罚。

thinbug的专栏 2872

VIPER22A实战:从零搭建15W非隔离电源,附BUCK电路调试心得

本文详细介绍了使用VIPER22A芯片从零搭建15W非隔离电源的全流程,重点解析BUCK电路设计与调试技巧。通过核心参数计算、PCB布局优化和效率提升方案,帮助工程师快速掌握DC-DC电源设计要点,实现高效稳定的电源转换。

redis7keeper的博客 667
上一篇: 依图朱珑:点亮AI是一场基础设施革命
下一篇: 乐队的夏天大结局!用Python分析投票数据,选出真正的乐队TOP 5
BigDataDigest
博客等级 码龄9年 448粉丝 500原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值