一、2021中兴捧月杯算法赛
本次比赛我参加的是迪杰斯特拉门派,题目是人口流量预测。最终成绩:西北区域优胜奖,38/500,初赛全国前50可进入复赛,获得区域优胜,然后组织面试,根据面试结果,大概15人左右可进入全国总决赛。总体来说,中兴算法赛的难度不是很大(但想做得好冲击国奖还是很有难度),且可获得很多招聘机会,非常推荐大家参加。
初赛一阶段
给定训练数据集(传感器ID,日期,流量),测试数据集(传感器ID,日期(后91天)),完成流量预测任务。
其实这个赛题的难度就在于数据处理方面,有的传感器可能损坏或者出现测量噪声,数据可能缺失或者异常,而且提供的特征只有ID号和日期,这都增加了比赛的难度。
初赛我利用决策树和随机森林作了很多尝试,有效果提升,但不够好,LGB和XGB出现了很差的效果,而且一直不知道什么原因(可能特征太少?)。最后还是5天的滑动平均效果最好。。。
初赛二阶段
初赛二阶段其实和初赛一阶段差不多,就是增加了传感器和数据量,总数据量好像在千万级别。
这一阶段我做了更多特征工程的工作,直接将当时的笔记搬过来:
一、 数据处理
1.1预处理
初赛第二阶段的数据较第一阶段增加了ID数目和数据量。经检查,没有发现重复值、缺失值,只发现三行数据的“value”值大于100,视为异常值,直接删除。
1.2构造特征
初始特征:id(1)
年月日特征(4)
累积天数特征(6)
周几特征(7)
季节特征(8)
年月周one-hot(29)
周末特征(30)
上中下旬特征及one-hot(34)
月份,星期组合特征(37)
将滑动平均值也作为特征:
4天滑动平均:roll4_last
特征归一化
除此之外,尝试过7、14、28天的滑动均值,平均流量,均值分箱等特征,但效果均不好;
1.3划分数据集
按时间序列划分训练集、测试集,训练集最大是第715天(以2017-1-1为起始),以91天作为验证集,则[625:]为验证集,不足的划分到训练集里面!
二、 模型训练
2.1 滑动均值baseline
以4天为窗口对每个ID作滑动均值,并将每个ID的最后一天的滑动均值roll4_last作为赛题测试集的预测值:
在自己的验证集得分为68.914分,在赛题测试集上得分为62.865分。
2.2 基于树模型
(1)基于所有构造的特征,不进行任何处理效果很差
(2)利用决策树,挑选特征,在赛题测试集上可以取得61分
(3)利用PCA+LGBM,在自己验证集上得分58,在赛题测试集上效果不好
2.3 其他尝试
(1)注意到value值的严重偏态分布,使用对数变换、boxcox变换,效果有微弱提升,但不明显;
(2)注意到赛题评分的20%误差,尝试修改损失函数权重,使大于20%误差的梯度加大,但结果也无明显提升;
(3)根据每个ID的平均流量来划分区域,分区域预测:
ave_value > 80 : 看最后一天是否是100,是则输出100,不是则输出nan
43 < ave_value <= 80
17 < ave_value <= 43
10 < ave_value <= 17
5 < ave_value <= 10
1 < ave_value <= 5
0 < ave_value <= 1
ave_value == 0 : 输出nan
ave_value == -1 :
效果也无提升。
复赛
复赛采取线上面试的形式,两个面试官,一个负责询问比赛建模过程,另一个负责问其他方面。
总结
这个题的数据有点变态,以后在数据处理、特征工程上还要下很大功夫。
二、2021模面大赛
本次模拟面试赛旨在通过提前模拟面试,提高同学们的面试技巧与能力,获奖者还可提前获得校招直通终面的资格。我本来报名了,但后来由于时间安排和其它原因没有参赛,全程只听了第一场宣讲讲座,有一个交大的大学长作了关于面试技巧的分享,个人觉得有所收获,现把它总结如下,希望对明年的自己和校招的朋友们有所帮助。
标题:面试“十问”
1.简历和面试的关系是什么?
简历是为了获得面试资格,针对不同的求职岗位,简历需要具有针对性,每份简历为不同公司独家定制。
2.面试的核心逻辑是什么?
仔细了解岗位描述,思考公司需要什么样的人?我就是你想要的人,我做好了哪些准备,所以我来面试。
3.面试的第一个问题是什么?
自我介绍,有一个重点:我这次来应聘什么岗位,我很愿意加入!
4.面试的最后一个问题?
反问环节,注意你的面试官是负责专业面的,不要问薪资这类HR的问题,通常比较喜欢回答的是入职之后的培训问题和晋升机制相关问题。
5.应该如何介绍自己的项目?
逻辑:什么项目?在其中扮演什么角色?使用什么软件、工具、技巧、语言?取得了什么收获?注意最好有量化数据!
6.以何种心态、姿态面对考官?
不卑不亢、破釜沉舟,注意压力面试问题。
7.群体面试如何应对?
技术类面试,一般没有“群面”(无领导面试)。
8.如何回答压根就不会的问题?
(1)勇敢承认自己不会;(2)我认为…,我猜想…,尝试解决问题,尝试给出思路…;(3)反客为主,虽然我不会…,但我在另一个方面…比较强。
9.面试中我注意过自己的礼仪吗?
老师问了问题,思考几秒再作回答,以表稳重。
10.我准备好了吗?