发明内容
为了解决异常检测精度较低的技术问题,本发明提供了基于智能戒指的心率异常捕获方法及系统,所采用的技术方案具体如下:
第一方面,本发明提出了基于智能戒指的心率异常捕获方法,该方法包括以下步骤:
获取去噪后的心率时间曲线;
对于心率时间曲线中的所有心率数据点,使用聚类算法将所有心率数据点分类获取若干心率曲线段,根据相邻心率曲线段之间的心率值差异获取心率曲线段的心率变化平稳度;
根据每个心率曲线段的心率变化平稳度、心率曲线段的数据长度和心率曲线段的心率值均值获取聚类距离,根据聚类距离对所有心率曲线段进行聚类,获取心率曲线段对心率聚类簇的隶属度,根据隶属度将心率曲线段划分在不同的心率聚类簇中;根据任意两个心率曲线段的相邻心率曲线段所处的心率聚类簇获取心率曲线段之间的左差异度和右差异度;根据左差异度和右差异度获取心率曲线段对心率聚类簇的适应度;
将每个心率聚类簇中的心率曲线段进行聚类获取若干第一类簇,根据第一类簇中所有心率曲线段的中心时刻以及心率聚类簇中第一类簇的数量获取心率聚类簇的时间相关混乱度;根据心率聚类簇的时间相关混乱度和心率曲线段的时间差异获取心率曲线段对心率聚类簇的时间偏移度;根据心率曲线段的时间偏移度、心率曲线段对心率聚类簇的适应度以及心率曲线段对心率聚类簇的隶属度获取修正隶属度;根据归一化的修正隶属度将不同心率曲线段分到不同的心率聚类簇中;
采集预设长度的实时心率曲线,计算实时心率曲线和每一种分类下所有心率曲线段的DTW距离倒数的均值,基于此均值判断用户心率是否异常。
优选的,所述使用聚类算法将所有心率数据点分类获取若干心率曲线段,根据相邻心率曲线段之间的心率值差异获取心率曲线段的心率变化平稳度的方法为:
使用DBSCAN聚类算法,预设聚类参数,其中聚类距离为心率数据点之间的欧氏距离;
计算心率数据点与其相邻心率数据点的心率值的差值绝对值,将所述差值绝对值记为心率数据点的心率变化值,若心率数据点有两个相邻数据点,则计算所述差值绝对值的均值,将所述均值记为心率数据点的心率变化值;
计算心率数据点与其相邻心率数据点的心率变化值的差值绝对值,记为心率数据点的心率变化率;若存在两个相邻心率数据点,计算心率变化值的差值绝对值的均值,均值记为心率数据点的心率变化率;曲线段的心率变化平稳度的表达式如下:
式中,表示第j个心率数据点的心率变化值,/>表示第j个心率数据点的心率变化率, />表示心率曲线段的长度,/>表示以自然常数为底的指数函数,表示心率曲线段的心率变化平稳度。
优选的,所述根据每个心率曲线段的心率变化平稳度、心率曲线段的数据长度和心率曲线段的心率值均值获取聚类距离的方法为:
将每个心率曲线段的第一个心率数据点的横坐标和最后一个心率数据点的横坐标的差值绝对值记为心率曲线段的数据长度;
对于任意两个心率曲线段,计算两个心率曲线段的心率变化平稳度的差值的平方,记为第一差异平方,将两个心率曲线段的数据长度的差值的平方记为第二差异平方,将两个心率曲线段的心率值均值的差值的平方记为第三差异平方,将第一差异平方、第二差异平方以及第三差异平方累加后开根号作为两个心率曲线段的聚类距离。
优选的,所述根据任意两个心率曲线段的相邻心率曲线段所处的心率聚类簇获取心率曲线段之间的左差异度和右差异度的方法为:
将任意一个心率曲线段记为目标心率曲线段,若目标心率曲线段的左侧相邻心率曲线段与任意一个心率曲线段的左侧相邻心率曲线段在同一个聚类簇中,目标心率曲线段与任意一个心率曲线段的左差异度为0;
若目标心率曲线段的左侧相邻心率曲线段与任意一个心率曲线段的左侧相邻心率曲线段不在同一个聚类簇中,则目标心率曲线段与任意一个心率曲线段的左差异度为目标心率曲线段与任意一个心率曲线段的聚类距离;
使用获取目标心率曲线段与任意一个心率曲线段的左差异度的方法,获取目标心率曲线段与任意一个心率曲线段的右差异度。
优选的,所述根据左差异度和右差异度获取心率曲线段对心率聚类簇的适应度的方法为:
获取一个心率聚类簇中所有的心率曲线段,将目标心率曲线段任意一个心率曲线段的左差异度和右差异度相加记为差异度,将目标心率曲线段和心率聚类簇中所有心率曲线段的差异度相加并进行线性归一化,令1与归一化后的值的差值记为目标心率曲线段对心率聚类簇的适应度。
优选的,所述将每个心率聚类簇中的心率曲线段进行聚类获取若干第一类簇的方法为:
对每个心率聚类簇使用DBSCAN算法进行聚类,其中将每个心率曲线段看做一个元素点,元素点的两维分别是心率曲线段长度和心率曲线段的中心时刻构成,聚类距离为元素点的欧氏距离,聚类后将每个心率聚类簇中的所有心率曲线段分为若干第一类簇。
优选的,所述根据第一类簇中所有心率曲线段的中心时刻以及心率聚类簇中第一类簇的数量获取心率聚类簇的时间相关混乱度的方法为:
对于每个第一类簇,将所有心率曲线段的中心时刻的方差记为集中方差,计算第一类簇的集中方差与心率聚类簇中每个第一类簇的集中方差的差值绝对值,将差值绝对值的均值记为集中均值方差;
将每个第一类簇的集中方差和集中均值方差的乘积记为第一类簇的第一时间值,将每个心率聚类簇中所有第一类簇的第一时间值相加后与心率聚类簇中第一类簇的数量的乘积记为心率聚类簇的时间相关混乱度。
优选的,所述根据心率聚类簇的时间相关混乱度和心率曲线段的时间差异获取心率曲线段对心率聚类簇的时间偏移度的方法为:
将目标心率曲线段的时间均值和任意一个第一类簇中的心率曲线段的时间均值的差值绝对值记为第一时间差异,将目标心率曲线段和第一类簇中所有心率曲线段的第一时间差异的最小值记为最小时间差异;时间偏移度的表达式为:
式中,表示第k个心率聚类簇的时间相关混乱程度,/>表示第s个心率曲线段与第f个第一类簇的最小时间差异,/>表示第k个心率聚类簇中第一类簇的数量,/>表示线性归一化函数,/>表示第s个心率曲线段对第k个心率聚类簇的时间偏移度。
优选的,所述根据心率曲线段的时间偏移度、心率曲线段对心率聚类簇的适应度以及心率曲线段对心率聚类簇的隶属度获取修正隶属度的方法为:
式中,表示第s个心率曲线段对第k个心率聚类簇的适应度,/>表示第s个心率曲线段对第k个心率聚类簇的隶属度,/>表示第s个心率曲线段对第k个心率聚类簇的时间偏移度,/>表示第s个心率曲线段对第k个心率聚类簇的修正隶属度。
第二方面,本发明实施例还提供了基于智能戒指的心率异常捕获系统,包括存储器、处理器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项所述基于智能戒指的心率异常捕获方法的步骤。
本发明具有如下有益效果:本申请通过对用户心率特征进行实时监测分析,基于历史数据构建心率-时间数据曲线,并对其进行特征分析,对所得数据曲线进行初步划分,进而使用FCM聚类算法对数据曲线进行进一步划分,并且基于数据曲线段对聚类簇的适应度以及数据曲线段对聚类簇的时间偏移程度对聚类结果进行修正,从而获取最终的聚类结果,大大提升了对用户各个状态下心率变化分类结果的可靠性,提升了据此分析实时所得数据曲线异常结果的真实可靠性,同时将实时所得数据绘制数据曲线,使用上述方法对其进行分类,并根据计算与聚类簇内各个数据段的相似度完成实时心率异常捕获。大大增加了异常检测的准确性,提高了实时监测的有效性,大大减少了用户不同状态心率变化的影响,提高了用户心率异常捕获效率。
具体实施方式
为了更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的基于智能戒指的心率异常捕获方法及系统,其具体实施方式、结构、特征及其功效,详细说明如下。在下述说明中,不同的“一个实施例”或“另一个实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构或特点可由任何合适形式组合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
基于智能戒指的心率异常捕获方法及系统实施例:
下面结合附图具体的说明本发明所提供的基于智能戒指的心率异常捕获方法及系统的具体方案。
请参阅图1,其示出了本发明一个实施例提供的基于智能戒指的心率异常捕获方法流程图,该方法包括以下步骤:
步骤S001,获取去噪后的心率时间曲线。
通过智能戒指上的心率传感器,可以采集用户的心率信号,通过智能戒指收集用户历史中的所有心率信号,心率信号作为一条心率时间曲线,其中心率时间曲线的横坐标为时间,单位为分钟,心率时间曲线的纵坐标为心跳次数,即心率时间曲线上每个心率数据点表示的是每分钟的心跳次数,对于心率时间曲线进行预处理,使用滤波进行去噪,避免噪声点的影响,其中去噪的方法可以使用高斯滤波、平滑滤波等现有方式。
至此,获取了去噪后的心率时间曲线。
步骤S002,将心率时间曲线中的所有心率数据点分类获取若干心率曲线段,并计算心率曲线段的心率变化平稳度。
由于人的心率变化是与人的身体活动水平、情绪状态、环境温度等密切相关的,也就是说,人的心率变化是存在短时突变的可能的,但是,即使是短时心率的突变,其突变心率也会存在一定的突变异常,故本发明需要对用户心率信息进行持续性的监测,分析用户在不同时间不同状态下的心率状况,从而将实时获取的心率信息与之匹配,进而分析实时心率的异常状况,完成心率异常的捕获,并根据捕获结果判断是否进行警报。
对于去噪后的心率时间曲线使用DBSCAN聚类算法,其中聚类参数r=5,minpts=5。其中聚类距离为心率数据点之间的欧氏距离,欧氏距离通过心率值和时间计算,通过聚类将去噪后的心率时间曲线分为若干心率曲线段,此时聚类通过心率值和时间分类,对于分类后的若干心率曲线段根据心率状态进行再次分类。
对于每个心率曲线段进行特征分析,获取每个心率曲线段中每个心率数据点与其相邻心率数据点的心率值的差值的绝对值,对于心率曲线段中的心率数据点,若心率数据点有两个相邻心率数据点,则将心率值差值的绝对值的均值记为心率变化值,若心率数据点只有一个相邻心率数据点,则心率数据点与相邻心率数据点的差值绝对值记为心率变化值,由此获取每个心率数据点的心率变化值;对于每个心率数据点的心率变化值,将每个心率数据点的心率变化值与其相邻心率数据点的心率变化值的差值绝对值的均值记为每个心率数据点的心率变化率,根据每个心率数据点的心率变化值和心率变化率获取心率曲线段的心率变化平稳度,公式如下:
式中,表示第j个心率数据点的心率变化值,/>表示第j个心率数据点的心率变化率, />表示心率曲线段的长度,/>表示以自然常数为底的指数函数,表示心率曲线段的心率变化平稳度。
其中相邻心率数据点之间的心率差异越大,说明心率上下波动幅度较大,心率变化不平稳,若相邻心率数据点之间的心率变化值差异越大,说明心率不规律,波动幅度有较大起伏,因此心率变化稳,因此心率变化值和心率变化率越小,心率曲线段的心率变化平稳度越大。
至此,获取了每个心率曲线段的心率变化平稳度。
步骤S003,根据心率曲线段的特征获取聚类距离,由此聚类获取心率曲线段对不同心率聚类簇的隶属度,完成聚类;并根据心率曲线段之间的差异获取心率曲线段对心率聚类簇的适应度。
根据所得到的每个心率曲线段的心率变化平稳度对心率曲线段进行聚类,从而完成基于心率曲线对用户不同状态的划分,对心率曲线段聚类的方法为FCM聚类算法,其中FCM聚类算法的K值为DBSCAN聚类算法获取的心率聚类簇的数量,将每个心率曲线段的第一个心率数据点的横坐标和最后一个心率数据点的横坐标的差值绝对值记为心率曲线段的数据长度,计算每个心率曲线段的心率值均值,基于上述心率曲线段的数据长度,心率值均值以及心率曲线段的心率变化平稳度获取FCM聚类的聚类距离,公式如下:
式中,表示第a个心率曲线段的心率变化平稳度,/>表示第b个心率曲线段的心率变化平稳度,/>表示第a个心率曲线段的数据长度,/>表示第b个心率曲线段的数据长度,/>表示第a个心率曲线段的心率值均值,/>表示第b个心率曲线段的心率值均值,/> 表示第a个心率曲线段和第b个心率曲线段在FCM聚类的聚类距离。
通过上述聚类完成对去噪后的心率时间曲线的心率曲线段的分类,但是由于FCM聚类算法中可能存在随机的初始聚类中心,而导致聚类结果不好,故本实施例对所得聚类结果进行修正,进而使得聚类效果更好。
通过FCM聚类算法会获取每个心率曲线段对每个心率聚类簇的隶属度,之后根据心率曲线段对每个心率聚类簇的隶属度最大,则将该心率曲线段分到心率聚类簇中。
由于人体情绪等状态是连续变化的,故当从一种情绪转化到另一种情绪时,其对应心率也是连续变化的,故可以通过分析当前数据心率曲线段与其相邻数据曲线的段的关系,从而分析当前数据曲线心率状态。若两个心率曲线段的左侧相邻心率曲线段在同一个心率聚类簇,则说明两个心率曲线段的左差异度为0,若两个心率曲线段的左侧相邻心率曲线段不在同一个心率聚类簇中,则计算两个心率聚类簇的聚类中心的聚类距离作为左差异度,将每个心率聚类簇进行标号,左差异度的表达式为:
式中,表示第u个心率曲线段的左侧相邻心率曲线段所在的心率聚类簇的标号,/>表示第s个心率曲线段的左侧相邻心率曲线段所在的心率聚类簇的标号,/>表示第u个心率曲线段的左侧相邻心率曲线段所在的心率聚类簇的聚类中心与第s个心率曲线段的左侧相邻心率曲线段所在的心率聚类簇的聚类中心的聚类距离,/>表示第s个心率曲线段与第u个心率曲线段的左差异度;使用获取左差异度的方式获取第s个心率曲线段与第u个心率曲线段的右差异度,记为/>。
将任意一个心率曲线段记为目标心率曲线段,根据目标心率曲线段与任意一个心率聚类簇中所有心率曲线段的左差异度和右差异度获取目标心率曲线段对心率聚类簇的适应度,公式如下:
式中,表示第s个心率曲线段与第u个心率曲线段的左差异度,/>表示第s个心率曲线段与第u个心率曲线段的右差异度,/>表示第k个心率聚类簇中心率曲线段的数量,/>表示线性归一化函数,/>表示第s个心率曲线段对第k个心率聚类簇的适应度,其中第s个心率曲线段为目标心率曲线段,第u个心率曲线段在第k个心率聚类簇中。当第s个心率曲线段与第k个心率聚类簇内每一个心率曲线段与其相邻数据段所在心率聚类簇的差异越小,则说明第s个心率曲线段对第k个心率聚类簇的适应度越高。
至此,获取了心率曲线段对心率聚类簇的适应度。
步骤S004,对每个心率聚类簇聚类获取第一类簇,根据心率曲线段的时间和第一类簇数量获取心率聚类簇的时间相关混乱度,病基于此获取时间偏移度,根据时间偏移度,曲线段对心率聚类簇的适应度和隶属度获取修正隶属度完成分类。
由于人体心率状态是可能受到环境影响的,其中随着时间的变化,外界环境也会发生变化,故本实施例通过对上述所得各个心率曲线段进行分析,获取各个聚类结果中的心率曲线段的时间相关混乱程度,进而获取心率聚类簇中心率曲线段对该心率聚类簇的时间偏移度。
对于心率聚类簇内的心率曲线段的时间进行聚类,这是因为即使处于同一状态,比如休息,用户可能习惯在下午以及晚上休息,那么该心率曲线段对应时间可能集中在下午或者晚上,将时间表述相同的心率曲线段进行聚类,所使用的聚类算法为DBSCAN算法,将每个心率曲线段看做一个元素点,元素点由心率曲线段长度和心率曲线段的中心时刻两维构成,聚类距离为两个元素点的欧氏距离,对每个心率聚类簇中的所有心率曲线段进行聚类,获取若干簇类,将使用此方式获取的类簇记为第一类簇。其中每个心率聚类簇包含多个类簇,每个类簇包含若干心率曲线段。
对于每个第一类簇,计算其中所有心率曲线段的中心时刻的方差记为集中方差;对于任意一个第一类簇,计算其的集中方差与心率聚类簇中每个第一类簇的集中方差的差值绝对值,将差值绝对值的均值记为集中均值方差;
根据心率聚类簇内第一类簇的数量以及第一类簇的集中方差和集中均值方差获取心率聚类簇的时间相关混乱度,公式如下:
式中,表示第k个心率聚类簇中第一类簇的数量,/>表示第f个第一类簇的集中方差,/>表示第f个第一类簇的集中均值方差,/>表示第k个心率聚类簇的时间相关混乱度。
当心率聚类簇中的第一类簇数量越多,说明心率聚类簇中的时间越分散,时间越混乱,心率聚类簇的时间相关混乱度越高;当心率聚类簇基于时间分析后虎丘的方差及其方差差异越大,越说明心率聚类簇的时间相关混乱度越大。
将目标心率曲线段的时间均值和任意一个第一类簇中的心率曲线段的时间均值的差值绝对值记为第一时间差异,将目标心率曲线段和第一类簇中所有心率曲线段的第一时间差异的最小值记为最小时间差异。
根据心率聚类簇的时间相关混乱度和目标心率曲线段与第一类簇的最小时间差异获取目标心率曲线段对心率聚类簇的时间偏移度,公式如下:
式中,表示第k个心率聚类簇的时间相关混乱程度,/>表示第s个心率曲线段与第f个第一类簇的最小时间差异,/>表示第k个心率聚类簇中第一类簇的数量,/>表示线性归一化函数,/>表示第s个心率曲线段对第k个心率聚类簇的时间偏移度。
根据心率曲线段对心率聚类簇的时间偏移度、心率曲线段对心率聚类簇的适应度对心率曲线段对心率聚类簇的隶属度进行修正,具体公式如下:
式中,表示第s个心率曲线段对第k个心率聚类簇的适应度,/>表示第s个心率曲线段对第k个心率聚类簇的隶属度,/>表示第s个心率曲线段对第k个心率聚类簇的时间偏移度,/>表示第s个心率曲线段对第k个心率聚类簇的修正隶属度,/>表示心率聚类簇的数量,/>表示第s个心率曲线段对第k个心率聚类簇的归一化修正隶属度。
通过最后的归一化修正隶属度将不同的心率曲线段分到不同的心率聚类簇中,完成对心率时间曲线的分类。
至此,获取了归一化修正隶属度,完成心率时间曲线的最终分类。
步骤S005,计算实时曲线与每一种的心率曲线段的相似性,根据相似性完成心率异常捕获。
将实时所得监测心率数据绘制成数据心率曲线段,在本实施例中当采集的实时心率曲线段长尾为20时进行相似度检测,使用上述方法对所得心率曲线段进行聚类分析,从而分析其属于哪个心率聚类簇,通过计算实时数据曲线与对应心率聚类簇内数据曲线的相似度,其中相似度使用DTW距离的倒数表示,计算实时数据曲线与心率聚类簇内每一数据曲线的相似度,并将相似度的归一化结果与预先设置好的相似度阈值进行比较,本发明设置相似度阈值η=0.8,当所求相似度的归一化结果小于阈值时,便可认为当前时刻用户心率出现异常,将此时对应数据进行标记,至此完成心率异常的捕获,心率异常捕获的具体实施流程如图2所示。
本实施例提供基于智能戒指的心率异常捕获系统,包括存储器、处理器以及存储在所述存储器中并在所述处理器上运行的计算机程序,处理器执行所述计算机程序时实现上述步骤S001至步骤S005的方法。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。