机器学习,流式IoT和医疗设备互联
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~
让我们来看一下机器学习是如何应用于医护行业以及如何借助Apache Spark对患者的监控数据进行处理
现如今,IoT数据,实时流式数据分析(streaming analytics),机器学习以及分布式计算的组合相比之前有了长足的进步,同时成本也比以前要低,这使得我们可以更快地完成更多数据的存储及分析。

这里列举一些IoT,大数据以及机器学习协同完成任务的例子:
- 医疗保健:对慢性疾病的持续监控
- 智慧城市:交通流量和拥堵的管理疏导
- 制造业:结构优化以及预测建筑是否需要保养维护
- 运输业:路径规划,减少燃油消耗
- 汽车:无人驾驶汽车
- 电信,信息传输:异常检查
- 零售:基于位置的广告推荐
要理解IoT,流式数据和机器学习结合为什么可以提升医疗保健的效果,首先应当了解慢性疾病——如心脏病等是人类的主要疾病,人们的大部分医疗费用都是用在其上,而其中的关键是如何做好慢性疾病的护理以避免慢性病人不必要的住院。利用机器学习可以使用更便宜的传感器监控重要的生命体征,让医生更快地根据患者的病情开出更智能的药方,这一模式在低成本实现可扩展的慢性疾病管理上也具有着一定潜力。

斯坦福大学的一个研究小组的结果表明机器学习模型可以比专家更好地从心电图(EKG)中识别出心率失常。

正如麦肯锡全球研究所的Michael Chui所说:“放置在患者身上的传感器可以实现远程实时监控以提供早期预警,从而避免慢性疾病的突发和昂贵的护理费用。而单单对充血性心力衰竭更好的护理就可能为美国减少每年10亿美元的费用开销。”
监控数据可以进行实时分析并在必要时向护理人员发送警报以便他们可以即时了解病人情况的变化。低的误报率以及对真正的突发情况发出异常警报都是必不可少的;在UCSF的一名病人就是因为服用了超出常规剂量39倍的抗生素而死去。超量39倍的警告和超量1%的警告看起来是完全一样的,以至于看到了太多次警告的医生和药剂师常常不会看警告内容。
本文中我们将讨论流式机器学习在心脏监控数据异常检测上的应用,通过这个例子来展示数字医疗技术到底是怎样应用的。我们将细致讨论如何通过技术来控制触发警报的准确率从而降低误报率。关于这个应用的细节,可以从这里下载pdf文档查看,这项应用是基于 Ted Dunning 和 Ellen Friedman 编写的Practical Machine Learning: A New Look At Anomaly Detection。

什么是机器学习?
机器学习通过算法在数据中发现相应的模式(find patterns)并建模来识别这些模式(recognize patterns),从而在新的数据上进行预测(predict)。

什么是异常检测?
异常检测是无监督学习方法的一个实例。
无监督学习算法并不需要预先获得样本的类别或者目标值。它通常用于在输入数据中寻找到其中的规律以及数据之间的相似之处——比方说可以通过用户的消费数据对相似的顾客进行分组。

异常检测首先会建立起正常体征的模式/群组,然后将观测到的体征与之进行对比,如果确定两者之间存在明显的偏差,就可以发出警报。在这个方法之下,我们最初并没有我们想要分类的异常状况下心脏状况的数据集。所以我们首先查阅文献寻找偏差值并对它进行近乎实时的评估。
通过聚类构建模型
心脏病专家已经定义了正常心电图的波形模式;我们利用这些模式来训练模型根据之前观测到的心跳活动来预测后续时刻的观测值并与实际值进行比较来评估异常行为。
为了对正常的心跳行为进行建模,我们处理提取了一份心电图并将它拆分为大约1/3秒的片段(数据是从某一特定的病人或者许多患者中的一组提取得到的,片段与片段之间存在重叠),随后通过聚类算法来对相似的波形进行分组。

聚类算法可以对数据集中出现的数据进行分组。聚类算法训练完成后可以通过分析输入样本之间的相似度从而将样本归类到相应的类别下。K-means聚类算法会将观测值分为K组,每个观测值属于哪一个组取决于样本距离哪一个聚类中心的距离最短。

在下面的Apache Spark代码中,我们完成了一下工作:
- 将心电图数据转化为向量。
- 创建K-means对象并设置聚类的个数以及聚类算法训练的最大迭代次数。
- 在输入数据上训练模型。
- 保存模型以备随后使用。

通过以上步骤,我们得到了一系列聚类中心图像构成的目录(catalog),我们可以用它来重建(reconstruct)一个心电图的数据,判断它与我们目录中的哪一个心电图波形最为相似。

利用正常数据得到的模型对实时流数据进行处理

为了将获得的真实心电图数据与上一步建模得到的正常心跳行为进行比较,当心跳波形到达左图中的绿色波形中的重叠区域时,我们可以获得与之匹配的正常波形,如中间的红色波形所示,将两段红色波形进行叠加就可以得到与左侧绿色波形相似的正常心电图波形。(为了从重叠的波形片当中重建波形,我们乘了一个基于正弦的窗函数)

在下面的Apache Spark代码当中,我们完成了以下步骤:
- 使用DStream的foreachRDD方法来处理DStream中的每一个RDD。
- 将心电图数据解析为向量。
- 利用聚类模型得到当前时间窗中波形对应的正常波形类别。
- 用当前获得的类别id,32个实际心电图观测点以及32个重建得到的心电图数据点创建信息。
- 将增强的信息传递给另一个MapR-ES topic

在实时的仪表盘中展示实际观测的心电图以及重建得到的正常心电图波形
我们使用了用于构建交互式时间驱动的微服务工具包Vert.x来构建实时的web应用展示观测到的心电图波形和重建的正常心电图数据。在这个web应用当中:
- Vert.x Kafka客户端消费来自MapR-ES topic的增强心电图数据并将在Vert.x的event bus上进行消息推送。
- JavaScript浏览器客户端订阅Vert.x 的event bus,使用SockJS来展示观测到的心电图波形(绿色)以及重建的预期波形(红色)。

异常检测
观测的心电图波形和预期的心电图波形之间的差值(绿色波形减去红色波形)即重建误差,也叫残差(对应下方的黄色波形),如果残差很大,那么可能出现了异常。

异常检测的目标是在保证低的误报率的同时发现真正的问题;这里的挑战是如何确定触发警报的残差阈值。
T-digest算法可以基于数据集的分布来评估重建误差的大小。将这个算法加入到异常检测的工作流之后你可以将警报的数目设定为全体观测值的一定百分比。T-digist算法可以用适量的样本非常精准地估计出它的分布(尤其是长尾分布,这也是我们通常关注的异常值的分布)。在得到分布的估计之后,就可以设定产生警报的阈值了。比方说,设定阈值为99%时每100次重建大约就有一次警报,这会产生相对多的警报(根据异常的定义,它应当是少见的)。而设置为99.9%时,基本1000次重建才会出现一次警报。

总结
这篇文章介绍了流式系统如何利用输入的心脏监控数据进行异常检测,展示了数据如何通过一个自编码器模型与后续的上下文数据进行比对从而检测出异常的心跳数据。本文也是IoT,实时流式数据,机器学习和数据可视化以及警报场景相结合提升医护人员工作效率并降低维护成本的一个实例。
在IoT的不同场景下,要求企业对数据进行收集、汇总,了解整个设备群从而理解其中会发生的事件和情况。除此之外,根据MapR的 Jack Norris所说,企业也应当对边界事件注入智能以便他们可以更快地对这些事件作出反应。拥有一个通用的数据结构可以帮助你以相同的方式处理所有的数据,控制数据的访问以及以更快、更高效的方式应用智能算法。
问答
相关阅读
此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/developer/article/1106060?fromSource=waitui

机器学习,流式IoT和医疗设备互联的更多相关文章
- 【Azure媒体服务 Azure Media Service】Azure Media Service中Stream Endpoint 说明 (流式处理终结点)
Azure 媒体服务是一个基于云的媒体工作流平台,用于生成需要编码.打包.内容保护和直播活动广播的解决方案. 在视频的直播,点播方案中,媒体服务的架构主要由三部分构成: 推流端,把本地视频或直播内容推 ...
- CSS3与页面布局学习笔记(四)——页面布局大全(负边距、双飞翼、多栏、弹性、流式、瀑布流、响应式布局)
一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...
- Storm:最火的流式处理框架
伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高.举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他希望的当然是这 ...
- 翻译-In-Stream Big Data Processing 流式大数据处理
相当长一段时间以来,大数据社区已经普遍认识到了批量数据处理的不足.很多应用都对实时查询和流式处理产生了迫切需求.最近几年,在这个理念的推动下,催生出了一系列解决方案,Twitter Storm,Yah ...
- 流式布局&固定宽度&响应式&rem
我们现在在切页面布局的使用常用的单位是px,这是一个绝对单位,web app的屏幕适配有很多中做法,例如:流式布局.限死宽度,还有就是通过响应式来做,但是这些方案都不是最佳的解决方法. 1.流式布局: ...
- webapp,liveapp: 流式布局和rem布局
liveapp场景应用,一般针对的是移动端,近来也是很火,颇有一些感受,拿来分享一下. 页面宽度范围: 一般移动端页面我们的像素范围是320px-640px,最大640px,最小320px,所以设计稿 ...
- 分布式流式处理框架:storm简介 + Storm术语解释
简介: Storm是一个免费开源.分布式.高容错的实时计算系统.它与其他大数据解决方案的不同之处在于它的处理方式.Hadoop 在本质上是一个批处理系统,数据被引入 Hadoop 文件系统 (HDFS ...
- BootStrap入门教程 (一) :手脚架Scaffolding(全局样式(Global Style),格网系统(Grid System),流式格网(Fluid grid System),自定义(Customing),布局(Layouts))
2011年,twitter的“一小撮”工程师为了提高他们内部的分析和管理能力,用业余时间为他们的产品构建了一套易用.优雅.灵活.可扩展的前端工具集--BootStrap.Bootstrap由MARK ...
- DirectSound学习(二)--流式缓冲区
使用流式缓冲方式播放波形音频文件比较复杂,主要原因是在只有一个缓冲区提供给用户的前提下,这个缓冲区在提供给声卡播放数据的同是还需要用户不断的定时向其中写入数据.要注意从缓冲区这时是一个环形缓冲区,声音 ...
随机推荐
- nginx 安装php
1. 安装PHP 5.5.0 下载 1 2 cd /usr/local/src/ wget http://www.php.net/get/php-5.5.0.tar.bz2/from/jp1.ph ...
- 自己动手写web框架----2
在上一节,我们自己写的web框架,只能运行显示一个HelloWorld.现在我们对其进行一次加工,让他至少能运行一个登陆程序. 首先看login.jsp <%@ page contentType ...
- 能量最小化初探,graphcuts能量最小化调用
1.相对于能量函数来说,能量最小化的办法都有哪些? 梯度下降 模拟退火 图割 2.这个 跟最优化问题的求解,有什么联系跟区别呢? 基本上差不多,其实就是求出来了函数的一个最小值,我们看问题的时候不妨把 ...
- IOS动画(Core Animation)总结 (参考多方文章)
一.简介 iOS 动画主要是指Core Animation框架.官方使用文档地址为:Core Animation Guide. Core Animation是IOS和OS X平台上负责图形渲染与动画的 ...
- java的双缓冲技术
Java的强大特性让其在游戏编程和多媒体动画处理方面也毫不逊色.在Java游戏编程和动画编程中最常见的就是对于屏幕闪烁的处理.本文从J2SE的一个再现了屏幕闪烁的Java Appilication简单 ...
- WinCE中断结构分析
前一段时间研究了一下WinCE下的中断结构,整理了一下,希望与大家讨论. 最下面有PDF版本下载,便于保存 版权申明:本文版权归ARMCE所有,转载请保留所有原文内容及 ARMCE标识并注明出 自 A ...
- 关于Mac中PATH环境变量可能会被修改的几个地方
一个是全局的profile文件,位置在/etc/profile中:另一个和用户无关的全局位置在/etc/paths.d目录中: apple@kissAir: paths.d$pwd /etc/path ...
- Fragment生命周期与Fragment执行hide、show后的生命周期探讨
一.Fragment 生命周期中的每个方法的意义与作用: 1.setUserVisibleHint()(此方法不属于生命周期方法):设置Fragment 用户可见或不可见时调用此方法,此方法在Frag ...
- Course4-Python ftp/ssh
1. ftp Python 自带有模块支持ftp. 可以参看一下代码. #!/usr/bin/env python import sys import os import time import ge ...
- Javascript的console['']几种常用输入方法
1.console.log是最常用的输入方法,正常化输出语句,还具有print占位符整数(%d||%i),浮点数(%f),对象(%o),字符(%s); 2.console.error输出错误化的语句 ...