354. ASHRAE - Great Energy Predictor III | ashrae-energy-prediction
由于我们仍在等待私人排行榜的发布,我决定分享我们的解决方案,该方案使我们在公开排行榜上获得了第40名。
祝大家阅读愉快,祝好运伴随 Shakeup,祝大家新年快乐。
在本次比赛中,最大的分数提升得益于数据清洗。有许多训练样本可能需要被移除。例如,building_id 从 0 到 104 的建筑,在 2016 年 1 月 1 日至 2016 年 5 月 20 日期间,读数全为 0(或几乎为 0)。因此,所有这些样本都应从训练集中移除。

某些建筑在中间有可疑的 0 读数,例如 building_id 1066。

移除数据的代码:
"not (building_id == 1066 & meter == 0 & timestamp >= "2016-02-13 20:00:00" & timestamp <= "2016-02-29 11:00:00")"
另一个例子 - building_id 1250 & meter 2。在 12 月中旬之前,其读数全为 0。所以我的推测是该类型的仪表在此之前未运行,而是从 12 月开始的。基于这个推测,少量的非零数据非常有价值,特别是因为其读数非常高(大约 8000)。

移除数据的代码:
"not (building_id == 1250 & meter == 2 & timestamp < "2016-12-21 16:00:00")"
我使用了我在这篇帖子中的图表来直观地了解哪些读数可能被移除。
总的来说,我们的数据清洗查询文件包含 102 行。这包括训练集和泄露数据集。是的,我们确实清洗了泄露数据并将其用作训练样本。
来自 Half and half 的 2 折交叉验证策略表现非常好。但由于它只是简单地将所有数据从中间分开,因此存在缺点,因为某些建筑的样本仅从 6 月、7 月甚至 11 月开始。所以它们只会出现在一个折中。
所以我创建了一个稍微不同的策略 —— 仍然使用对半分,但不是针对整个训练集,而是针对其中每个建筑的每个仪表。换句话说 —— 如果某建筑仅有 6 个月的读数,从 7 月开始,那么第 1 折将包含从 7 月到 9 月的所有读数,第 2 折将包含从 9 月到 12 月的读数。
下面是一个示例图片。请注意,building_id 555 的数据仅从 7 月开始。