深度神经网络 (第 IV 部)。创建, 训练和测试神经网络模型·进阶篇
(2/3)· 从神经元初始化到带/不带预训练的结果对比,手把手拆开 DNN 建模全流程
◍ 预训练两阶段与无预训练误差实测
深度网络训练拆成两段更稳:先用 SRBM 在预训练集上做无监督预训练,再只练上层并拿 par_0 验证;随后用 par_1 在训练/验证集上微调全网络。两阶段参数分开设,par_0 管通用+RBM+上层,par_1 管所有层,缺省值可被列表覆盖。 第一阶段跑完会吐出一个带权重和误差记录的 DArch 结构,把它塞进第二阶段参数清单才能继续。测试集上最终分类错误:带预训练在 woe 集 0.6687(区间 0.6255–0.7098)、raw 集 0.6826(0.6399–0.7232);无预训练对应 0.7006、0.6786。 无预训练时验证/测试误差明显大于训练误差,图表里能看出重复训练迹象。带预训练两集错误都落在 30%±4 范围内,虽不比基础模型强太多,但泛化更干净,后续实验倾向沿用预训练。 下面这段 R 式脚本是数据准备和 WOE 分箱的起点,直接在 MT5 外接 R 环境里 evalq 就能复现分箱表:
evalq({ dt <- PrepareData(Data, Open, High, Low, Close, Volume) DT <- SplitData(dt, class="num">2000, class="num">1000, class="num">500, class="num">500) pre.outl <- PreOutlier(DT$pretrain) DTcap <- CappingData(DT, impute = T, fill = T, dither = F, pre.outl = pre.outl) preproc <- PreNorm(DTcap, meth = meth) DTcap.n <- NormData(DTcap, preproc = preproc) preCut <- PreDiscret(DTcap.n) }, env) evalq(tabulate.binning <- woe.binning.table(preCut), env) > env$tabulate.binning $`WOE Table for v.fatl` Final.Bin Total.Count Total.Distr. class="num">0.Count class="num">1.Count class="num">0.Distr. class="num">1.Distr. class="num">1.Rate WOE IV class="num">1 <= -class="num">0.3904381926 class="num">154 class="num">7.7% class="num">130 class="num">24 class="num">13.2% class="num">2.4% class="num">15.6% class="num">171.3 class="num">0.185 class="num">2 <= -class="num">0.03713814085 class="num">769 class="num">38.5% class="num">498 class="num">271 class="num">50.4% class="num">26.8% class="num">35.2% class="num">63.2 class="num">0.149 class="num">3 <= class="num">0.1130198981 class="num">308 class="num">15.4% class="num">141 class="num">167 class="num">14.3% class="num">16.5% class="num">54.2% -class="num">14.5 class="num">0.003 class="num">4 <= Inf class="num">769 class="num">38.5% class="num">219 class="num">550 class="num">22.2% class="num">54.3% class="num">71.5% -class="num">89.7 class="num">0.289 class="num">6 Total class="num">2000 class="num">100.0% class="num">988 class="num">1012 class="num">100.0% class="num">100.0% class="num">50.6% NA class="num">0.626 $`WOE Table for ftlm` Final.Bin Total.Count Total.Distr. class="num">0.Count class="num">1.Count class="num">0.Distr. class="num">1.Distr. class="num">1.Rate WOE IV
RBCI 与另类指标的 WOE 分箱对比
把 rbci 和前一小节的指标做 WOE 分箱,能直接看出哪段值域对「1 类」样本更有区分度。rbci 第一箱(<=-0.1718)共 616 条,占 30.8%,其中 0 类 421 条、1 类 195 条,1 类命中率 31.7%,WOE 79.4,是该指标正向区分最强的一段。 反观前指标第四箱(>0.1789 到 Inf)样本 616 条、占比 30.8%,但 1 类率冲到 71.3%,WOE 为 -88.4,说明高值区几乎被 1 类占据,和 rbci 高值箱(WOE -86.1、1 类率 70.8%)走向一致。 两个表的 IV 合计分别约 0.463 与 0.335,rbci 的信息量略低但单调性更干净:从第一箱到第四箱 1 类率 31.7%→43.8%→57.6%→70.8% 逐箱抬升。外汇与贵金属行情受杠杆与跳空影响大,这类统计区分度只代表历史样本倾向,实盘须以小仓位验证。 开 MT5 把这两张表导进 Excel,用分箱边界写 iCustom 阈值过滤,比直接喂原始值进模型更抗过拟合。
「RBCI 与 SATL 的 WOE 分箱对比」
用 WOE(证据权重)给两个指标做分箱,能直接看出哪一段区间对「1 类样本」更有区分力。下面两张表都来自 2000 条样本的总集,其中 0 类 988 条、1 类 1012 条,整体 1 类占比 50.6%。 v.rbci 被切成 4 个箱:当值 ≤ -0.1837 时 1 类率仅 34.1%,WOE 高达 68.3;而最右箱(≤ Inf)1 类率跳到 70.8%,WOE 为 -86.1。该变量总 IV 0.331,右尾区间贡献了 0.161,是主要区分来源。 v.satl 分两箱:≤ -0.0184 时 1 类率 36.6%、WOE 57.3;右侧箱 1 类率 58.9%、WOE -33.6。总 IV 0.191,左尾负区间的 IV 0.148 占大头。 开 MT5 把这两个变量的分箱边界照抄进 EA 的预处理函数,用 WOE 值替换原始值再喂给模型,外汇与贵金属行情下杠杆风险高,替换后信号概率分布可能偏移,务必用近期数据重算 IV。
◍ WOE 分箱里藏着变量区分度
上面三张表是同一批 2000 条样本(标签 0 有 988 条、标签 1 有 1012 条,整体 1 类占比 50.6%)在不同特征上的 WOE 分箱输出。直接看 IV 列就能判断哪个变量更值得进模型:v.stlm 的 IV 累计 0.244,明显高于前一张未命名表的 0.330 总 IV 中单变量贡献分散的情况,说明它在区分两类样本上更有信息量。 以 v.stlm 为例,分箱 1(值 <= -0.403)里 1 类比率仅 23.4%,WOE 高达 121.1,而分箱 4(值 > 0.114 且 <= Inf)1 类比率 62.7%、WOE 为 -49.4。正负 WOE 拉开差距,正是 IV 能攒到 0.244 的原因。 做特征筛选时,把这类表导进 MT5 外的分析脚本跑一遍,挑 IV 过 0.1 的变量留着。外汇与贵金属市场高杠杆、高风险,历史分箱结论只代表样本内倾向,实盘替换数据后区分度可能衰减,需重新验证。
WOE 分箱里藏着的两个反向信号
把 v.ftlm 和 v.rftl 两个变量的 WOE 分箱表拉出来看,能直接读出哪些区间对「1 类」样本更友好。外汇与贵金属行情里这类变量属于高噪声输入,分箱结论只代表样本内倾向,实盘须防过拟合。 v.ftlm 的第一箱(值 ≤ -0.03698)覆盖 923 个样本、占 46.2%,其中 1 类占比 36.4%、1 类命中率 39.9%,WOE 为 43.5、IV 0.086;第三箱(>0.24375 到 Inf)仅 462 个样本却给出 66.7% 的 1 类命中率,WOE -66.9、IV 0.099。越往正无穷走,1 类概率越倾向走高。 v.rftl 对应的总样本也是 2000,整体 1 类率 50.6%;它第一箱 WOE 43.5 而第三箱 WOE -66.9,和 v.ftlm 的方向几乎镜像。两个变量 IV 分别 0.228 与 0.194,在二分类筛选里都算有区分度,但都没到强预测级别。 开 MT5 把这两列特征按上述切点手动分箱,核对一下自己样本窗里第三箱的 1 类率是否也贴着 66% 附近——贴不住就说明行情结构已经漂移。
「分箱残差里的 WOE 与 IV 信号」
上面两张表是把某特征(表头 stlm)做最优分箱后,直接吐出来的 WOE/IV 明细。第一张表总样本 2000,正负类几乎对半(988 对 1012),整体 IV 累加 0.140,属于弱到中等预测力。 看 bin1:特征值 ≤ -0.1578 时,1 类占比 39.6%,WOE 正值 44.6,说明该区间偏多头样本;而 bin4(>0.329)1 类率冲到 66.6%,但 WOE 是 -66.4,负向分离最强,IV 单箱 0.065 是全表最高。 第二张 stlm 表切得更细,bin4 在 0.263~0.359 区间样本骤减到 154 条,1 类率 37.0% 反而低于基线,WOE 正 55.6——这种窄箱高 WOE 往往是过拟合苗头,实盘拿去当过滤条件前要先用 MT5 自带样本外数据重算。 外汇与贵金属波动大、杠杆高,这类分箱指标只作概率参考,任何单箱信号都不能当成开仓依据,上真仓前务必走一遍样本外验证。