科大讯飞初赛总结——温室温度预测挑战赛

第一次参加科大讯飞比赛,抱着试试的态度坚持到了最后,很荣幸可以晋级复赛。作为一名算法小白(只接触过简单的机器学习模型),在比赛过程中只能一点点的尝试,为了积累经验,将尝试的过程总结一下(看待问题可能比较浅显,请多指教,谢谢大家):

比赛简介:基于提供的样本构建模型,预测温室温度变化情况。特征包括:温室内的湿度、气压以及温室外的温度、湿度、气压,标签为温室内的温度。训练集的数据,每1分钟1条数据记录;初赛测试集的数据,每30分钟1条数据记录。

一、第一次尝试

1、缺失值:排序,线性插值(interpolate
2、平稳性检验——非平稳序列,纯随机性检验——非随机
3、取分钟数,发现时间间隔不同,有些分钟没有数据
4、使用时间序列的传统方法 ARIMA
发现:自己对多元时间序列并不熟悉,只是简单的应用,有很多地方可以改进,考虑放弃这种方法,先尝试最简单的线性回归模型

二、线性回归摸索:(——>:表示尝试路径)

1、对缺失值的处理:
全都删除——>先找的同一分钟内的数据,将含有缺失值的数据合并(找重复值,填充nan为0,取重复数据中的最大值,将最大值中的0换为nan,使用ffill填充),每一分钟仅保留一条数据;检验是否还存在缺失值,先将标签列去掉,使用前面的数据填充,再将标签列加上,删除标签列为空值的数据。
2、对异常值的处理(训练集和测试集):(发现气压列数据含有不合理的值:气压只有四百多)
不处理缺失值——>利用箱线图原理(IQR),先将不合理的值找出来,并填充为 nan,之后使用 ffill 填充空值
3、特征选择(训练集和测试集):
求特征与标签之间的相关系数
使用全部特征——>将时间全都去掉(年、月、日、小时、分钟、秒)——>只去掉年、月、日、秒——> 尝试 RFECV 特征选择(效果不好,后期没用)
4、标签处理
直接使用指定标签——>使用指定标签与其中一个特征的差值
5、历史特征(线性回归有改善):
前23条数据的平均值
6、交叉特征(线性回归无改善):
‘温度(室外)’, ‘湿度(室外)’, ‘气压(室外)’, ‘湿度(室内)’, ‘气压(室内)’ 之间两两相除
7、分箱操作(离散化)
KBinsDiscretizer,由于这方面的知识欠缺,而且数据中的数值之间差别并不大,认为分箱操作会影响模型精度,后期没用
8、标准化(线性回归无改善)

三、从线性回归模型扩充为其他模型:(——>:表示尝试路径)

1、SGDRegressor
使用前23条数据的平均值(移动窗口,训练集和测试集均是前23条数据)使用交叉特征(基本特征和历史特征均构造),标准化(比较均值标准差标准化和最小最大值标准化)——> Ridge ——> LightGBM(特征名不能含有中文)(使用全部训练集效果会改善)——> XGBoost ——> CatBoost ——> 融合(平均值融合——>按照分数排序加权融合——>按照距离的倒数(分数排序)加权融合)

2、以 XGBoost 模型为代表摸索:
历史特征——>计算前23条数据的平均值、中值、最大值、最小值(训练集和测试集均是)——>填充训练集数据为每一分钟都有数据——>一天前的同期值,半小时内的统计值,一小时的同期值,一小时的一阶差分,半小时的一阶差分(训练集和测试集)——>用当天的数据填充因 shift 导致的空值(可能是空值太多的原因,效果没有改善)——> 填充时间,训练集和测试集的特征均加上30分钟前的数据(也可能是空值较多的原因,效果无改善)——> 填充时间,训练集计算前30个数据的统计值,测试集计算前一个数据的统计值(效果不好) ——> 不填充时间,训练集计算前23个数据的统计值,测试集计算前一个数据的统计值(平均值、中值、最大值、最小值)(最终选择)——> 多个模型进行距离加权融合

重大错误:比赛结束前几天才发现的错误,幸亏改了——错误将 bfill 理解为 “用前面的数填充”,后期改为了ffill

四、上升空间

1、构造更多的历史统计数据,不局限于均值、中值、最大值、最小值
2、还是认为将训练集中的数据填充为每一分钟的数据,但是怎样填充更好呢?
3、是否还有其他较好的模型可以使用?
4、对很多使用的模型不太熟悉,导致调参过程没有针对性,应该深入了解模型原理,提升训练效果

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值