高维数据的 DCT 降维预,真的是个挺好用的小技巧。DCT原本是用在图像压缩上的,讲究的是“能量聚集”,也就是说能把大部分有用信息集中到少数几个系数里。你拿它来做降维之前的,效果还挺惊喜的,维数一下子就下去了。
DCT 的保距特性,在降维场景里也挺重要的。它不会随便把数据间的距离关系搞乱,换句话说,结构还在。尤其是遇到超高维的情况,比如几百上千维,直接上降维算法容易跑飞,加个 DCT,后面起来就轻松不少。
实验数据也有支撑:加入 DCT 之后不仅加快了速度,还能缓和噪声带来的干扰。像你做聚类或者分类那种结构依赖型的,这个预会蛮有的。要注意的一点是,DCT 后的数据,最好做个归一化再往下喂,不然尺度变化太大也出问题。
如果你对高维数据降维感兴趣,可以看看这个LASSO 降维的实现,也是蛮常用的办法,和 DCT 配合起来还挺顺。或者你也可以了解一下FastDTW,在时序数据里效率也不错。
嗯,实在不确定怎么选?你可以先跑一波加了 DCT 的降维试验,再对比没加的结果,性能和准确率一眼就能看出差距。