引言
本文将基于加州大学欧文分校机器学习开源库中的「日常运动与行为数据集」开展研究。本研究的目标是:基于佩戴在人体四肢与躯干设备采集的传感器数据,训练分类器模型,以此预判用户当前正在进行的行为。实现该目标的核心手段是对传感器原始数据进行精巧的特征工程处理,并训练各类机器学习分类模型。
本文将参考两篇机器学习领域权威论文的研究成果:
- 《人体行为分类》
- 《日常与运动行为识别》
研究动机
物联网(IoT)是科技行业快速发展的赛道,其核心思路是为汽车、家电乃至人体佩戴各类电子监测设备。智能穿戴设备正受到普通用户、企业与智慧城市项目的广泛追捧。物联网的核心价值包括电网智能能源调度、智能交通管控、实时运动健康反馈等诸多场景,大量初创企业正依托物联网的发展前景开展商业化布局。
智能城市的数字化愿景正在逐步落地。 Fitbit 已经成为运动穿戴设备的代名词,其用户群体覆盖全人群:从全程监测心率的马拉松跑者,到只想提升每日步数的普通大众。
Spire公司的产品则通过穿戴设备采集人体生物特征数据,除心率、运动时长外,还可监测用户呼吸频率,以此辅助用户提升正念冥想水平。冥想在西方社会已大范围普及,神经科学领域也持续证实冥想对身心的多重健康益处。未来一定会有更多初创企业跟进,面向有身心预防养护需求的用户推出同类智能产品。
Comfy 公司依托物联网与机器学习技术,实现办公环境舒适度智能调控。其配套硬件与数据分析系统可自动调节办公室温度,有效降低员工投诉、提升整体工作效率。用户可在办公区域任意位置一键调节冷暖,实现即时温控。
智能温控、空间舒适调节等物联网应用场景正在快速普及。
穿戴设备与各类监测硬件的爆发式普及,要求数据科学家具备解析设备产生的时序信号数据的能力。掌握相关技术后,数据科学家既能为市场、产品团队提供可落地的数据洞察,也能开发数据驱动型产品,提升用户粘性,简化大众日常生活。
数据集介绍
实验共有 8 名受试者,每名受试者均完成全部 19 类行为动作。实验设备共 5 套(躯干、右臂、左臂、右腿、左腿),每套设备搭载 9 个传感器:三轴加速度计、三轴陀螺仪、三轴磁力计。 数据采集规则:以 5 秒为一段采样窗口,采样频率 25 赫兹;每名受试者完成每一类行为时,连续采集 5 分钟数据。
19 类行为完整清单
A1 静坐 A2 站立 A3 平躺仰卧 A4 右侧侧卧 A5 上楼梯 A6 下楼梯 A7 电梯内静止站立 A8 电梯内来回走动 A9 停车场平地行走 A10 跑步机 4km/h 平地行走 A11 跑步机 4km/h、15 度斜坡行走 A12 跑步机 8km/h 跑步 A13 踏步机运动 A14 椭圆机运动 A15 卧式动感单车骑行 A16 立式动感单车骑行 A17 划船机训练 A18 原地跳跃 A19 打篮球
数据结构说明
19 类行为(a)、8 名受试者(p)、每名受试者每类行为 60 段采样数据(s); 5 个采集单元:躯干 T、右臂 RA、左臂 LA、右腿 RL、左腿 LL; 每个单元内置 9 组传感器:三轴加速度、三轴陀螺仪、三轴磁力计。
数据探查|探索性数据分析
我们先加载单段采样数据,以受试者停车场行走的样本为例,直观观察数据形态。
左腿三轴加速度 - 时间曲线
左腿 Y 轴加速度、左腿 Z 轴加速度随时间变化 横轴:时间(秒),纵轴:加速度数值 从曲线可见,受试者行走节奏均匀,波形峰值间隔基本恒定;若行走速度忽快忽慢,波形频率会出现明显波动(后文会详细讲解频率相关处理)。 设备三轴加速度信号均呈现周期性波动,信号均值不随时间变化。
补充设备坐标轴定义:垂直向上为 X 轴,Z 轴平行于地面、垂直设备向外;坐标轴与设备安装位置的详细定义可参考论文《日常与运动行为识别》。
躯干三轴加速度配对分布图
对角线子图展示各轴加速度信号分布近似服从高斯分布;下三角区域可见三轴分布均值高度接近;上三角散点图直观呈现三轴加速度之间的关联关系。
以上观察结论具备实际工程价值:信号近似正态分布的特性,可在后续特征工程环节充分利用。
特征工程
特征工程本质是对原始数据进行有针对性的数学变换。 本文将沿用两篇参考论文中经过验证的成熟特征工程方案,为每一段 5 秒采样窗口新增一批衍生特征,新增特征包含以下几类:
每段信号分布的一阶至四阶统计矩:均值、方差、偏度、峰度(前文已验证信号近似正态分布,因此统计矩可有效区分不同行为的信号特征);
自相关序列前 10 个数值;
该段信号离散傅里叶变换结果中幅值最大的 5 个峰值及其对应频率。
完成特征提取后,将所有特征归一化至 [0,1] 区间;再将整段 5 秒时序数据展平为单行样本,单行共包含 1140 个特征。 超高维特征会引发维度灾难,大幅降低绝大多数分类器的性能,因此本文采用主成分分析(PCA)完成降维处理。 经过展平、降维后的单行数据,将作为最终数据集矩阵中的单条样本,用于分类模型的训练与测试。
完整处理流程
基于原始 45 个传感器基础特征,提取 19 类衍生特征;
将全部特征归一化至 0 到 1 区间;
对每段采样数据执行降维;
拼接所有分段数据,构建单名受试者专属数据集。
1. 提取 19 类衍生特征、转换数据集格式
下面逐一拆解每一类人工构造特征的设计逻辑:
(1)均值、方差、偏度、峰度(四阶统计矩)
前文证明所有传感器信号分布近似正态,因此对每一段 5 秒时序窗口计算前四阶统计矩。四类统计矩能够帮助模型精准捕捉每一类行为独有的信号分布特征,区分不同动作。
(2)自相关特征
在 ARIMA 等时序建模任务中,通常需要消除自相关性、将序列转为平稳序列。但本实验中,躯干 Y 轴行走加速度自相关曲线显示:滞后 2 阶之后,序列自相关性已无统计显著性。
本实验提取每段样本自相关序列的前 10 个数值作为新增特征。设计思路:每一种人体运动行为都会生成独一无二的自相关序列,该独有特征能够辅助模型区分不同动作。 对比跳跃动作的躯干 Y 轴加速度自相关曲线可以直观验证:除滞后 0 阶完全自相关外,跳跃动作无任何显著自相关,其自相关序列形态和行走动作完全不同。 这就是提取自相关前 10 阶数值作为特征的理论依据。当然,所有人工构造特征的有效性,最终都由模型预测性能验证。
(3)离散傅里叶变换(DFT)幅值前五峰值
傅里叶变换可实现时域信号与频域信号的双向转换;任意时域信号都可拆解为若干正弦、余弦曲线的线性叠加。 文中给出连续傅里叶变换正反变换公式;工程实践中,Python 的 SciPy 库可直接计算离散傅里叶变换,或对连续变换做数值近似。
文中配图直观展示时域信号拆解为多组正弦曲线、提取各曲线频率、最终将时域序列转换为频域序列的完整过程。 以受试者行走时躯干 Y 轴加速度为例:左侧为原始时域波形,右侧为对应频域波形。
实验选取频域中幅值最高的 5 个峰值作为特征。设计逻辑:傅里叶分解中,幅值最高的低频分量决定波形整体轮廓,小幅值高频分量仅影响细微波动;不同运动行为对应的信号整体轮廓差异显著,提取核心频域峰值特征,可大幅提升模型区分不同行为的能力。
2. 特征归一化处理
全部特征统一缩放至 0~1 区间。
3. 分段数据降维
附图包含两张方差解释率曲线: 上图为全部 1140 维特征的方差解释率曲线,可见特征增加时,方差解释率快速衰减至接近 0; 下图为前 60 维主成分的方差解释率,第 40 维之后,新增维度几乎无法提升方差解释率。 降维的核心权衡目标:尽可能保留原始数据的信息(方差),同时压缩特征数量。两篇参考论文均将维度压缩至 30 维并取得优异效果,因此本文统一将数据降维至前 30 个主成分向量。
通用降维经验准则:保留能够解释 90% 总方差的最少维度。
建模与预测
模型构建整体框架
原始数据集 → 划分训练集(80%)、验证集(20%)→ 模型训练 → 超参数优化 → 交叉验证、学习曲线分析 → 模型上线部署
本文设计两套实验方案,分别完成用户行为预测任务:
方案一
训练集、测试集均混合所有受试者的打乱样本;模型基于全部受试者数据训练,再对全部受试者样本做行为预测。
方案二
随机选取 7 名受试者数据作为训练集,剩余 1 名受试者全部数据作为测试集;核心目标:让模型预测从未见过的全新受试者的运动行为。
两套方案均遵循统一建模流程:
划分训练集与预留测试集;
模型超参数优化;
绘制学习曲线,通过交叉验证分析模型性能。
选用模型
本次实验对比三类经典机器学习模型:逻辑回归(LR)、支持向量机(SVM)、随机森林(RF);下文重点分析逻辑回归与支持向量机结果。
建模方案一:混合所有受试者样本
训练、测试数据集均打乱包含全部受试者数据,模型学习全体受试者的行为特征,再对全体样本做预测。
网格搜索并行优化、内存优化
传统网格搜索存在两大性能缺陷:
每一组超参数组合都会从磁盘完整读取一份数据集副本载入内存,极大延长搜索耗时;
仅使用单线程串行训练模型。
但不同超参数组合的模型训练任务相互独立,属于数据工程领域典型的「易并行任务」。 本文优化方案:基于 ipyparallel 库搭建本地多核集群,并行执行多组模型训练;同时利用 Numpy 内存映射机制,仅将数据集以只读模式映射至内存,所有 CPU 核心共享同一份数据,无需重复读取磁盘。 并行计算 + 内存映射结合,大幅缩短网格搜索调参耗时。
交叉验证|学习曲线解读
学习曲线生成规则
本文基于四项评价指标(准确率、精确率、召回率、F1 分数)分别绘制学习曲线。曲线中每个数据点均通过以下交叉验证流程生成:
整体数据集拆分为训练子集与预留测试集;
将训练子集做 K 折划分,轮流选取其中一折作为验证集、其余作为训练集迭代训练;
训练完成后,分别在训练集、预留测试集上完成预测; 曲线蓝色线条代表训练集指标,绿色线条代表预留测试集(文中简称测试集)指标。
逻辑回归模型学习曲线分析
四张子图分别为 F1 分数、准确率、精确率、召回率随训练样本量变化曲线。 以准确率曲线为例:训练样本量从 1000 提升至 2000 时,测试集准确率提升约 5%;继续增加训练样本,测试集准确率不再上涨。 测试集指标饱和代表模型存在高偏差(欠拟合):模型拟合能力不足,无论增加多少训练数据,预测上限无法突破。
训练曲线与测试曲线之间的差值代表模型方差大小;理想模型两条曲线几乎重合,泛化能力强。两条曲线差距越大,代表模型高方差(过拟合):模型仅记忆训练样本特征,无法学习通用规律,在新数据上表现极差。 从曲线可见,逻辑回归同时存在明显偏差与方差缺陷。
除此之外,逻辑回归四项指标最高均未超过 50%。本实验共 19 类行为,随机猜测正确率仅约 5%;虽然逻辑回归效果优于随机猜测,但 50% 的准确率远达不到实用标准。
支持向量机(SVM)学习曲线分析
SVM 模型性能显著优于逻辑回归。 从准确率曲线可见:SVM 在训练集上几乎实现完美分类;测试集准确率接近 99%。随着训练样本增加,测试集性能持续提升。 训练曲线与测试曲线看似存在差距,但两者指标差值仅 0.01%,几乎可以忽略。 结论:SVM 模型偏差、方差均极小,是适合工业落地的理想模型。
精确率与召回率补充说明
前文重点分析准确率,下面详细解释精确率、召回率的定义:
精确率:所有被模型预测为正类的样本中,真实属于正类的样本占比。 举二分类例子:100 个样本被预测为正类,其中 90 个真实为正(真阳性 TP),10 个真实为负却误判为正(假阳性 FP),则精确率 = 90/100。精确率衡量模型「误报」的多少。
召回率:所有真实属于正类的样本中,被模型正确识别的样本占比。召回率对比 TP 与假阴性 FN(真实为正、误判为负),衡量模型漏检的多少。
F1 分数:精确率与召回率的调和平均,综合衡量模型漏检、误报两类错误。
回到本实验多分类场景(19 类),「正类 / 负类」二元概念不再适用。SVM 的精确率曲线可解读为:每 100 条被预测为某一类行为的样本中,99 条分类结果完全正确。
建模方案二:训练 / 测试集完全分割受试者
训练集为随机 7 名受试者全部数据,测试集为剩余 1 名全新受试者;目标:模型泛化识别从未见过的用户的运动行为。
SVM 模型学习曲线分析
四张曲线分别为 F1 分数、准确率、精确率、召回率随训练样本量变化。 蓝色训练曲线对应 7 名训练集受试者,模型在已知用户样本上预测效果极佳;但绿色测试曲线(全新受试者)指标大幅下跌,模型出现严重过拟合。
结果解读:本文采用的特征工程方案捕捉到了受试者个体专属运动特征,但未能提取适用于所有人的通用行为模式。 基于实验目标可得出两种完全相反的结论:
若业务需求为「为每位用户单独部署专属模型」:本方案完全成功,模型识别单个人动作的精度接近 99%;
若业务需求为「通用模型,可识别任意陌生用户的运动行为」:本方案存在明显缺陷,泛化能力不足。
研究结论
结合时序信号处理、信号频域分析知识完成特征工程,搭配机器学习分类模型,可实现用户行为识别,同用户训练测试场景下分类准确率可达 99%。 本方案在训练、测试样本包含相同受试者时效果极佳,模型能够学习单人专属的运动信号特征,精准区分行走、跳跃等动作。 但当训练、测试集完全隔离不同受试者时,模型无法学习不依赖个体差异的通用运动模式,泛化性能大幅下滑。
本研究成果可直接落地应用于 Fitbit、Spire 等物联网穿戴设备初创企业。这类企业持续采集用户穿戴设备时序信号,精准识别用户运动行为可衍生数据产品,同时支撑企业市场运营策略制定。