【数学建模】2022小美赛C题 人类活动分类(Classify Human Activities)

2022小美赛

  • 1 前言
  • 2 问题重述
  • 3 问题解决思路
  • 4 问题求解(原始模型)
    • 4.1 特征提取
    • 4.2 数据集划分
    • 4.3 评价指标选择
    • 4.4 模型的选择
    • 4.5 各模型的性能表现
    • 5 改进的模型
    • 5.1 特征工程
    • 5.2 改进后的结果
  • 小结
  • 附件

竞赛题目: 人类活动分类
Classify Human Activities

1 前言

本文档主要包括了2022年小美赛C题的求解过程,包含了代码以及运行成果的讲解

2 问题重述

  • 请设计一组特征和一个高效的算法,以便从这些穿戴式传感器的数据中对19种人体行为进行分类。
  • 由于数据成本高,我们需要在有限的数据集下使模型具有良好的泛化能力。我们需要具体地研究和评估这个问题。请设计一个可行的方法来评估你的模型的泛化能力。
  • 请研究并克服过拟合问题,使您的分类算法可以广泛应用于人的行为分类问题。

3 问题解决思路

  • 需要设计一个多分类算法,对人类运动行为进行分类。本文考虑采用基于机器学习的方法,建立多分类模型。
  • 为了检验模型的泛化能力,因此本文中考虑设计一种合理的数据集划分方式,即为按照不同受试者进行划分。相较于传统划分方法,该方法能够有效检验模型在新的实验对象上的性能。
  • 此外,本文中的机器模型还采用了早停机制,以防止因训练样本过多造成过拟合的现象。本文构建的模型主要框架如下:(实在是没精神画图了,大家将就看一下吧)
    【数学建模】2022小美赛C题 人类活动分类(Classify Human Activities)_第1张图片

4 问题求解(原始模型)

4.1 特征提取

常用的时域特征和频域特征的计算方法如下:
时域15个:
【数学建模】2022小美赛C题 人类活动分类(Classify Human Activities)_第2张图片
【数学建模】2022小美赛C题 人类活动分类(Classify Human Activities)_第3张图片
频域13个:
【数学建模】2022小美赛C题 人类活动分类(Classify Human Activities)_第4张图片
【数学建模】2022小美赛C题 人类活动分类(Classify Human Activities)_第5张图片
在本文中,分别提取原始文件每一列信号的了时域特征11个,频域特征12个,共计23个特征。原始数据中共计包含45列信号,使用上述程序得到4511=495个时域特征的特征向量。进行DFT处理后,分别提取了每个信号的12个频域特征,得到4512=540个频域特征。也就是说,每个txt文件将表示为一个[1*1035]的特征向量。

4.2 数据集划分

值的注意的是,整理后的数据集中包含8个受试者的多条样本,为了避免数据发生穿越,验证模型的泛化性能,因此按照以下规则进行数据划分,如下图所示。
训练集:第1-7个受试者的数据。
测试集:第8个受试者的数据。
【数学建模】2022小美赛C题 人类活动分类(Classify Human Activities)_第6张图片
做个补充:这样做的原因是检验一下模型,当新来一个人的时候,是不是还能够准确的对其行为进行判断。如果直接采用8个人的数据,按照传统的方式进行划分,那么模型很可能在这8个人的数据集上过拟合。当然,还有另外一种更为科学的方法。采用6个人的数据进行训练,采用第7个人的数据对模型的性能进行验证,来优化模型的参数。最后在第8个人的数据上进行测试。这样做的好处是,可以避免模型在第7个人的身上发生过拟合的现象。但是由于竞赛时间有限,博主并没有尝试这种做法。

4.3 评价指标选择

选取了Precision、Recall、F1、Accuracy、macro avg、weighted avg。这些详细可以参考我之前发布的竞赛文章

4.4 模型的选择

(1) Liner regression model(线性回归)
(2) SVM(支持向量机)
(3) KNN(K近邻)
(4) decision tree(决策树)
(5) XGBoost
(6) LightGBM
(7) CatBoost

4.5 各模型的性能表现

由于本文中一共有19类,所以就不展示原始结果了。这里放上整理好的数据
【数学建模】2022小美赛C题 人类活动分类(Classify Human Activities)_第7张图片
【数学建模】2022小美赛C题 人类活动分类(Classify Human Activities)_第8张图片
从上表中可以看到,SVM和CatBoost的分类效果优于其他几种机器学习模型,其准确率达到了0.85。在附录中,可以详细的看到,LR、KNN和Decision tree模型对第一类的分类效果较差,无法准确进行识别。
基于集成学习的方法普遍优于其它模型,但是LGB的分类Accuracy却仅仅有0.78。这可能是因为模型采用了默认参数,接下来我们将会对几种模型的参数进行设置,以寻求更好的分类效果。
CatBoost模型在默认参数下的运行时间过长,因此考虑在接下来的改进中,将采用早停机制来缩短训练时间。此外,该模型还支持GPU训练,因此接下来将采用GPU进行加速。

5 改进的模型

5.1 特征工程

由于特征向量中不同特征的取值相差较大,将训练集和测试集中用于模型训练的数据进行归一化处理。
主成分分析(Principal Component Analysis, PCA) 是一种常见的数据分析方式,常用于高维数据的降维,可用于提取数据的主要特征分量。在这项工作中,我们通过主成分PCA将特征的数量从1035个减少到30个。
此外,还对几种模型进行了网格寻优等处理,具体操作也可以参考之前发布的竞赛文章。

5.2 改进后的结果

采用上述改进后的方案,对各模型进行重新训练,各模型的具体得分就不再进行展示了,绘制了各模型的优化前和优化之后的Accuracy如下图所示。
【数学建模】2022小美赛C题 人类活动分类(Classify Human Activities)_第9张图片

  • 从上述结果中可以看到,经过归一化和PCA处理后,大部分模型的的性能均得到提高。其中LR模型的性能提高了15%,KNN模型性能提高了21%,其余模型提高幅度不大。
  • SVM、XGB模型的性能反而有了小幅度的下降,这可能是因为在降维的过程中,删除了一些对分类有积极作用的特征。
  • 基于CatBoost的模型Accuracy达到了91%,取得了较为不错的分类效果。

此外本文还进行了五折交叉验证、分别选去了LR模型和表现较好的CatBoost模型。得到的结果与简单交叉验证相差不大。

小结

本文的一些中间过程,以及处理结果,在竞赛结果公布之后会上传到百度网盘共享。由于本次情况特殊,代码均在学校的电脑上,等我远程上主机后,会将代码补充。
由于问题较为专业,本文仅仅进行了一些初步的探索,如有疑问可以一起交流
如需要竞赛指导,可私信留言

这次竞赛参加时间十分仓促,仅做了一天,学校就有阳性确诊了。博主去做了志愿者,连着几天没怎么睡,而后又感染了病毒,近期刚刚痊愈。本人对人类(活动)姿态分类问题还将进行进一步研究,计划寒假期间完成实验,水一篇论文,如果有做相关研究的小伙伴也可以一起交流一下。

转载请注明出处

附件

待整理

你可能感兴趣的:(数学建模,分类,人工智能)