关注我的公众号YueTan进行交流探讨

前言

之前的文章介绍过数据敏感度]。

对数据的认识和解读是高质量的完成任务的关键,因为本篇通过实例讲述如何通过对数据的认识来提高模型的精度。

基本步骤:

  • 了解数据
  • 猜想原因
  • 根据原因确定模型优化方向

作为一个到了被优化年纪才开始邯郸学步,从print(“Hello World”)开始学起的人自然深知其艰辛,所以尽量深入浅出的复述出来,是对自己的一个复盘,也很高兴看到如今的年轻人都如此厉害。

这里将从实际例子出发,以天池的AI earth气候预测为例,手把手、心连心的带你入门天池竞赛Top。很多比赛中优秀的Top选手都会分享其方案,但看过很多方案后,我们往往还是做不好一个比赛。因为很多关键信息并没有完全展示出来,就是方案中的优化为什么这么做?怎么想到的?

从众多实验中获得灵感,找出主要矛盾点。

做过这个比赛的都知道,最让人烦躁的莫过于线上、线下巨大的不确定性。我的baseline就是线下80分、线上22了。面对这种状况,一方面当然是不断优化验证方法,尽量做好线上线下同步;另一方面就是从数据中蕴含的道理出手,由数据给出优化方向不断尝试,而不是盲目的想着乱拳打死老师傅。

实例

使用的baseline就是我之前文章的22分baseline,不过我后来好不容易用Tensorflow复现出来的只有20.8分了,就再次基础上进行各种尝试了。自己开源后,好几周都搞不过开源也是很尴尬。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HiaqsxxK-1674034087096)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4c6ce2a7-2a21-43ea-92cb-52d85aebed71/Untitled.png)]

主要的优化方向:

  • 数据(如何选取训练数据、验证数据)
  • 特征(如何做好特征抽取、转化、筛选)
  • 模型(模型结构、优化方法、损失函数等)
  • 验证
  • 后处理(包括模型融合、TTA等)

对于时间序列问题,最最重要的是保持一个学习的心态去尝试,否则体会了太多大起大落后可能心灰意懒。尤其这道题,数据量不大感觉非常需要运气。

首先,了解数据的基本类型和结构:

  • 基本的时空数据,包含时间和空间关系
  • 特征变量有4个(sst t300 ua va)、目标变量NINO3.4
  • 根据12个月的历史观测值预测未来24个月
  • 包含102年的soda、和更多的模拟值cmip

由于任务的目标还是预测真实观测值,所以首先探索一下真实观测数据(SODA)的趋势,数据时间粒度为月,共100年所以有1200个点,其整体趋势如下图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4pmoNizr-1674034087097)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4d9d7f89-f9ac-4bf6-9829-fc77ae4534de/Untitled.png)]

可以看出,200之前相对平稳、只有一个大波动超过3。200之后保持一个震荡趋势,基本维持在-2到2。

(secret: 发现了不应该发现的东西,缺失的nino3.4是1973年以后的,也就是线上测试集)

时间序列要多研究其趋势性和周期性,按年和月的趋势分别如图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gfs4MUzK-1674034087097)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/51d8b1a5-3bbf-4258-99db-fa62223f9a07/Untitled.png)]

按年的规律显示,厄尔尼诺现象的周期确实不是按自然年的,而是不一定几年为一个周期,今年低可能明年也低、也可能明年一下就涨上去了。

乍一看,本题的出题就不是很合理啊,因为测试最多只能用1年的数据。针对年的趋势

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66SSnJEr-1674034087097)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d5c2dfc1-0eed-4df2-b3de-708367ef8ae9/Untitled.png)]

按月竟然是有规律的,这种sine、cose类曲线往往代表了其周期性。不过仔细看数据的波动大致在-2到2之间,按月的波动只有0.004,因此规律虽然有,但影响其实不大。乍一看,有规律,盲生发现了华点的感觉;再仔细一看,没什么软用嘛,差距那么小;再再仔细一看,既然呈现了这种正弦曲线的感觉,总是有点东西的;再再再结合实际数据看一眼,就会发现每年这种周期随机性,但仍然是有规律的。

这一点很关键吧,半年一个周期也太短了,事实应该是更久的一个周期,周期也具有随机性,不同随机性叠加后产生了如图的效果。

想象一个这个所谓的厄尔尼诺异常指标,其实对应的是海水异常温度sea surface temperature anomaly。虽然是赤道附近的温度,带一些周期性也是可以理解。虽然这个好像夏天和冬天低、春天和秋天高。

得到了数据的认识(按月的周期性)后,就开始应用了。决定从两个角度进行尝试

  • 尝试一:月的平均值作为特征进行输入、或者月份本身作为特征

经过一番代码编写工作后,

  • 尝试二:每个月的目标改为预测真实值-月平均值

又是一番代码之后,

baseline中其实是用模拟值进行训练。这些模拟值可以想像成一堆微分方程,这些方程代表了海洋、大气的热和流体现象,系统模拟之后得到的结果。比如最出名的蝴蝶效应,就是发现了微小的初始值差异会导致结果完全不同。因此模拟值给了不同模式下的很多值,不理解原理的话像我一样,当成很多平行宇宙中的观测值就好了。

包含多个模式共4647年的cmip数据整体趋势如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uggr9CEx-1674034087098)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/487fa673-219f-4555-b7b6-ac613194ee50/Screen_Shot_2021-03-03_at_11.18.03_PM.png)]

首先可以注意到的是真实数据中基本在-2到2震荡,而且已知线上测试的都是真实观测。模拟数据中存在一些在-3到4震荡的月份,如果删除这些月份的数据结果会如何呢。这里就要区分工作和比赛的区别了,工作中这种问题其实是开放的,要根据线上真实场景的数据分布来灵活决定,比赛中已经明确了那一百多个例子就是用来决定成绩的。虽然早说过时间序列不能太在意成绩,但也不能太佛系了。

把soda的分布和cmip的分布画在一起的话,可以看到真实观测值更集中,也就是方差更小一些。同时整体分布更偏右一些,这预示着从cmip训练出的值加一个小的常数可能可以用来提分。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fl2cNwah-1674034087098)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5a53f19e-8cdb-4282-bc38-2a368cc87a4f/Screen_Shot_2021-02-27_at_9.48.40_PM.png)]

这里是二者之间label的关系。可以考虑进行的尝试

  • 尝试一:只截取soda中常见范围的cmip进行训练,[-1.5652~ 2.0985]二者分别为其1%~99%百分位

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L5lxmNeu-1674034087098)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f1d2cd7f-4db4-4321-8612-e6d4a4a54545/Screen_Shot_2021-02-28_at_12.04.30_PM.png)]

分数降了也是

  • 尝试二:将cmip训练的模型,预测时都加上0.04。0.04是二者中位数的差

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NtUNuVYO-1674034087099)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/501adc4c-7699-41af-b448-40f2c75e0e44/Screen_Shot_2021-02-28_at_3.06.12_PM.png)]

接着研究soda和cmip特征之间的关系。首先要注意到的现象是NA值。而且所有的真实观测值soda中不存在缺失值,但cmip中存在,据说是一些模拟无法得出陆地的情况,所以可以画出来看一看了解数据。

由于对机理知识不懂,所以作为外行人这里并不知道陆地上的这些参数是否会影响到nino现象。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ncTEb64o-1674034087099)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1a7234e3-d528-40b6-b185-e3bb3518fa0d/Screen_Shot_2021-02-27_at_11.04.40_PM.png)]

首先听说存在NA值、并且这些NA值是陆地是从群里听说的。自己画出来才有了更深的感受,首先就是sst、t300、ua、va几个观测值的中的缺失情况并不相同,再者就是cmip由多个模式组合在一起,看起来是有几个模式是存在缺失的,几个模式也并不相同,而且这几个模式都是cmip6里的。

  • 尝试一:把含NA的都去掉
  • 尝试二:把ua和va去掉
  • 尝试三:填充缺失值,baseline中的方法是填充为0
  • 尝试四:把所有数据的陆地数值都mask掉

说到任务特点就不得不提到时间和空间。可以沿着这条线路继续探讨时空关系。NINO3.4指标其实特指纬度-5 ~ 5,经度190 ~ 240的平均海水温度异常。但训练数据给出了更多经纬度的数据,而且用全量数据的效果还不错。猜想的原因是一些空间的规律会转化为时间的未来,也就是说现在比较远的地方的温度在未来会随着洋流漂到NINO3.4的区域里,从而根据空间关系来预测时间上的未来。

画图验证一下是否正确。

然后如何将规律应用到模型中呢?

  • 尝试一: 模型输入只采用nino3.4区域里的。这一步其实是去掉了空间的关系,按道理可能会降分。根据降分的程度可以估计出空间信息的重要程度。

baseline分数从20.8降为15.4。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BHVD9Qks-1674034087099)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/099befaa-294d-476c-a1e9-a870c1b986b2/Screen_Shot_2021-02-27_at_8.39.18_PM.png)]

  • 尝试二:将目标区域的序列输出与整体区域的序列输出concat到一起。
  • 尝试三:进一步推想,预测第一个月的时候关注的空间可能就是NINO3.4很近的区域里,而预测第24个月的时候除了时间周期外,也需要关注的是现在离nino3.4较远的趋势。所以需要不同目标月的模型提取空间特征的时候要灵活。现在的模型对1-24目标月采用了同样参数的CNN进行空间特征提取,这里是有优化空间的。
  • 尝试三.1: 最容易想到的其实是针对1-24个月训练24个独立模型。针对这种方式不妨一个月一个月的建模,为了看有没有效果。不过效果较差,直接降为-18分,其实训练的时候多少能看出来点眉目,就是不同模型之间的损失函数几乎都在完全不同的程度,证明各自几乎都在独立区间里,由于前后时间肯定是有关联的,一个loss在0.4一个完全在1.8就丢掉了这种关系。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TA5II2TY-1674034087099)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e575c404-7c87-4efd-ba8b-0fa62b6f09a8/Screen_Shot_2021-02-28_at_10.42.44_PM.png)]

为了既利用好时间关系也利用好空间关系,不妨用dynamic decoding的方式预测出24个月。再试一试

另一个值得注意的现象是NA值。而且所有的实验值soda中不存在缺失值,但cmip中存在,据说是一些模拟无法得出陆地的情况,所以可以画出来看一看了解数据。

从训练集和测试集的分布。

不采用全量的数据集,而是随机取12个月的采样。4个模型的结果进行平均,成绩有一些提高。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IwqwC3Sv-1674034087099)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e2005eeb-e78f-4dbf-9ddb-b94d11ca8cb9/Screen_Shot_2021-02-28_at_11.15.37_PM.png)]

当无法确定有效的验证方式,机理上可以提高的指的一试;或者类型较相似的又提高了内部的可以一试。

fine tune

提高了0.5

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O2LhKxBx-1674034087100)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/598de344-58ff-40cc-b7bd-a48fdb300722/Screen_Shot_2021-03-02_at_10.35.38_PM.png)]

把filter0-99去掉以后,直接从32降到20分,WTF。有可能是因为早停的影响,13个epoch下降到4个epoch

数据发现:

NINO指标离谱的大或者小的,ua和va的数值变化较大

数据上,一直一位计算指标metrics是不是写错了,既然官方觉得没问题,

恰好再做一次cross validation的时候,发现指标竟然是30多,也就是和排行榜上我的分数接近。当然我去提交了一下,一种暴雷的感觉

把本地验证的数据集记录下来后发现问题并不简单

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tp6xHiNK-1674034087100)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bc0eb713-cb9f-4167-98cf-6d536e3799e3/Screen_Shot_2021-03-10_at_3.57.59_PM.png)]

而且,月份的周期性更强一些

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nKGFU7rr-1674034087100)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0e5b0a9b-94e0-4d22-84aa-418ead3b6a46/Screen_Shot_2021-03-10_at_3.55.53_PM.png)]

以上似乎是弯路

研究月份之间的关系的时候,发现相邻月份的diff也没啥规律。除了1月,一月很容易发生什么吗

更改数据范围后,分数越来越低。证明线上测试集确实和之前的soda不大一样,

例如同样一个参数,怎样调整才是提分那个呢?

我原本的dropout是0.2,我一开始想调成0.15,线下验证也提高了。但是转头一想,前几次线下提高的线上都掉分了;不妨反方向思考一下,就调整成0.22了,线下掉分。提高后就出去走了一会,感觉意外的往上shake反而让自己有了压力。回来后,果然有点效果,从41.97升到了42.18。

那继续试一下dropout到0.25 \0.26试试,线下。这种逆向思维实在是很功利和无奈啊。

数据挖掘:提升数据敏感度相关推荐

  1. 如何提升数据敏感度、数据分析思维、数据分析能力?

    有朋友私信我怎么样才能提升自己的数据分析思维.分析能力呢?这个问题比较难回答,是一个很系统性的问题.对于这种很系统性的问题,我们往往就要找到一个切入点进行切入回答,再逐步形成互相有逻辑关联的框架,最后 ...

  2. 什么是数据敏感度?怎么培养数据敏感度?

    前几天,群里小伙伴提问什么是数据敏感度? 提这个问题是因为她的主管自诩数据敏感度很高,做为下属的她想知道到底什么是数据敏感度,怎么培养数据敏感度. 1.什么是数据敏感度? 数据敏感度高的人,看到数字, ...

  3. 什么是数据敏感度!怎么培养数据敏感度?

    前几天,有小伙伴提问什么是数据敏感度? 提这个问题是因为她的主管自诩数据敏感度很高,做为下属的她想知道到底什么是数据敏感度,怎么培养数据敏感度. 1.什么是数据敏感度? 数据敏感度高的人,看到数字,两 ...

  4. 优秀的数据敏感度应该如何培养?

    来源:中国统计网 大家有没有特别羡慕和害怕过这种人,他能一眼看出你做的PPT里面的数据异常,随时能提出一个数据证明你的小结论有问题,然后以一个数据问题迅速推翻你整个报告的结论,结果就是你做了整整一个月 ...

  5. 数据分析的必备能力:数据敏感度是什么,应该怎样培养?

    也许是看到数据的价值随着信息化.数字化的推行愈发重要,整个社会都对数据的价值有了新的认识.而对数据本身就很关注的商业世界更是如此,各行各业的企业已经看出了数据能够带给公司的价值,开始寻求通过数据分析来 ...

  6. 蓬莱小课:什么是数据敏感度?怎么培养数据敏感度?

    1.什么是数据敏感度? 数据敏感度高的人,看到数字,两眼冒光,早已飞速纵身跳到3米外,甚至10米外,脑子里在观察.找问题.找机会,喜不自禁或者哀叹不喋或者沉着淡定. 对数据不敏感的人,看到数字,则晃晃 ...

  7. 5招训练你的数据敏感度,数据高手都在用

    真正的数据分析大神是怎样的?有人说能轻松玩转各种分析工具,有人说能从海量数据中找到关联,有人说能一眼识别出报告中的数据异常,还有人说能够撰写一份经典的数据分析报告. 其实对于一个数据大神,这些都是必备 ...

  8. 数据分析、数据挖掘、数据运营有啥区别?【通俗版】

    作者:陈老师 个人公众号:接地气学堂 陈老师新课:商业分析全攻略 https://edu.hellobi.com/course/308 用数据分析方法解决商业问题,目前已经100+学员加入!5星好评. ...

  9. 数据分析、数据挖掘、数据运营有啥区别?

    某次在医院陪护家人做手术,和医生..化验师.护士相处一整周,突然发现,这个关系跟数据分析.数据挖掘.数据运营非常像呀!特此mark,让新同学快速了解一下. 大家都知道,要当医生需要读一车的书,至少博士 ...

最新文章

  1. 从化工行业转到IT行业
  2. 积木履带机器人编程手册_学会编程,寓教于乐!ONEBOT 反履机甲图赏
  3. 研发团队资源成本优化实践
  4. 50个Android开发人员必备UI效果源码[转载]
  5. C# SQLite事务操作方法分析
  6. luogu P1880 [NOI1995]石子合并
  7. Golang 垃圾回收机制
  8. 计算机专业英语第07章,计算机专业英语 -第7章1.ppt
  9. Arduino的串口结束符及串口缓冲区
  10. linux大内存拷贝优化,Linux 下基础设施及系统网络优化
  11. 无法连接NVIDIA驱动:NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver
  12. java构造方法 隐含三步_Java入门总结--------类和对象关系以及构造方法
  13. HOHO 拿了個小嘉獎 Happy一下 可惜過年可能被留下...痛苦
  14. 消息系统Kafka介绍
  15. Header First设计模式学习笔记——单例模式
  16. xcode 此工作区的项目包含使用Swift 3.x开发的源代码。此版本的Xcode不支持生成或迁移Swift 3.x目标。使用Xcode 10.1将代码迁移到Swift 4。
  17. Impossible WHERE noticed after reading const tables
  18. 从零开始部署深信服EDR
  19. JZOJ 4250. 【五校联考7day1附加题】路径(折半搜索)
  20. JavaBean的书写规范

热门文章

  1. Analysis of IMEI numbers IMEI 检查工具 LAC和CID 定位
  2. 解决windows 10无法打开.hlp帮助文件的问题
  3. 【docker】docker对美元符号的处理
  4. C#,T检验(T -Test)的算法与源代码
  5. Transformer将在AI领域一统天下?现在下结论还为时过早
  6. 【考研英语-基础-长难句】并列句
  7. C语言实现三子棋(井字棋)小游戏
  8. 运动会分数、积分统计程序
  9. 3G移植(中兴MG3732和MC8640)
  10. android11内置壁纸,iPhone11官方自带原生高清壁纸