测试集准确率不变_这个医疗AI准确率突破天际,招来了铺天盖地的质疑

caf9575fdc788e8600f5b4eb91453892.gif

转自 | 量子位
f1c1cd1426c5dfa0c551f8a60c790ae2.png只要输入一次心跳的波谱。就能判断一个人有没有发生心力衰竭 (CHF) ,准确率100%。这是英国华威大学领衔的团队,用机器学习方法做出的新成果。还登上了影响因子2.943的Biomedical Signal Processing and Control期刊。准确率眼看就要突破天际,高得反常识,招来了铺天盖地的质疑:主要的疑点有两个:疑似过拟合 (没有规律硬拗出规律) ,疑似数据泄漏 (训练集和测试集有重叠) 。一日之间,话题在Reddit论坛的热度已经超过了400:27bfe71914c6af7a2d1328668e00e5cf.png那么,来看看到底发生了什么。

怎样的研究

这项研究,是依靠心电图 (ECG) 来推测,人有没有出现充血性心力衰竭 (CHF) ,也就是人们常说的心力衰竭:指的是心脏没能推送足够的血量,维持身体所需。来自华威大学、佛罗伦萨大学以及萨里大学的科学家们,想让AI去看看心力衰竭的心电图波形有没有规律可寻。于是,团队设计了一维的卷积神经网络 (CNN) ,用公开的心电图数据集,训练它给心电图做二分类:正常 vs 心衰。6b7b141a996bab6cf2025afdfebbbf4e.png训练完成后,团队用490,505次心跳的数据集测试了模型,结果训练集上的分类准确率达到了99.9%:faa36c20b260874428aa3d8ff425826e.png论文还写到,重要的是模型发现了心衰的心电图,有非常突出的形态特征可以用于诊断:008e07d9a058d8f4cf2f5c1e17ea0b08.png不过,研究用的数据集受到了质疑,准确率受到了质疑,连AI发现的重要特征也受到了质疑。

实验的漏洞

乍一看,论文的样本数量似乎很大,论文作者采集了275,974正常的ECG心跳样本和214,531个心脏衰竭患者的样本,总数量达到了49万个。但仔细一看,其实样本的数量是非常少的,总共也只有33个人,一个人多个的心跳不是独立样本。168a277f265708706dde1c0ef30617dd.png心衰患者的数据来自BIDMC数据集,每秒采样250个样本;正常人的数据来自MIT-BIH,每秒采样128个样本。当采用两个不同数据集时,需要对其中一组数据进行下采样,匹配另一组数据的频率。不过研究人员已经注意到这一点,在训练前做了预处理,大漏洞不在这里。但之后的训练过程,就令人产生了数据泄漏 (Data Leakage) 的质疑。首先,数据集被随机分成三个较小的子集,分别进行训练、验证和测试(相当于总数据的50%、25%和25%)。每个人的心跳数据只包含在了一个数据集中,没有在多个数据集里重复出现。因为作者知道,如果一个人的心跳数据,在训练集和测试集都出现,存在交叉验证的可能性。41617db3a1e3dcfb3471f4fc1d59add2.png但是这又带来一个问题,测试集中只有少数几个人的数据,这就相当于拿训练后的模型在个别样本上进行验证,结果的可靠性也大打折扣。为了保证结果在更多的数据上进行测试,作者又想到了另一种方法,将样本做10次随机分割,分别进行10次训练和评估,以减少分类结果带来的差异性。虽然一开始的方法避免了单次实验的交叉验证,但是多次实验取平均,等于又把交叉验证的问题带了回来,造成了数据泄露(Data Leakage)。然后,作者一个只有33个样本的数据上,用了三个1D卷积神经网络层进行拟合,准确率近乎100%,难免不让人觉得是过拟合。10c632a844d426c9f7a3629fd0cdd1ab.png在训练集上避免过拟合,本来是“炼丹”过程的常识,却被作者作为一项优点来宣传。难怪有网友在吐槽:这是一篇门外汉写的机器学习论文。100%对于非机器学习领域的人来说是一件令人惊叹的事情,而专业人士看到只会说“什么鬼”。f479b5a65537f0f430e883986b18d80a.png这篇论文还被发表在正式期刊上,有网友感叹:审稿人的水平哪去了,这个问题看不出来?另外,Hacker News上还有人 (@Cass) 说,AI总结出的两类心电图 (正常vs心衰),根本就有问题:
看图4 (下图) ,正常心电图的“平均”波形,压根不是这样。P太平了,Q太大了,R太钝了,S和T之间也不应该有那个额外的波。如果,提取的正常人平均值都能这么混乱,得出怎样的结果都不奇怪了。
008e07d9a058d8f4cf2f5c1e17ea0b08.png

一直被滥用

这篇论文在Reddit上引起了激烈讨论。随着机器学习大热,很多其他领域的研究者,也开始用机器学习模型,来执行自己领域的任务。而跨学科的研究人员,如果对机器学习的理解不足,很容易出现大问题。3034696dc5ed51b007f1ded72dc01933.png比如,数据泄漏的问题,让人想起了去年8月在Nature发表的一篇预测余震的论文,来自谷歌和哈佛。今年,一位名叫Rajiv Shah的数据科学家用自己的实验证明,这篇文章是“深度学习的错误用法”。他一共提出了三个致命缺陷:最大的缺陷就是数据泄漏。算法在测试集上的表现,远远超过训练集。查看数据集发现,测试集和训练集,包含许多相同的地震。把重叠部分去掉之后,模型的表现下降到了传统方法的水平。9b12dce60c560384222ed7e0f82d45b8.png第二个缺陷是,用随机森林这样的简单方法,也得出了相似的表现和结论。能用简单的方法,却用了复杂的方法,这就是消融实验 (Ablation Studies) 没做好。34a48a32cbe50ead7206fbd9c8abcdc5.png第三个缺陷是,论文中训练用了470万行数据,而Shah用1500行数据,就得到了几乎一样的表现。Shah认为,能用少量的数据解决问题,就不该用成千上万倍的数据量。这次重大的质疑,引起了业内的巨大关注,甚至有许多同行都来一起找Bug:10月2日,Nature又刊登了一篇质疑这项余震预测的论文,证明一个神经元的预测效果比一个六层的网络还要好,相当于否定了一年前的研究成果。83758c411f085a3341a8c048c88e9dc5.png这篇后发的论文指出,仅使用两个参数的逻辑回归模型,可以达到与深度学习方法相同的预测能力。机器学习是个好工具,但在使用它们的时候,需要充分了解它的特性、使用方法和局限性,而不是一味地套用,简单粗暴地进行数据拟合。目前机器学习还处在技术曲线的顶峰,等到热潮褪去,才能知道谁是真正的干货。新闻报道:https://www.surrey.ac.uk/news/new-ai-neural-network-approach-detects-heart-failure-single-heartbeat-100-accuracyhttps://www.forbes.com/sites/nicholasfearn/2019/09/12/artificial-intelligence-detects-heart-failure-from-one-heartbeat-with-100-accuracy/#228e5a067ac9论文地址:https://www.sciencedirect.com/science/article/pii/S1746809419301776完—为您推荐

从6万用户评论中,选出23门全世界最好的CS免费课

GRE作文用AI打分,已经20周年了:AI给中国考生的分数,远高于人类打分

这位90后学霸,即将任教麻省理工南京大学「自然指数」超越清华北大,位列全国高校第一、世界第七,突显学术实力【微软】AI-神经网络基本原理简明教程de0c7f4ef95e18e0a4e20e2f13cc880b.gif

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

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

相关文章

JavaFX自定义控件– Nest Thermostat第1部分

几周前,由于Hendrik Ebbers的出色文章 ,我决定花一些时间观看有关JavaFX的JavaOne讨论。 我不得不说我已经学到了很多东西,只是看这些视频(即使我还没有完成)! Gerrit的“使用力,路克”或使用J…

syslog可能引起得问题_牙齿经常有问题?可能是这4个坏习惯引起的,要改正

很多人明明很年轻,却得了很多牙齿疾病,甚至到了换牙的地步。牙齿虽然是最为坚硬的身体器官,但是即使再坚硬也是容易受到伤害的,日常生活中有很多小事都会造成对牙齿的伤害,想要保护牙齿,一定要改正一下这几…

jq实现前端文件上传

FormData FormData是XMLHttpRequest Level 2 新增的一个接口。 使用FormData可以实现各种文件上传。 使用 // 创建FormData的实例 var formdata new FormData();// 用append()为实例添加键和值 formdata.append(键名, 键值); 注意 使用jq的$.ajax()方法来进行文件上传时&am…

使用JUnitParams进行参数化的JUnit测试

参数化的单元测试用于在不同条件下测试相同的代码。 借助参数化的单元测试,我们可以建立一种测试方法,该方法从某些数据源中检索数据。 该数据源可以是测试数据对象,外部文件甚至数据库的集合。 一般的想法是使使用相同的单元测试方法测试不同…

js webpack 解决跨域问题_webpack-dev-server 作代理解决跨域,让你的本地开发飞起来...

最近在接到一个需求是做一个可视化的监控系统,mock数据来开发的话实在不太方便,况且数据量之大。查了一下资料,可以用webpack-dev-server作为代理,直接请求线上,哈哈哈,是不是很方便。### 目前我用的是webp…

实现用户操作指引功能

主要是通过定位找到需要指引的目标元素,然后再在蒙版上画一个div,设置为白色,定位到目标元素位置。思路大概就是这样。 图一: ![](https://img2018.cnblogs.com/blog/1354858/201811/1354858-20181105141942044-1763163359.png) 图…

vue2.0 element-ui中的el-select选择器无法显示选中的内容

我使用的是element-ui V2.2.3。代码如下&#xff0c;当我选择值得时候&#xff0c;el-select选择器无法显示选中的内容&#xff0c;但是能触发change方法&#xff0c;并且能输出选择的值。 select.vue文件 <template><div><div class"row" v-for&quo…

Gradle接口:Gradle构建元数据

正如我之前在“ 识别Gradle约定 ”和“ 从Ant Build演变Gradle构建&#xff1a;导入Ant构建文件 ”之类的文章中所显示的那样&#xff0c;可以通过Groovy访问Gradle的API来收集有关Gradle构建的重要信息。 在本文中&#xff0c;我演示了如何通过Gradle接口访问基本的Gradle构建…

php 工资 2018,佛山市2018年平均工资(社平工资)

2018年佛山市城镇非私营单位就业人员年平均工资为79824元(折合月平均工资6652)。2018年佛山市在岗职工年平均工资为80288元(折合月平均工资6691&#xff0c;四舍五入)。2018年佛山市城镇私营单位就业人员年平均工资为57297元(折合月平均工资4775)。广东地区2019年7月1日起市平均…

oj运行时错误如何查找原因_VLOOKUP又失灵?避免这四种错误类型

说起函数&#xff0c;你第一个想到什么&#xff1f;那绝对是表界曝光率最高的函数——VLOOKUP 了&#xff01;什么&#xff0c;你还不知道 VLOOKUP&#xff1f;那今天这篇文章&#xff0c;你可千万不能错过&#xff01;&#xff01;根据编号匹配姓名&#xff1b;根据评分匹配等…

Table Dragger - 简单的 JS 拖放排序表格插件

Table Dragger 是一个极简的实现拖放排序的表格插件&#xff0c;纯 JavaScript 库&#xff0c;不依赖 jQuery。用于构建操作方便的拖放排序功能&#xff0c;超级容易设置&#xff0c;有平滑的动画&#xff0c;支持触摸事件。 在线演示 免费下载 您可能感兴趣的相关文章网…

[Swift]遍历集合类型(数组、集合和字典)

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/ &#xff09;➤GitHub地址&…

沣东新城镐京遗址规划_沣东新城房价为啥这么高?

沣东房价为啥2万&#xff0c;为啥超越曲江浐灞&#xff0c;为啥和高新差不多&#xff1f;很多论坛 账号 抖音 喋喋不休&#xff0c;那么说说到底为啥这么贵1、从2018年开始&#xff0c;沣东新城商品房住宅用地&#xff0c;几乎容积率都在2.8以上&#xff0c;90%以上容积率在2.5…

在一台机器上运行多个ActiveMQ实例

几周前&#xff0c;我通过Mule ESB解决方案再次开始使用Apache ActiveMQ作为JMS提供程序。 由于我使用ActiveMQ已经有几年了&#xff0c;所以我认为最好检查一些&#xff08;新&#xff09;功能&#xff0c;例如故障转移传输和其他群集功能 。 为了能够测试这些最后的东西&…

P3138 [USACO16FEB]负载平衡Load Balancing_Silver

https://www.luogu.org/problemnew/show/P3138 题目描述 农民约翰的N只牛分别站在他的二维农场的不同位置&#xff08;x1,y1&#xff09;…(xn,yn)&#xff08;1<N<100000,xi和yi是正整奇数&#xff09;。他想建一排无限长度的南北方向的满足等式xa的围栏来把他的农场分成…

saas物资管理界面设计_大型物流企业都在用的SaaS系统,看大规模运配网络如何实现精细化管理?...

企业发展到一定阶段&#xff0c;货品销售网络会不断扩大&#xff0c;就必须有大型高效的物流体系作为支撑&#xff0c;就需要大规模运配网络实现订单履约&#xff0c;物流企业的更大更多的商机也因此产生。由此可见&#xff0c;拥有大规模运配网络的主体有两类&#xff1a;第一…

socket read time out解决方法_time_after方法对jiffies回绕问题的解决

前言&#xff1a; 最近在啃《 Linux内核设计与实现》&#xff0c;看到第四章CFS时候&#xff0c;读了几遍没太理清这一小节到思路&#xff0c;看到40页这么一句话&#xff1a;“如果这里所讨论的定时器节拍对你来说很陌生&#xff0c;快先去看看第十一章再说。因为这点正是引入…

ASP.NET Core Razor Pages

Razor 页面是Asp.Net Core2.0新增的一个功能。Razor 页面是 ASP.NET Core MVC 的一个新特性&#xff0c;它可以使基于页面的编码方式更简单高效。 环境&#xff1a;vs2017 .net core2.2 Razor 页面项目搭建 目录说明 wwwroot&#xff1a;放置网站的静态文件的目录。例如/wwwroo…

curd操作php代码,Laravel 5.6中的CURD操作(代码示例详解)

在本篇文章中&#xff0c;我将给大家分享laravel 5.6版本中的基本crud(创建&#xff0c;读取&#xff0c;更新和删除)应用程序模块。你可以按照下面的步骤在laravel 5.6中创建CRUD应用程序。Laravel是一个流行的开源PHP MVC框架&#xff0c;具有许多高级开发功能。如果你是lara…

为什么c++的开源库那么少?

为什么c的开源库那么少&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「 C的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#xff01;…