第82章 復现包(1 / 5)

投票推荐 加入书签 留言反馈

  江临把那张写著【下一执行目標】的audit_log关掉,新建了一个空白的python文件。
  minimal_leak_demo.py
  距离对方要求的24小时窗口期,还剩二十三个小时四十一分。
  时间够用,但他没有任何懈怠的意思。
  构造一个最小復现实验,听起来简单,做起来却是一桩挺讲究分寸的活。
  第一,不能用平台提供的那3.4gb原始数据集的任何一个字节。
  否则对方可以反咬一口,说他是利用了数据集本身的某种特殊结构在断章取义。
  第二,不能太复杂。
  如果脚本写得花里胡哨,依赖了一堆奇形怪状的库,对方的工程师在覆核时光是配环境就要折腾半天,覆核流程一拖,事情就容易被冷处理。
  第三,必须锁死隨机种子。
  任何一个浮点数的微小波动,都可能被对方技术组归因於环境差异,进而拖慢覆核流程。
  江临盯著空白的代码窗口,思考了两分钟,然后开始动手,用numpy生成了一段由两个不同分布拼接而成的隨机时间序列。
  前八十个数据点,服从均值为零、標准差为一的正態分布,用来模擬训练窗口里平稳的市场行情。
  后二十个数据点,被他人为地注入了几个三倍標准差以上的极端值,用来模擬测试窗口里突然出现的异常事件。
  整个数据构造过程,不超过十行代码。
  隨机种子被锁定为42。
  为了避免隨机数生成器版本差异,他乾脆刪除了隨机生成过程,直接把一组最小合成序列硬编码进脚本。
  数字没有任何金融含义,只用於证明一个数学事实。
  测试窗参与標准化,会系统性压低测试窗內极端值的异常分数。
  数据准备好后,他在下方写了两个对照函数。
  第一个函数叫leaked_scaler,完全照搬baseline第六十七行的逻辑。
  把训练窗和测试窗合併,计算全局均值和全局標准差,然后做標准化。
  第二个函数叫causal_scaler,严格遵守时间因果律。
  只用训练窗的均值和標准差,去標准化测试窗。
  然后,他让两个函数分別对同一份合成数据进行处理,把標准化之后的异常分数列印出来。
  最后再加一行matplotlib画图代码,把两组结果叠在同一张图上。
  代码总长不到四十行。
  江临点击运行。
  不到一秒钟,屏幕上跳出了那张对照图。
  跟之前用真实数据跑出来的结果几乎一模一样。 ↑返回顶部↑

章节目录