354. ASHRAE - Great Energy Predictor III | ashrae-energy-prediction
终于迎来了一场精彩的比赛!由于数据噪声很大,这并不容易,但我又学到了新的经验。以下是我获得第9名和金牌的解决方案的一些见解。
我的目标之一是在榜单震动中生存下来。一旦发现数据泄露,我决定主要将其用于留出验证。我开始时不使用任何泄露数据进行训练,而是尝试特征工程、不同的模型、不同的时间交叉验证折数,并且仅通过CV + 留出集 + LB(公开榜)结果的相关性来指导我的工作。采用这种策略导致排名很低,这有点令人沮丧,但我知道这最终会有所帮助。在最后两周,我将2017年的泄露数据纳入训练,并保留2018年的泄露数据用于留出验证。
我的解决方案是多个模型的集成(岭回归):
特征非常简单,没有模型超过15个特征,平均为12个:
building_id, meter, site_id, primary_use, week_day, is_holidaysquare_feet, cloud coverage, precip_depth_1_hsquare_feet * floor_countair_temperature 24小时滚动平均值,sea_level_pressure 24小时滚动平均趋势air_temperature 冷度日,每年每建筑每仪表的meter_reading中位数请注意,我的一些模型没有使用 building_id,以尝试更好地泛化。
有几个模型是按仪表分别训练的,其他的则不是。
对于每个模型的CV,我应用了不同的时间分割,分别为x3、x4和x6。
清洗和填补也很重要。对于天气数据,我试图寻找不同的外部来源来填补空白,但这并没有带来任何提升,主要是因为我们不能100%确定 site_id 的位置,而且一些数据(如云量)与训练数据中的不一致。最后,我训练了一个额外的简单LightGBM模型,基于提供的数据来填补缺失数据(类似于这个内核)。对于仪表读数,清洗并不明显,删除零值模式(夏季的电力、热水......)看起来是个好主意,但人们可以注意到这种模式在2017/2018年的泄露数据中也出现了。有些建筑也可能有一些装修时段,这可以解释零值模式。因此,我的每个模型都有不同的零值模式删除策略(仅删除2016年5月之前 site_id = 0 的数据,全部删除,基于持续时间和/或季节的部分删除)。
后处理:无。当我看到顶级解决方案时,我发现这是一个错误。
对于最终提交,我选择了CV/留出集/LB相关性最好的模型,这是一个不错的选择,因为它们在私有LB中得分最高!
哪些方法无效:
感谢组织者、Kaggle和竞争对手带来的这次挑战!