好久好久没有写博客了。。。挺累的,从二月份开始找暑期实习,接着在进行暑期实习,然后马不停蹄地进行秋招,现在总算结束实习,前两天又参加了华为杯数学建模竞赛,感觉接下来就会很轻松了,希望能好好休息休息。这次的比赛还是挺简单的,比起以前参加社会性质的比赛不同,这次不管是从题目还是从要求上都简单几个档次。

1. 数据清洗

2.降维

3.模型训练

4.优化

5.画图

6.结论

1. 数据清洗

说实话,我是挺费解的,看到论坛上好多人都在骂B题数据不对,数据质量差,其实来说,数据整体还算不错,只有几列问题比较大,而且那些列都是异常的大,实际上数值的大小对我们本题影响不大,而且那些异常列并不是大的混乱,他们一般要是异常,都是全部异常,其实这样子的话,信息量就很少了,他们对我们目标贡献值也就会很低,建模过程中特征直接去掉就可以了,毕竟就选了30个特征,原特征有300多个。

以上是针对一些讨论比较激烈的点的一些个人看法。

接下来针对几个讨论的比较多的点说一下个人看法

1. 首先是数据去空,去0,这里我们主要是看极大值极小值和0的交叉,如果0不在极限值或者极大值内,那么说明这是一个空数据,那我们要么是填充,要么是剔除,我们会发现里面有几列就异常了几个数据,我们可以认为这是测量故障,直接用平均值填充就可以了,但是有两列,他们都有16个点位异常,其实我们仔细观察一下数据,可以发现他们0出现的还算有规律,我猜测可能是那种周期性排气,同时我们也要直接对这几列数据做平均,发现为33 ,也就是313数据周围的312 314 数据异常不大,因此我们可以认为其是正确的。就不要进行操作了。这就是对空值的处理

2. 对于极大值和极小值,我觉得这里题目有些问题吧,我们即不能完全剔除,本来数据量就不多,再剔除就没了。。。 所以我采用限幅的办法,但是这里我还是做了一个骚操作,如果表3某一列都超幅值了,我们用表一周围的数据进行填充,这样可以保证我们数据引入的噪声最小。我觉得这么处理的话,模型训练下来mse会降低一些,说明是有效的。

3. 异常值筛选,没啥用吧这个规则。感觉可以忽略。按照我上面这么处理最大值和最小值,然后还有0,改剔除的剔除,改改的改,用这个规则几乎不删除数据,所以我觉得我前面处理的还是很有效果的。

我认为这个数据整体质量还算可以,有点小瑕疵,但是很明显是已经经过几道处理了。从括号有的中文有的英文就可以看出来,那里其实用一个正则就好了。。。毕竟常规操作。

2. 降维

这一步主要是用祖传算法,打比赛的那些降维方法一键降维,什么卡方,IV 都用上,然后再模型融合一下,再用lightGBM进行特征分裂筛选,就ok了,没啥好说的。晒特征,没什么技术含量,都是祖传代码。

3. 模型建立

这里我尝试了三个模型,lgb,线性回归,神经网络,结果是lgb也就比线性回归好了0.002。。。所以我就有点怀疑是不是我降维的时候特征选的太好了,全是线性的。神经网络差一些,mse 0.05。所以这里我们就用线性回归模型,原因嘛,当然是奥卡姆剃刀原则,同时线性回归参数直接获得模型权重,为后面两问打基础

4. 优化

 这一问特别有意思,我也觉得是拉开差距的点吧。这道题我一看到的思路,就是用第三问的模型结果,因为他们是线性的,所以只要根据模型正负号,取极大值或者极小值就可以了。所以一开始我就是这么做的,确实可以找到一些3个变量,让损失降低30 以上。 但是这就带来了一个问题,如果我把所有操作变量都调到最优,我们会发现损失变成负的了。。。这里其实就暗示了我们一个问题。

就是我们的极值的取值范围需要再去寻找。

想了挺久的,在第三天的时候才想到,S的含量在5以下,因此我按照S进行数据幅值的确定新的极值的选定。这个地方思路是怎么来的呢?主要是画了S和RON的图像。

我们从这个图可以看出,在89 到90 这一段, 有一个变量严重影响着S和RON,让S和RON反方向变化。因此想到了用S去限制幅值。而且S最低是3.2,可能因为传感器最少就是3.2吧我觉得。

那么按照S进行建模,一看,损失有点大,到了0.9,感觉要凉凉,后来想到3.2 的幅值,就把预测结果小于3.2的改成3.2,然后一算,还可以,然后我们就这么做了。

接着这道题就迎刃而解了,我们用S去限制最大值和最小值,然后重用我们的第一个模型,这道题就做出来了,哈哈。

还有一个问题,就是如何定义降低了百分之30,我的理解是对整体样本求平均值,然后修改某一个变量,看看整体样本下降了多少。其实我还有一个理解,对某一个变量操作,计算出325个样本中有多少个下降了超过百分之30,我个人觉得都对吧,第二个我没有去验证,我用的是第一个。不过我觉得应该都对,结果出来应该差距不大吧。

5. 绘图

  没什么好说的,按照线性回归的模型,依照我的第四问选出的操作变量和最大值最小值,进行操作,每次操作det个就可以了,然后对133号样本预测,画图就可以

6. 总结

怎么说呢,我觉得这是我参加的最简单的一次建模吧,可能因为有基础,参加过社会上的建模比赛,感觉出题方比较温和,但是看论坛有的老哥火气就比较大,还是要好好接受题目然后再去解决问题,而不是一味的向出题方撒气。

从题目来说,前三问问题不大,第四问是挺有意思的,可惜时间不够,其实这里可以研究几个变量对RON损失的变化,然后再结合S含量,建立非线性模型,但是时间不够了。很可惜。差不多絮絮叨叨就说了这些,主要说一下自己的处理方案和一些感悟吧。

2020华为杯数学建模B题-RON建模 赛后总结与分析的更多相关文章

  1. 第四届蓝桥杯 c/c++真题

    第四届蓝桥杯 c/c++真题 <1>高斯日记 问题 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们 ...

  2. 蓝桥杯java历年真题及答案整理1~20.md

    蓝桥杯java历年真题及答案整理(闭关一个月,呕心沥血整理出来的) 1 算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种.如:给定 A.B.C三个不同的字符,则结果为:A ...

  3. Python解答蓝桥杯省赛真题之从入门到真题(二刷题目一直更新)

    蓝桥刷题 原文链接: https://github.com/libo-sober/LanQiaoCup Python解答蓝桥杯省赛真题之从入门到真题 不同字串 """ 一 ...

  4. python解无忧公主的数学时间编程题001.py

    python解无忧公主的数学时间编程题001.py """ python解无忧公主的数学时间编程题001.py http://mp.weixin.qq.com/s?__b ...

  5. [CF1244C] The Football Season【数学,思维题,枚举】

    Online Judge:Luogu,Codeforces Round #592 (Div. 2) C Label:数学,思维题, 枚举 题目描述 某球队一共打了\(n\)场比赛,总得分为\(p\), ...

  6. 华为开发者大会主题演讲:3D建模服务让内容高效生产

    内容来源:华为开发者大会2021 HMS Core 6 Graphics技术论坛,主题演讲<3D建模服务使能3D内容高效生产>. 演讲嘉宾:华为消费者云服务 AI算法专家 3D建模服务(3 ...

  7. BMZCTF 2020祥云杯到点了

    2020祥云杯到点了 下载附件得到三个word文档,我们打开第一个文档然后将隐藏文字显示出来 得到提示 我们查看属性应该就是日期了我们先把他记录下来 然后打开第二个文档 输入刚刚的密码 在第二个wor ...

  8. (更新中)"华为杯" 武汉大学21级新生程序设计竞赛 非官方题解

    "华为杯" 武汉大学21级新生程序设计竞赛 https://ac.nowcoder.com/acm/contest/31620#question D.和谐之树 思路:披着线段树外皮 ...

  9. python+java蓝桥杯ACM日常算法题训练(一)10基础题

    目录 1.简单的a+b 2.第一个HelloWorld程序! 3.三个数最大值 4.密码破译 5.母牛的故事 6.7.8.9.10 @(这里写自定义目录标题) 算法题训练网站:http://www.d ...

随机推荐

  1. Leetcode 24. Swap Nodes in Pairs(详细图解一看就会)

    题目内容 Given a linked list, swap every two adjacent nodes and return its head. You may not modify the ...

  2. Docker 学习笔记(一)

    Docker 入门 Docker 学习 概述 安装 命令 镜像命令 容器命令 操作命令 Docker 镜像 容器数据卷 DockerFile Docker网络原理 IDEA 整合Docker 单机版D ...

  3. Python爬虫 使用selenium处理动态网页

    对于静态网页,使用requests等库可以很方便的得到它的网页源码,然后提取出想要的信息.但是对于动态网页,情况就要复杂很多,这种页面的源码往往只有一个框架,其内容都是由JavaScript渲染出来的 ...

  4. js中call,apply和bind

    1,首先先做一个定义:每个函数都包含两个非继承的方法:apply()和call(),apply和call这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值,两者唯一的 ...

  5. Cubmap

    视差 Cubmap https://chengkehan.github.io/LocalCubmap.html http://www.manew.com/thread-93923-1-1.html h ...

  6. Shader之溶解效果的几种实现方法

    这里通过 “是否丢弃像素”的2种方法,写2个shader,效果是一样的,也提到了,丢弃某个像素的3种方式. 是否丢弃: 1.通过脚本控制shader变量判断当前是否丢弃像素,需要额外脚本: 2.sha ...

  7. Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储

    一,引言 上一篇文章,我们介绍到在实际项目中系统会产生大量的日志文件,用户上传的头像等等,同时也介绍到可以使用Azure Blob Storage 来存储项目中的一些日志文件,用户头像,用户视频等等. ...

  8. java控制流程(二)

    一.循环结构 有一天你的女朋友让你写一百遍我爱你,你是要一行一行的手写出来,还是利用编程的循环结构写出来? while 语法: 表达式返回的为boolean值 while(表达式){ 需要循环的语句 ...

  9. 聊聊redis单线程为什么能做到高性能和io多路复用到底是个什么鬼

    1:io多路复用epoll  io多路复用简单来说就是一个线程处理多个网络请求 我们知道epoll in 的事件触发是可读了,这个比较好理解,比如一个连接过来,或者一个数据发送过来了,那么in事件就触 ...

  10. 为什么要做一款ERP软件——开源软件诞生7

    技术之外的探讨--第7篇 用日志记录“开源软件”的诞生 赤龙ERP开源地址: 点亮星标,感谢支持,与开发者交流 kzca2000 码云:https://gitee.com/redragon/redra ...