2. 高维轨迹数据概述
好了,咱们正式开始聊轨迹数据。你可能会想,轨迹数据不就是一串坐标吗?有什么好讲的?
嗯,如果只是“人在某时刻在哪儿”,那确实简单。但现实中的轨迹,远比你想象的要复杂得多。我个人习惯把轨迹数据分成两类:原始轨迹和特征轨迹。这节课我们主要聚焦后者,也就是经过特征提取后的高维轨迹数据。
2.1 什么叫“高维轨迹”?
先看一个最简单的例子。假设你拿着手机走路,GPS每秒钟记录一个点。那这个点就是 (x, y) 或者 (经度, 纬度)——两维。这是最低维度的轨迹。
但是在实际项目中,我们不会只用经纬度。你会加上时间戳、速度、方向角、加速度、GPS精度……这就是往高维走了。
timestamp, latitude, longitude, altitude, speed, bearing, accuracy, acceleration
这已经是8维了。还没完。你想想看,如果我们对一段轨迹做滑动窗口统计——窗口内的均值、方差、最大值、最小值、极差——那每个窗口就能生成几十上百个特征。
我记得有一次做用户行为分析,一个简单的10秒窗口就提取了64个特征。整条轨迹跑下来,每个轨迹点都变成了一根64维的向量。那才叫真正的“高维”。
2.2 为什么维度会暴涨?
说白了,维度暴涨就三个原因:
- 传感器种类多:GPS、IMU、摄像头、WiFi指纹、蓝牙信标……每个传感器都贡献好几个维度。
- 特征工程过细:有人喜欢把能算的统计量都算一遍。均值、方差、偏度、峰度、熵、相关系数……越算越多。
- 时间序列展开:原始轨迹是变长的,为了对齐,你得做时间规整或滑动窗口。窗口一多,特征数量就成倍增加。
2.3 高维轨迹数据的典型结构
为了让你有个直观印象,我把高维轨迹数据的结构画成一张图。这样你就能看到数据是怎么从原始位置一步步变成高维矩阵的。
2.4 维度爆炸的真实案例
给你看个具体的。这是一个来自实际项目的轨迹特征维度清单。我在做城市交通模式识别时用过类似的结构。
| 特征类别 | 具体特征 | 维度数 |
|---|---|---|
| 基础位置 | 经度、纬度、高度、时间戳 | 4 |
| 运动学 | 速度、加速度、加加速度、方向角 | 4 |
| 窗口统计 | 均值、方差、极差、偏度、峰度、中位数、四分位距 | 7 |
| 频域特征 | FFT前5个分量的幅度、相位 | 10 |
| 上下文特征 | 路段类型、限速、周边POI密度、交通状态 | 8 |
| 合计 | 每个轨迹点 | 33 |
看到没?就一个点,33维。如果一条轨迹有120个点,那就是33×120 = 3960维。你觉得这种数据扔进KNN会怎样?
2.5 高维带来的麻烦不止是计算
说到麻烦,你第一个想到的可能是“计算慢”。没错,维度高了,距离计算、矩阵运算都变慢。但还有几个更隐蔽的问题:
- 距离失效:高维空间中,欧氏距离几乎都差不多。所有点都离得很远,最近邻和最远邻的距离比值趋近于1。聚类效果会严重下降。
- 数据稀疏:维度越高,数据越稀疏。你想想看,一维空间你只需要几个点就能填满一个区间;到了100维,你得有天文数字的样本才能填满超立方体。
- 可视化困难:人眼最多理解3维。超过3维的轨迹你根本画不出来,没法直观发现问题。
2.6 什么时候需要降维?
不是所有高维轨迹都要降维。我总结了一个判断标准:
- 特征维度 > 样本量 → 必须降维
- 特征维度 > 100 → 强烈建议降维
- 特征维度 > 50 → 建议检查相关性,再决定是否降维
- 特征维度 < 10 → 通常不需要降维,除非有强相关性
2.7 本章小结
好了,这一节我们聊了高维轨迹数据长什么样,维度是怎么涨上去的,以及高维会带来哪些麻烦。说白了,高维轨迹数据就是“特征工程师太勤劳”的结果——每个点都带了几十个甚至上百个特征。