共计 1612 个字符,预计需要花费 5 分钟才能阅读完成。
问题背景
随着智能穿戴设备的普及,通过传感器数据监测人体活动状态成为健康管理的关键技术。2025 年泰迪杯 B 题要求参赛者基于三轴加速度计、陀螺仪等设备采集的时序数据,实现 6 类日常活动(步行、跑步、静坐等)的精准分类。核心挑战在于:

- 传感器数据存在噪声和个体差异
- 不同活动间的特征边界模糊(如慢走 vs 快走)
- 设备采样频率差异导致数据对齐困难
数据探索
原始数据集包含 30 名受试者的传感器读数,采样频率为 50Hz。通过初步分析发现:
- 数据分布问题
- 静坐类样本占比 40%,存在类别不平衡
-
部分受试者的设备存在信号中断(约 5% 的缺失值)
-
信号特征观察
- 加速度计 Z 轴在上下楼梯时呈现明显周期性
-
陀螺仪 X 轴对转身动作敏感
-
异常检测
通过 3σ 原则发现约 2% 的异常值,主要出现在设备剧烈晃动时
技术方案
数据预处理流程
- 缺失值处理
- 短时缺失(<100ms)采用线性插值
-
长时缺失直接剔除该时间段样本
-
信号滤波
使用 Butterworth 低通滤波器(截止频率 5Hz)消除高频噪声:from scipy.signal import butter, filtfilt def butter_lowpass_filter(data, cutoff=5.0, fs=50.0, order=4): nyq = 0.5 * fs normal_cutoff = cutoff / nyq b, a = butter(order, normal_cutoff, btype='low') y = filtfilt(b, a, data) return y
特征工程
- 时域特征 (滑动窗口 = 2 秒)
- 均值 / 方差 / 峰度
- 过零率
-
信号幅度面积(SMA)
-
频域特征
- FFT 能量谱带划分(0-5Hz, 5-10Hz, 10-15Hz)
-
主频分量占比
-
交叉传感器特征
- 加速度计与陀螺仪的相关系数
- 三轴向量合成幅度
模型选型对比
| 模型 | 准确率 | 推理速度 (ms/ 样本) | 内存占用 |
|---|---|---|---|
| RandomForest | 89.2% | 2.1 | 中等 |
| XGBoost | 91.5% | 1.7 | 较低 |
| LSTM | 93.1% | 8.3 | 较高 |
最终选择 XGBoost 作为基础模型,在效果和效率间取得平衡。
关键代码实现
特征提取示例
from tsfresh import extract_features
# 提取自动化特征
features = extract_features(
timeseries_data,
column_id="subject_id",
column_sort="timestamp",
default_fc_parameters=EfficientFCParameters())
模型训练
import xgboost as xgb
params = {
'max_depth': 6,
'learning_rate': 0.1,
'subsample': 0.8,
'colsample_bytree': 0.7,
'objective': 'multi:softmax',
'num_class': 6
}
dtrain = xgb.DMatrix(X_train, label=y_train)
model = xgb.train(params, dtrain, num_boost_round=200)
性能优化
- 超参数调优
- 使用 Optuna 进行贝叶斯优化
-
重点调整 max_depth 和 learning_rate
-
计算加速
- 将 pandas 操作向量化
-
使用 joblib 并行特征提取
-
模型轻量化
- 特征重要性筛选(保留 top30 特征)
- 量化模型权重到 8 位整数
避坑指南
- 数据泄露
- 严禁在特征工程前做全局标准化
-
必须按受试者划分训练 / 测试集
-
类别不平衡
- 采用 SMOTE 过采样
-
在 XGBoost 中设置 scale_pos_weight
-
实时性处理
- 避免使用未来窗口数据
- 采用因果性滤波器
扩展应用
本方案经过以下改进可应用于实际产品:
1. 增加设备无关性处理(不同厂商的传感器校准)
2. 开发增量学习机制适应新用户
3. 结合 GPS 数据提升室外活动识别率
通过这次比赛实践,我们验证了基于传统机器学习方法的穿戴设备活动识别方案,在保证精度的同时具有较好的计算效率,适合在资源受限的边缘设备部署。
正文完
发表至: 未分类
近两天内
