【2025年泰迪杯数据挖掘挑战赛】B题 数据预处理+问题建模与求解

发布于:2025-04-15 ⋅ 阅读:(29) ⋅ 点赞:(0)

2025年泰迪杯数据挖掘挑战赛 B题

数据预处理 问题一、二建模与求解

在这里插入图片描述

三、数据预处理

3.1 基于多核并行的协同处理方法的数据读取

针对原始数据集因单个CSV文件容量过大(约1GB/文件)导致的读取效率低下问题,本研究设计了一套系统化的格式转换方案。由于传统CSV格式采用文本型存储结构,其在加载过程中需要进行字符串解析、数据类型推断及内存重排等复杂运算,当处理大规模工程数据时,这些固有缺陷会显著增加I/O时间成本。实验测试表明,在Matlab 2021b环境中读取典型CSV文件需耗时约82秒,且随着数据维度增加呈现非线性增长趋势,这对需要频繁调用数据集的迭代分析任务产生了严重瓶颈。

为突破这一瓶颈,本文提出基于MATLAB二进制序列化与多核并行的协同处理框架,其核心原理在于将非结构化文本数据转换为内存连续存储的列式二进制格式,同时利用线程级并行技术分散I/O密集型任务负载。

在格式转换环节,设计了三层数据清洗机制:首先通过正则表达式 R ( s ) = { ( α , β ) ∣ s ⊨ φ } R(s) = \{(\alpha, \beta) | s \models \varphi\} R(s)={(α,β)sφ} 对非结构化字段进行语义解析,其中 φ \varphi φ 定义为匹配模式,采用向量化操作将文本特征转换为数值型变量,此过程通过cellfun函数实现时间复杂度 O ( n ) O(n) O(n) 的批量处理,相较于传统循环方法效率提升 23 倍。其次建立异常值过滤模型,基于滑动窗口的 3 σ \sigma σ 准则动态调整阈值 T = μ ± 3 σ T = \mu \pm 3\sigma T=μ±3σ,并采用 T T T 检验识别离群点,该模型在保留 99.4% 有效数据的前提下剔除噪声数据。最后实施数据类型压缩策略,对 16 位 AD 采样值采用 \texttt{int16} 定点编码。

并行处理模块构建了动态资源调度模型,其数学表达为:
max ⁡ P ∈ N { N ∑ k = 1 N t k ( P ) } \max_{P \in \mathcal{N}} \left\{ \frac{N}{\sum_{k=1}^{N} t_k(P)} \right\} PNmax{k=1Ntk(P)N}

约束条件:

∑ i = 1 P M i ( t ) ≤ M ava ( t ) \sum_{i=1}^{P} M_i(t) \leq M_{\text{ava}}(t) i=1PMi(t)Mava(t)
确保内存消耗不超过 3GB 阈值。通过parpool(min(coreNum, NUM)) 初始化并行池,实现物理核心数与任务数的动态平衡,该机制成功规避 Amdahl 定律中的并行开销陷阱。

内存管理子系统引入负反馈控制机制,其状态方程:
d M iva d t = − ∑ i = 1 P [ M load , i + λ M proc , i ( t ) ] + M release ( t ) \frac{dM_{\text{iva}}}{dt} = - \sum_{i=1}^{P} \left[ M_{\text{load},i} + \lambda M_{\text{proc},i}(t) \right] + M_{\text{release}}(t) dtdMiva=i=1P[Mload,i+λMproc,i(t)]+Mrelease(t)

通过 5 秒时滞 Δ t \Delta t Δt 实现内存占用的自适应调节。

数据整理的伪代码如下所示:
在这里插入图片描述
在这里插入图片描述

3.2 基于多核并行协同处理的数据聚合

本文采用基于并行计算框架的高效数据处理方法对原始加速度时间序列进行时序聚合处理。针对大规模传感器数据存储分散、时序不齐的特点,设计动态内存监控机制与自适应任务调度策略,在确保计算稳定性的前提下实现秒级数据特征的快速提取。

首先建立面向内存资源约束的并行任务管理模型。通过实时监测MATLAB工作内存状态,设置内存使用阈值保护机制:当预估内存占用率超过80%时自动暂停任务提交并进入休眠等待,直至内存释放至安全阈值后恢复计算。该机制通过动态平衡计算节点负载,有效避免了传统批处理中常见的内存溢出风险。

在数据预处理阶段,采用三步清洗策略:(1)基于rmmissing函数剔除含缺失值的异常记录;(2)将原始文本时间戳统一转换为datetime数据类型;(3)通过dateshift函数将时间精度规约至秒级。经预处理后的数据形成标准化时间序列,为后续特征提取奠定基础。

特征计算采用分治并行算法,将原始数据分割为独立计算单元。每个工作线程执行以下聚合操作:对加速度三轴数据(x,y,z)计算滑动均值以消除高频噪声,表达式为
x ˉ t = 1 n ∑ i = 1 n x i \bar{x}_t = \frac{1}{n} \sum_{i=1}^{n} x_i xˉt=n1i=1nxi

其中 n n n 为第 t t t 秒内采样点数。

对离散型变量(code、MET)采用众数统计法确定主导状态,数学表示为:
mode ( v ) = arg ⁡ max ⁡ c ∈ C ∑ i = 1 n I ( v i = c ) \text{mode}(v) = \arg \max_{c \in \mathcal{C}} \sum_{i=1}^{n} I(v_i = c) mode(v)=argcCmaxi=1nI(vi=c)

通过 parallel.EvalFuture实现异步任务调度,配合 fetchNext \texttt{fetchNext} fetchNext 方法动态回收计算结果,最终生成包含 5 维特征向量的秒级聚合数据集。

四、问题一

在这里插入图片描述

五、问题一

在这里插入图片描述

技术文档与matlab代码

数据量非常大,完整数据处理代码以及技术文档请看下方~