陈小杰+曹国华
摘要:该方法独创性地在将机器学习用于心率数据挖掘,根据长时间采集的心率大数据建立该用户的心律状况评价函数,同时实时进行动态反馈和修正,解决了从采集到的心率大数据中到心律状况动态函数这一复杂多变量、强耦合、动态实时变化的伪随机拟合问题。
【关键词】心率 信号处理 机器学习 可穿戴预警系统
1 算法流程
首先给出本产品总的算法流程图如图1所示。
在本节中将详细讨论机器学习算法设计。当数据由NRF51822芯片传给APP时,首先APP需要采集大量的基础数据,以便刻划出该用户的心律状况图谱即解算出该用户的心律状况函数,然后根据蓝牙芯片传输的数据对该函数进行实时反馈修正,从而当用户出现心律异常征兆时,能够及时给出预警信息。接下来便详细论述基于机器学习的心律状况函数以及动态实时反馈修正算法的推导过程。
2 卷积神经网络的机器学习
在作品难点与创新一节中己详细论述了心率曲线数据的本质是伪随机数据,而心率曲线数据和刻划心律健康状况指标的心律状况函数可以看做是一个多变量、强耦合的动态非线性映射。本文采取基于卷积神经网络的机器学习解决该问题。
假设数据采集频率为N/S,则在一天之内可以采集的数据为N*60*60*24=86400N個心率数据。假设N为0.5,3天之内即可采集到百万个数据,可见数据量已经足够了。为了叙述的方便,将等待被训练数据个体的长度设为M个,于是原问题简化为从86400N/M个样本中训练出最常见、出现频率最高的样本特征,换言之即从86400N/M个样本中提取出最大特征公约数。当采集到新的心率数据时,即可根据该算法判断出该心率数据是否在最大特征公约数中,如果在,便说明心律并无异常,当采集到的心率数据样本偏离太多,即可证明该时问段内心律出现异常,从而给出预警信息。该算法的层级结构如图2所示。
首先需要对输入的心率数据样本进行前处理以去噪和得到更加有用的信息。本产品中所采取的预处理方法如图3所示。
然后将心率输入样本进行CNN机器学习算法的第一步卷积运算。卷积运算的本质其实是将输入数据和滤波矩阵filter进行内积。在CNN中,滤波器filter(带着一组固定权重的神经元)对局部输入数据进行卷积计算。每计算完一个数据窗口内的局部数据后,数据窗口不断平移滑动,直到计算完所有数据。这个过程中,有如下参数:
(1)深度depth:神经元个数,决定输出的depth厚度。同时代表滤波器个数:
(2)步长stride:决定滑动多少步可以到边缘:
(3)填充值zero-padding:在外围边缘补充若干圈O,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。图4便是其运算原理图。
设输入心率样本数据为[a b;c d],设置的滤波器组为[d e;fg],则输出为:
[yl y2;y3 y4]
其中:yl=ad+be+cf+dg
y2=bd+df;
y3=cd+de;
y4=dd;
当数据经过卷积层便进入激励层。本激励层选用sigmoid函数,其功能是相当于把一个实数压缩至O到1之问。当z是非常大的正数时,g(z)会趋近于1,而z是非常大的负数时,则g(z)会趋近于O。这样一来便可以把激活函数看作一种“分类的概率”,比如激活函数的输出为0.9的话便可以解释为90%的概率为正样本。
最后将这些数据经过池化层,本池化层采取求最大值的方式。然后将该数据进行复合输出。整个流程已经走完,剩下的便是让所有样本心率数据进行迭代。建立该网络神经元,当下一个样本数据来临时,便可给出其输出值,根据输出值即可判断该样本心率数据是否属于该用户该段时问内正常的心律范围内。endprint