0%

毕设记录

选毕业设计的时候忙着上班,下手晚了,联系了一堆导师只有一个理我,导师手里题目也不多,想着偷懒选了个算法相关的,《基于大数据的天然气指标异常检测算法实现》,事实证明这看似简单的毕设题目并不省心。本文旨在记录本人毕设期间的心路历程以及一些踩到的坑。

问题定义

大数据在我这个题目的语境里指的是从学长手里搞来的 1 GiB 的天然气表具传感器数据,以 sqlserver 的 bak 形式出现

天然气相关的背景知识无从下手,看起来也没那么重要。

异常检测算法并没有明确给出,导师扔了一堆论文,要求是“多试几个,比一比挑个好的”

第一回合

在一阵拖延之后,我开始干活

  • 想办法把 sqlserver 备份里的数据搞出来

    • 看起来只能下个 Navicat
    • 发现数据库中的异常标签是运维人员通过大于小于的规则搞出来的,全是 false alarm
    • 发现数据中出现了负一千多摄氏度的传感器数据
    • 有温度、压强、流量三个指标,然而有大量3缺1的时间点

看起来不太好搞,这个数据我学个屁,只能 garbage in, garbage out啊,问了一波学长,说是可以添加人造异常。

第二回合

感觉前途灰暗,摸了一大会儿鱼

  • 想一个过得去的solution
    • 翻到一个人做的实验模拟天然气泄漏数据集,但是要成为 IEEE member 才能下,含泪充值,发现人家只有气压数据,还只做了3次实验,直呼上当,但不是不能用
    • 以无监督,TSAD,深度学习为关键词进行搜索,发现今年的深度学习模型能在公共数据集上做到 80 到 90 的 F1,感觉天无绝人之路。
    • 翻到一个人做的实验模拟天然气泄漏数据集,但是要成为 IEEE member 才能下,含泪充值,发现人家只有气压数据,还只做了3次实验,直呼上当
    • 选了一篇用 transformer 的老伦敦论文,发现老伦敦还开源了所有实验用代码(包括一堆baseline的复现),大喜
  • 进行一个 fork

    • 跑通了老伦敦代码
    • 咦,这个怎么跑得这么快?原来老伦敦只用了数据集的一小部分来实验。那我试试别的部分!寄,F1只有60多!
    • 咦,其他模型的代码怎么这么短?让我去查查其他模型的原论文!寄,复现省略了亿点细节!
    • 好奇,对于连续的异常区间模型居然能全标出来,可视化看一下?连续一场区间里只查出几个点!哦,原来 common practice 是用 adjustment 把整个区间标出来啊!那你 tmd 的假阳性和真阳性的比例不就变了吗?这样90多的F1有意义?感觉不如。。。间隔标点
    • 老伦敦不行

第三回合

摸几天鱼,发现有一篇大清的论文放出代码了,我试试

  • 康康大清

    • 跑了一堆公共数据集,发现真的有 90 的 F1,虽然带了 adjustment,但看起来大清nb
  • 人造异常

    • 用三脚猫频谱分析技术结合某篇综述的思路造异常
  • I have an apple! I have a pen!

    • 大清跪得很惨烈,F1 40不到
    • 调个库跑跑老一点算法,半斤八两

寄!

第四回合

时间所剩无几,开始怀疑人生

第五回合

答辩

  • 被老师攻击了太烂的表现,答辩组成员普遍认为我的复现/调参有问题(but 同样的模型在公共数据集猛如虎)(but 调参我尽力了)
  • 有些老师认为人造异常是扯淡,我也不知道扯不扯,我只知道大家都在这么灌,灌个本科学位论文应该问题不大?
  • 有些老师觉得没有工作量
  • 有些老师觉得没有创新点

然后答辩通过了

总结

TSAD💊,AIOps感觉有点扯了。