文章目录

  • 前言
  • 一、参赛经过
  • 二、深度学习算法
    • 1.网络结构
    • 2.数据处理
    • 3.训练和调参
  • 三、机器学习算法
    • 1.特征构造
    • 2.训练
  • 四、结果及讨论

前言

  2019年夏天我参加了清华大学主办的首届中国心电智能大赛,获得复赛第1,决赛第6;后来趁热打铁,又参加了天池平台上的合肥高新杯心电人机智能大赛,获得初赛第2,决赛第9。这两个比赛已经过去一年多时间了,现在经过一定时间的沉淀,可能认识更加深刻一些,就想写一写总结,把其中一些技巧和思考记录下来。
  由于心电图是一维数据,既可以用一维卷积神经网络来做,也可以用传统的机器学习方法人工提取特征做,我两种方法都用了,发现各有所长。关于这两次比赛,CSDN和知乎上已经有几篇介绍,两种方法的都有,我的算法结构、特征提取和他们大同小异,所以这方面就不多介绍,只介绍一下我的不同的地方,并重点对预测结果进行分析讨论。


一、参赛经过

  清华赛初赛仅需要分析是正常还是异常心电图,复赛异常心电图又细分为AF、FDAVB、RBBB、LAFB、PVC、PAC、ER、TWC供8类,决赛的时候又增加了其他类,复赛和决赛在京东云平台进行,数据无法下载。为了这个比赛,我先啃了两厚本心电图医学专著,当然这比赛必须用编程实现,我是从参加这个比赛才首次接触深度学习,得益于开源精神,群里有人开源,我在别人开源基础上修改,也顺利进入了复赛。尝到站在别人肩膀上的幸福感后,复赛我下了很大的功夫查找相关文献和开源代码,经过仔细吸收消化,合并了一套自己的代码,并且又花了大量时间来分析数据,调参优化,复赛竟然拿下了第一。决赛开始后,一方面可能高手开始发力;另一方面,主办方临时修改游戏规则,改成48小时黑客松,就是现场48小时连续编程跑结果,然后紧接着立即开始答辩,我这年龄根本没法和年轻人比,想当年我做数学建模时也熬过72小时,但现在实在是熬不起,到后面头脑已经完全晕了,仅拿到了第6名。
  天池赛难度比清华赛更高,初赛是54类异常,复赛是有33类异常,几乎把各种心电病症都囊括了,初赛和复赛的训练数据总共有4万多条。数据在天池网站可下载,但标注质量不是很高。毕竟天池的高手更多,我初赛拿到第2,复赛只拿到第9.
两个比赛的链接:清华赛,天池赛

二、深度学习算法

1.网络结构

  清华赛提供的是12导联心电图数据,天池赛提供8导联,但是另外4个导联可以推导出来,所以都可以认为是12导联数据。可以使用1维卷积神经网络来做,至于网络结构,我发现只要主流组件用上,其实各种结构并没有很大差别,不需要迷信某种结构有神奇的效果,无非是调参见高低。我在清华赛中使用了15层较深的网络,在合肥赛中用了非常宽的网络,都可以做到不错的效果,这两个赛的网络结构在CSDN和知乎上也有好几篇分享,我就不再展开。

2.数据处理

  因为深度学习算法是数据驱动的,数据处理很重要。样本数据长度不一,数据对齐是为了把不同长度的数据通过截断或补零对齐,对齐后的长度太短会浪费一些信息,太长则增加计算量。我使用了15000点长度,对应时长是30秒。
  数据增强更重要一些。数据增强要保证两点,1是保证标签是正确的,2是新增的样本要和已有样本尽量有较大的差异性。我使用增强方法是:选择一个已有训练样本,在其中随机选择一定时长的一段(但不少于5000),然后再乘以随机数进行幅值伸缩。这样可以保证标签不变且数据和原样本不同。

图1 数据增强方法
  

图2 数据对齐方法,超过15000的截断,不足15000的统一左侧补零补足15000

3.训练和调参

  调参非常重要,所有的操作措施,包括网络结构、数据增强等等,都可以认为是模型的一种超参,都需要用本地验证来确定这种操作是否有效,还是那句老话:实践是检验真理的唯一标准。
调参的口诀:快、准、狠。
:一定要尝试更多种可能才能发现更好的参数,时间总是有限的,如果我们能够把每次验证的速度加快,我们就可以验证更多的参数可能性,就能够找到更好的参数。那怎么加快呢?这可是一套大学问,除了硬件、浮点精度等常规操作外,我通过这次比赛也总结了一套数据使用技巧。概要来说就是先确定多少训练样本是刚好够用的,多大的采样频率/分辨率是刚好够用的,在调参之初先通过几次试验确定这些数据,我们就不必使用全量训练样本,而是使用一个小比例但又不影像结果判断的小训练集来做为基准进行调参,这样可以大大提高速度。
:只有快不行,必须保证验证是准确有效的。
:就是调参时要大胆尝试各种可能,不要迷信书本上的理论,什么方法都可以试一试,一切以实践为准。

三、机器学习算法

在清华赛中使用机器学习算法各类的效果都不如深度学习,但在天池赛中由于类别特别多,有些类别的分类精度机器学习算法比深度学习还高。所以天池赛可以使用两种方法最后再合并(或融合)。

1.特征构造

深度学习网络会自带滤波功能,所以可以实现端到端的操作,但机器学习通常要先滤波操作一下。我使用小波滤波。然后需要提取R峰,可以使用biosppy库实现。得到所有R峰位置之后,可以用统计法得到以下几类特征。(1)心率类,RR间期的各种统计指标。(2)波形类,根据R峰划分每个心动周期,统计每个周期内的波形特征,包括P波、QRS、T波的长度、幅值等等。总之尽量根据心电图诊断的人类医学经验来构造特征,但很多特征并不易构造,只能尽量逼近。

2.训练

我使用lightgbm建立模型,常规技术都用上,包括特征重要性排序及筛选、训练参数调参、f1指标跟踪早停,5折交叉融合等。


四、结果及讨论

因为我是外行跨界做这个的,我做这个题的初衷之一是想知道AI到底有多神奇,它能在多大程度上替代人类,能够有多大的实用价值,我想这也是很多像我这样的外行面对这几年AI大火的形势下想知道的问题。那么通过心电图智能分析赛这么个点深入刺探之后,我觉得有了一定的认识,下面总结一下。
1,AI的水平高于普通人。心电图还是很难的,我看了两本心电图医学书籍之后,只能判断一些非常简单的症状,我远不如我的程序准确度高。下图例1~例4是清华赛复赛数据中随机抽取的一些AI诊断结果。
例1↓

例2↓

例3↓

例4↓

2,AI水平不如专科医生。我专门找了我一位同学,北京某大医院心内科专家,我对他进行了盲测,结果发现他和AI的结果大多数是一致的,但不一致的基本都是AI错。我们又进一步把不一致的情况分为几种:一是症状比较模棱两可,AI的结论和他的结论都有一定道理,如下图例5;二是训练集中数据不足导致AI没有学到某些情况,如下图例6;三是训练集标注错误导致AI学到了假知识,如下图例7;四是有一些图的病症确实比较复杂,AI没有掌握,如下图例8。我同学也承认AI水平还是让他吃惊的,如果能够补充更多数据,并修正标注错误,准确度还可进一步提高。
例5↓

例6↓

例7↓

例8↓

  总的来说,训练样本都是由人类专家标注的,AI又基于这些训练样本进行学习,所以它不可能超过人类专家,答辩会时一位医学专家也提到:医生能看出来的AI不一定能看出来,专家看不出来的AI肯定看不出来,我要这AI有何用呢?另外,由于深度学习的不可解释性,它所提取的特征难以被看懂并修改,所以即使我们通过错例分析知道它犯了哪些错误,我们也很难纠正它。结论是目前AI还不能够达到替代专科医生的水平,但它可以用在非心电科医生辅助诊断,病人自主预诊断,或疾病大规模筛查中,用以解决我国专科医生不足的痛点。

基于深度学习和机器学习的心电图智能分析参赛总结相关推荐

  1. Python_001_旅游评论情感倾向性分析_000_分析(基于深度学习的微博评论情感倾向性分析_胡西祥)论文

    Python_001_旅游评论情感倾向性分析_000_分析论文-2020-8-21 知网链接:基于深度学习的微博评论情感倾向性分析 - 中国知网 (cnki.net) ps.只做分析概括 目录 一.论 ...

  2. 基于深度学习的海洋生物声音信号智能识别技术与实现

    基于深度学习的水声信号智能识别技术与实现 基于开源数据集,讲声音做FFT变换转换为频谱图,设计卷积神经网络对声音进行分类识别. 这里图片的处理对计算机环境要求比较高. 1.研究背景与意义 2.声音特征 ...

  3. 基于深度学习的烟草工业人员行为分析管控研究(二)

    2.3深度学习技术 2.3.1 深度学习技术理论基础 2.3.1.1深度学习框架 生成式深度架构(Generative deep architectures),主要是用来描述具有高阶相关性的可观测数据 ...

  4. 基于深度学习的图像修补/完整方法分析

    点击我爱计算机视觉标星,更快获取CVML新技术 作者:黄浴,奇点汽车美研中心首席科学家兼总裁 来源:知乎,已获作者授权,禁止二次转载. https://zhuanlan.zhihu.com/p/788 ...

  5. 基于深度学习的目标检测算法对比分析(RCNN、SPP、YOLO、SSD、FPN、RetinaNet)

    目录 (1) RCNN与SPP的比较 (2) RCNN → Fast RCNN → Faster RCNN (3) YOLO与RCNN类方法比较 (4) YOLO与SSD的比较 (5) YOLO v1 ...

  6. 基于深度学习的医学图像配准综述

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转载自:https://blog.csdn.net/weixin_ ...

  7. 深度学习 数码管_创新研发基于深度学习的可见光智能检测技术

    "随着国家智能电网战略布局的不断实施,依托于巡检机器人的变电站智能巡检技术必将逐步取代人力,成为电网巡检的主流.国电瑞源智能巡检机器人搭载基于可见光的智能检测技术实现输电设备异物检测.变电站 ...

  8. 如何基于深度学习实现图像的智能审核?

    背景 美团每天有百万级的图片产生量,运营人员负责相关图片的内容审核,对涉及法律风险及不符合平台规定的图片进行删除操作.由于图片数量巨大,人工审核耗时耗力且审核能力有限.另外对于不同审核人员来讲,审核标 ...

  9. 【AI in 美团】如何基于深度学习实现图像的智能审核?

    ## 背景 美团每天有百万级的图片产生量,运营人员负责相关图片的内容审核,对涉及法律风险及不符合平台规定的图片进行删除操作.由于图片数量巨大,人工审核耗时耗力且审核能力有限.另外对于不同审核人员来讲, ...

最新文章

  1. mysql 搜索标题中字符串_如何在MySQL表中搜索特定字符串?
  2. 数据结构与算法笔记 —— 十大经典排序及算法的稳定性
  3. 第十章 PX4-Pixhawk-姿态控制
  4. 操作系统 哈工大 李治军
  5. 学习linux问题,小白学习linux遇到的问题汇总
  6. 无人车飞速狂飙,黑科技如何为其加油打气?
  7. Moses Staff攻陷以色列网络并加密数据,拒绝谈判
  8. Redis教程:常见问题分析
  9. 【思路】Gym - 101173F - Free Figurines
  10. java贪吃蛇难度设计_Java贪吃蛇应用的设计与实现
  11. 程序员面试题分享,掌握八成便可BAT一试!
  12. batchplot插件用法_教大家如何使用Batchplot批量打印CAD图纸
  13. java.net.UnknownServiceException: CLEARTEXT communication to xxxxx not permitted by network secur...
  14. 微信小程序登陆流程踩坑
  15. 服务器硬盘raid方案,服务器RAID磁盘阵列经验总结
  16. 克拉默法则的理解记忆方法
  17. Java实现简单日期计算功能
  18. 保时捷Taycan的800V电气架构赏析
  19. 更新image的方法
  20. 水下图像增强本科毕业设计帮助思路

热门文章

  1. OI模板のpoke流[大型考试复习必备/kl]
  2. [BZOJ 5072][Lydsy1710月赛]小A的树
  3. Python 简介和入门
  4. Android 通过Uri获取Bitmap对象
  5. C# 派生类的XmlSerializer序列化XML
  6. RAC RMAN 通道配置 RMAN-12001 RMAN-12001 RMAN-10008 RMAN-10003 ORA-01017 错误
  7. C++跨平台IDE之CodeBlocks
  8. php 双向加密解密,一个php双向加密解密法
  9. vbs修改office设置_E002 Ruby 写入数据 【 =gt; Office 】
  10. 机器人学习--各种学习资源(初稿)