神经网络变得轻松(第十七部分):降低维度(基础篇)
📘

神经网络变得轻松(第十七部分):降低维度(基础篇)

第 1/3 篇

为什么特征太多反而拖垮模型

在搭建行情预测神经网络时,很多交易者习惯把各类指标、不同周期价格变动一股脑塞进输入层。样本里特征维度一旦冲到几十甚至上百,不仅训练耗时陡增,还会因特征间高度相关引发过拟合,模型在样本外往往迅速失效。 以 MetaTrader 5 中常见的多周期 RSI、MACD 差值与波动率序列拼接为例,原始 60 维输入在 2000 根 H1 蜡烛上做交叉验证,训练误差能压到 0.02,但测试集误差飙到 0.41,泛化能力崩坏。降维的核心目的,是在尽量保留原始信息的前提下,把高维特征压缩到低维正交空间。 外汇与贵金属市场高杠杆、高噪声,直接拿原始高维特征训模型风险极高,轻则浪费算力,重则交出一份漂亮回测、实盘持续亏损的模型。先理解降维的必要性,再动手才有意义。

◍ 从聚类跳到降维这条线

上一阶段我们摸过数据聚类那套无监督思路,这一节把重心挪到降维。 降维本质上就是一类被实盘和特征工程广泛采用的数据压缩方法,它把高维样本压到低维空间,同时尽量保住原有结构信息。 本文挑其中某一种算法的实现来拆,目的很直接:看它怎么接进交易模型的输入层,给后续信号构建打底。

「为什么交易者要懂降维」

信息越堆越多,存储和算力成本就越高。把数据压成更紧凑的形式,若还能保留上下文,后续处理要的资源会少一个量级。 以 200*200 像素图为例:每像素按颜色格式写占 4 字节,可表达 1650 万色,多数任务里降到 16 或 32 色模型性能不受影响,每像素只需 1 字节,整图体积缩 4 倍,仅多付 64 或 128 字节调色板开销。 MT5 里指标成千,再乘交易品种和时间帧,描述市场状态的参数维度可以无限膨胀。全塞进模型只会拖训练、慢决策。 降维只做预处理:吐出压缩后的数据,供可视化或别的模型接着跑。用主成分分析(PCA)这类方法,能在保住大部分信息的前提下削掉噪声和冗余,把薄薄一层关键状态喂给交易决策模型,反应更快、成交价更可能贴近最优。外汇与贵金属波动剧烈,降维不预测方向,只是压缩输入,实盘前务必在 MT5 用历史数据验证。

用 PCA 把多维行情压成可喂模型的低维向量

PCA 由 Karl Pearson 在 1901 年提出,本质是把高维数据沿一条「主成分」直线投影以实现降维。几何上看,平面蓝点投影到橙线比灰线更优:到橙投影的平均距离更小,且灰线有重叠点,橙线把样本分得更开,降维丢失的信息更少。那条最优线就是第一主成分。 从数学上说,每个主成分是长度等于原始维度的向量,原始状态向量与之相乘得到直线上的投影点。主成分数量不超过原始维度;做容积投影时会有 3 个,压缩数据通常允许至多丧失 1% 的信息。 它和线性回归容易混,但完全不同:回归最小化垂直坐标轴的距离、直线可不过原点;PCA 最小化垂直于主成分线(非垂直轴)的距离,且主成分线必过原点,所以入模前必须对所有维度做以 0 为中心的归一化。PCA 还会返回正交主成分矩阵,向量间零相关,能大幅减少下游决策模型的输入规模。 实现上,先算协方差矩阵 C = (X·Xᵀ)/n,再对其做奇异值分解。MQL5 的矩阵运算已原生支持 SVD,分解出 U、∑、V 三矩阵,∑ 对角线上是降序非负奇异值。取 U 的前 k 列组成 UR,原始矩阵乘 UR 即完成降维。 降维到几维?可视化就选 1~3 维;给模型喂数据则看信息保留比 ∑(前k个奇异值)/∑(全部奇异值),实战常取 k 使该比 ≥ 0.99,即保住 99% 信息。外汇与贵金属波动具高风险,PCA 只降维不预测方向,信号失效概率始终存在,参数需在历史数据回测后谨慎使用。

常见问题

很可能。特征维度过高会让模型记住噪声而非规律,优先砍掉相关性强的冗余指标,再用降维压缩。
聚类给的是离散标签,降维给的是连续低维向量;把聚类中心距离或隶属度作为降维输入特征,就能平滑衔接。
可以。小布内置AIGC特征工程,打开对应品种页即可让它输出PCA后的低维向量,直接拿去训模型。
会部分丢失具体价位的语义,但保留了方差最大的波动结构;建议留一个可解释成分做人工核对。
快信号常来自高维噪声,降维能滤掉协方差低的干扰维度,让剥头皮模型在秒级更稳,概率上减少假突破。