基于Lasso-LGB的老人跌倒检测算法研究
2021-08-12段美玲潘巨龙
段美玲,潘巨龙
(中国计量大学 信息工程学院,浙江 杭州 310018)
据世界卫生组织报道,近几十年来,全球60岁以上的人口增长迅速,预计到2050年将达到21亿[1-2],占世界人口的22%[3]。老龄化成为全球范围内的主要挑战,跌倒是威胁老年人健康的最危险意外事故之一[4],跌倒会导致老年人非致命损伤和致命性伤害。老年人跌倒除了会导致扭伤、擦伤等轻伤,还可能导致严重的并发症,例如骨折、脑出血等,进而增加家庭的经济负担,影响老年人的生存质量。为了减轻跌倒对老年人造成的伤害与带来的严重后果,检测老年人跌倒并及时救治跌倒老人是非常必要的。因此,老人跌倒算法研究具有显著的社会意义和现实意义。
跌倒检测目前可大致分为三个方向:基于环境传感器的方法、基于视频图像的方法和基于惯性传感器(加速度、陀螺仪)数据的方法。基于环境传感器的方法主要在室内多个位置安装设备记录老年人的活动,再通过融合诸如声音传感器、压力传感器等仪器得到的信息,对跌倒行为进行检测。但是该方法易受环境影响,只能在室内等固定区域检测。基于视频图像的方法主要采用计算机视觉检测,但因泄露用户的个人隐私而不适用于日常生活场景。基于惯性传感器数据的方法因其不侵犯隐私、检测范围广且能够长期检测等优点而受到学者和工业界的广泛关注。
随着微电子技术的发展,惯性传感器因其小巧、成本低廉而被广泛应用于可穿戴设备中,用来采集真实环境下人体运动数据。通过分析传感器数据的变化,判断用户是否跌倒,跌倒检测算法可大致分为阈值法、机器学习法和深度学习法。阈值法是将预处理或者简单提取特征之后的数据值与设定的阈值相比较,进而判断跌倒,如Andò等[5]使用阈值法处理加速度计和陀螺仪提取的特征,来判断人体是否跌倒。机器学习法是将提取的特征作为机器学习算法的输入,进而判断是否跌倒,常见的机器学习算法包括:支持向量机[6]、k近邻[7]、随机森林[8]等。如Hua等[8]从加速度提取的信号特征和步态,通过随机森林来预测老年女性的跌倒风险;Hnoohom等[9]从加速度计和陀螺仪提取特征,采用集成学习来检测跌倒行为。深度学习法是从数据的输入到判断的输出,是端到端的处理。常见的深度学习算法包括:卷积神经网络(Convolution Neural Networks,CNN)[10]、循环神经网络(Recurrent Neural Networks,RNN)[11]、长短期记忆神经网络(Long short-term Memory Neural Networks,LSTM)[12-13]等。如何坚等[10]将传感器数据经过预处理转换为矩阵,使用卷积神经网络自动提取特征,并用softmax分类器区分跌倒和非跌倒行为。
阈值法和机器学习法都基于提取的特征来执行分类任务,如何选择特征向量,各个特征重要性不一样,选择出重要的特征子集,有助于提高分类精度,提高模型的泛化性,同时也能保证模型分类的效率。
本文对跌倒数据集进行预处理操作(去除噪音和轴合成处理),提取时域特征,使用融合Lasso回归与轻量级梯度提升机LightGBM(简称Lasso-LGB)算法得到最后的分类结果。用跌倒数据集SisFall[14]和MobiAct[15]验证算法效果,结果表明本文算法有较高的分类精度和较好的实时性。
1 Lasso-LGB算法
1.1 Lasso回归算法
Lasso方法是普通线性模型中增加L1惩罚项,有助于降低过拟合风险。添加L1正则化的损失函数如式(1):
(1)
w=(XTX+λwTw)-1XTy。
(2)
式(2)中,XT是X的转置矩阵,X-1是X的逆矩阵。
Lasso回归可以使得一些特征系数变小,选择出主要的特征,从而增加模型的泛化能力。另外,在跌倒检测中,特征向量的提取也是耗时的,使用Lasso回归选择主要的跌倒数据特征,该算法适合在实时检测系统中使用。
1.2 LightGBM算法
AdaBoost是基于Boosting策略的集成算法,基分类器为决策树。AdaBoost最终的结果是采取多数表决的方法,其中基分类器权重的设置尤为重要。梯度提升树(Gradient Boosting Decision Tree,GBDT)与AdaBoost类似但有所不同,类似之处是将表现一般的数个模型组合在一起集成一个表现较好的模型,不同之处,AdaBoost是通过提升错误分类数据点的权重来提升模型性能,而GBDT是通过计算负梯度来改进模型。极限梯度提升树(Extreme Gradient Boosting,XGBoost)是基于GBDT的改进算法,主要改进是将代价函数进行二阶泰勒展开,使用了一阶和二阶导数。GBDT和XGBoost存在空间消耗大及计算开销大的问题。
LightGBM是基于GBDT上的改进算法,是采用boosting策略的集成学习算法[16]。该算法利用Leaf-wise寻找分裂增益最大的叶子进行分裂,如此循环,解决了Leaf-wise可能会长出较深的决策树而造成过拟合现象。因此,LightGBM采用带深度限制的Leaf-wise的叶子生长策略。然后利用直方图算法来提升运行效率。最后,LightGBM直接支持类别特征,减少了时间和空间的浪费,提高运行效率。
特征维度较高和样本较多的情况下,LightGBM具有更快的训练效率、更好的准确率、可处理大规模数据等优势。因此LightGBM可以在训练速度和准确率之间达到平衡,适合老人跌倒终端的实时检测需求。
1.3 跌倒检测算法
跌倒行为经常发生在老人的日常生活中,跌倒对老人的伤害是跌倒发生后不能得到及时救治所造成的,所以,准确地判别跌倒和及时的救助显得尤为重要。跌倒检测算法是指通过可穿戴设备采集数据进行智能计算后判断人体是否跌倒的过程。
将机器学习运用于跌倒检测中,即把跌倒检测转化为分类问题,机器学习算法通过提取预处理后数据(采集的大量历史数据)的特征进行跌倒检测。为了提高基于机器学习的跌倒检测算法,如何选取跌倒数据特征和选择合适的分类器变得尤为重要。因此本文采用Lasso-LGB算法来执行跌倒检测分类任务,对于提取的时域特征,采用Lasso回归选取跌倒数据主要特征,之后采用LightGBM执行跌倒检测分类任务。该算法一方面可以减少跌倒数据的特征数量,防止过拟合,减少特征提取开销;另一方面又可以提高跌倒模型检测的实时性和准确性。本文跌倒检测模型示意图如图1。
图1 基于Lasso-LGB的跌倒检测示意图Figure 1 Flowchart of fall detection based on Lasso-LGB
图1展示了基于Lasso-LGB的跌倒检测算法示意图,具体步骤如下。
1)输入:原始跌倒数据集传感器的数值。
2)数据预处理:对原始数据进行滤波操作移除传感器信号噪声;使用单轴数据可能不能很好地判断跌倒行为,对加速度等惯性传感器三轴数据进行轴合成处理。
3)特征提取:对传感器单轴和轴合成数据进行特征提取,提取其时域特征。
4)Lasso-LGB:使用Lasso回归选择特征向量中的主要特征,使用LightGBM构造跌倒分类器。
5)输出:根据分类器区分跌倒行为与非跌倒行为,得到跌倒模型的评价指标。
2 实验及结果分析
2.1 数据集
为了验证Lasso-LGB的有效性,本文选择了SisFall[14]和MobiAct[15]作为跌倒检测研究的数据集来进行实验。此次实验在64位Windows 10操作系统完成,代码运行环境为Python 3.7,计算机处理器为i5-5200U@2.2GHz,内存为12 GB。
SisFall数据集的采集设备由两个加速度计和一个陀螺仪组成,设备的采样频率为200 Hz,38个志愿者分为两组:23名青年人和一名60岁的柔道运动员在腰上佩戴设备采集15种跌倒活动和19种日常生活活动;其余14名老年人只采集19种日常生活活动。该数据集共有4 500个样本,包括1 798个跌倒样本和2 702个日常生活样本。
MobiAct数据集使用手机中的加速度计、陀螺仪和方向计来采集人体行为数据,采样频率为200 Hz,57个志愿者将手机放置在裤子口袋中采集4种跌倒行为和9种非跌倒行为。该数据集共有3 199个样本,包括767个跌倒样本和2 432个非跌倒样本。
2.2 数据预处理
在数据采集的过程中,可能会产生信号噪声,这些噪声对构建跌倒检测模型有很大影响。通过滤波算法能够从获得的信号数据中移除噪声。本文采用截止频率为5 Hz的四阶无限脉冲响应Butterworth低通滤波器,来处理信号噪声。
跌倒行为发生时,我们不能判断向哪个方向跌倒,当使用单一轴的加速度、角速度来判断跌倒行为,效果不是很好。因此,我们引入了另外3个特征如式(3)~(5)。
1)信号幅度矢量定义为
(3)
2)信号y轴和z轴的幅度矢量定义为
(4)
3)信号x轴和z轴的幅度矢量定义为
(5)
式(3)~(5)中,ax,ay,az为加速度等惯性传感器信号的三轴数据。利用滑动窗口机制得到传感器4 s的窗口数据,窗口数据按照表1提取特征,得到特征向量。之后对提取的特征向量进行归一化处理,计算式如式(6):
表1 本文提取的时域统计特征
(6)
式(6)中,μ是所有样本数据均值,σ是所有样本数据的标准差。
由于数据集中跌倒样本和非跌倒样本不均衡,特别是MobiAct数据集,为了对跌倒检测更加准确,本文采用合成少数类过采样技术(Synthetic Minority Over-sampling Technique,SMOTE)对跌倒的样本数据进行上采样操作,对非跌倒数据进行下采样操作,使得跌倒样本与非跌倒样本的比例为1∶1。采样前、后的样本分布详见表2。
表2 采样前、后的样本数量分布
2.3 评估指标
跌倒检测属于二分类问题,二分类模型判断结果存在以下情况[17]:TP是模型预测为跌倒,真实类别也是跌倒的样本数;TN是模型预测为日常生活行为,真实类别也是日常生活行为的样本数;FP是模型预测为跌倒,但真实类别是日常生活行为的样本数,属于误判;FN是模型预测为日常生活行为,但真实类别却是跌倒的样本数,属于漏判。根据以上四种情况可以得到敏感度(sensitivity,SE)、特异度(specificity,SP)和准确率(accuracy,A)3种模型评估指标:
(7)
(8)
(9)
其中SE反映模型识别跌倒行为的能力,SP反映模型识别日常生活行为的能力,A反映模型总体的精确度。较高的敏感度反映了较低的漏报率,较高的特异度反映了较低的误报率。此外,算法的时延也是老人跌倒检测的一个重要评价指标。
2.4 模型训练及结果
SisFall数据集提供了两个加速度计(acc1,acc2)和一个陀螺仪(gyro)的数据,MobiAct数据集提供了加速度计(acc)、陀螺仪(gyro)和方向计(ori)。图2和图3分别展示了在两个数据集上传感器组合的分类效果,其中纵轴是分类指标值/%,横轴是三个评估指标。
图2 SisFall数据集上传感器组合性能对比Figure 2 Comparison of sensor combination performance on SisFall dataset
图3 MobiAct数据集上传感器组合性能对比Figure 3 Comparison of sensor combination performance on MobiAct dataset
从图2和图3可以看出,在SisFall数据集上,加速度计和陀螺仪的组合性能最优,因此本文选用SisFall数据集上加速度计和陀螺仪的数据进行跌倒检测。在MobiAct数据集上,三个传感器组合的性能最优,故本文选用MobiAct数据集上所有数据进行跌倒算法的训练与检测。
为了准确评估算法的性能,我们将预处理后的SisFall和MobiAct数据集按照9∶1划分了训练集和测试集,又从训练集中拿出2/9作为验证集。每次实验都会随机打乱数据集顺序,随机得到训练集、验证集和测试集,使用训练集来训练模型,使用验证集和测试集来评估模型性能,以10次实验结果的平均值作为最终的结果。
为了更好的评估Lasso-LGB的性能,本文与如下算法进行了对比实验,包括AdaBoost、GBDT、XGBoost及LightGBM算法。表3展示了2个数据集在5种算法下的实验结果。
从表3可以看到,本文提出的Lasso-LGB算法在SisFall和MobiAct两个数据集上均有优异表现。比较表3的第4、5两行可知,经过Lasso操作的LightGBM在两个数据集上的敏感度、特异度和准确率有了明显提升,检测时间明显减少,侧面也说明了Lasso操作能够很好地选择跌倒数据的主要特征。在SisFall数据集上,除了AdaBoost算法,本文算法在四个指标上都优于其他3个算法。与AdaBoost算法相比,Lasso-LGB算法在敏感度、准确率和检测时间的表现较为优异,敏感度和准确率分别提升了3.23%、1.11%,检测时间减少了1.68 s;在特异度这个指标上,AdaBoost算法比本文算法高出0.34%,相差不大。在MobiAct数据集上,本文算法在四个指标上都优于其他四个对比算法。
表3 Lasso-LGB与对比算法在验证集上的评估指标
另外,本文与其他文献进行对比实验,图4展示了在SisFall数据集上,支持向量机[18]、梯度提升树[19]、随机森林[20]和本文算法的性能(敏感度、特异度和准确率)对比。图5展示了在MobiAct数据集上,CNN[21]、CNN-LSTM[22]和本文算法的性能(敏感度、特异度和准确率)对比。
图4 Lasso-LGB与其他文献在SisFall数据集上的性能对比Figure 4 Performance comparison between Lasso-LGB and other articles on the SisFall dataset
图5 Lasso-LGB与其他文献在MobiAct数据集上的性能对比Figure 5 Performance comparison between Lasso-LGB and other articles on the MobiAct dataset
从图4可以得出,与支持向量机和梯度提升树相比,Lasso-LGB算法在敏感度、特异度和准确率都有所提高。Lasso-LGB比支持向量机在三个指标上分别提高了1.14%、3.06%和1.74%,比梯度提升树在敏感度、特异度和准确率上分别提高了1.38%、0.05%和0.64%。与随机森林相比,随机森林的特异度优于Lasso-LGB算法,但是Lasso-LGB算法的敏感度比随机森林提高了4.84%。
图5是在MobiAct数据集上,Lasso-LGB算法与CNN和CNN-LSTM在敏感度、特异度和准确率指标的对比。在敏感度指标上,Lasso-LGB算法比CNN和CNN-LSTM分别提高了5.48%和2%,Lasso-LGB算法比CNN在特异度和准确率上分别提高了1.77%和3.6%,Lasso-LGB算法比CNN-LSTM在特异度和准确率上分别提高了2.29%和2.4%。从图4和图5可以看出,本文的Lasso-LGB算法性能比其他文献的算法优异。
3 结 语
本文将Lasso回归算法与LightGBM融合模型应用到跌倒检测领域,首先对原始跌倒数据集数据进行数据预处理操作,提取数据的时域特征,通过Lasso回归选择特征集中的主要特征,将主要特征导入到LightGBM模型中去预测最终的分类结果(跌倒或非跌倒)。使用公开数据集SisFall和MobiAct来验证Lasso-LGB算法的性能,并与机器学习中其他模型进行对比实验,结果表明,本文提出的Lasso-LGB算法在分类精度指标上优于其他模型,在实时性上也有优异的表现。为了更好地评估本文算法性能,本文还与其他文献的跌倒检测算法进行横向比较,通过比较,Lasso-LGB算法可以准确地检测跌倒行为,同时也能满足跌倒终端的准实时要求。下一步我们将重点放在将算法移植到嵌入式设备中,探究Lasso-LGB算法能否很好地在嵌入式设备上运行;再者,本文算法运行环境是离线训练,今后应该进行在线训练和个性化高精度的跌倒检测模型研究。