返回列表

40th place Public solution. My part.

354. ASHRAE - Great Energy Predictor III | ashrae-energy-prediction

开始: 2019-10-15 结束: 2019-12-19 双碳与可持续发展 数据算法赛
公开榜第40名解决方案。我的部分。

公开榜第40名解决方案。我的部分。

作者: Roman (Master) | 发布时间: 2019-12-23

由于我们仍在等待私人排行榜的发布,我决定分享我们的解决方案,该方案使我们在公开排行榜上获得了第40名。
祝大家阅读愉快,祝好运伴随 Shakeup,祝大家新年快乐。

数据清洗

在本次比赛中,最大的分数提升得益于数据清洗。有许多训练样本可能需要被移除。例如,building_id 从 0 到 104 的建筑,在 2016 年 1 月 1 日至 2016 年 5 月 20 日期间,读数全为 0(或几乎为 0)。因此,所有这些样本都应从训练集中移除。

Example 1

某些建筑在中间有可疑的 0 读数,例如 building_id 1066。
Example 2
移除数据的代码:
"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)。
Example 3
移除数据的代码:
"not (building_id == 1250 & meter == 2 & timestamp < "2016-12-21 16:00:00")"

我使用了我在这篇帖子中的图表来直观地了解哪些读数可能被移除。

总的来说,我们的数据清洗查询文件包含 102 行。这包括训练集和泄露数据集。是的,我们确实清洗了泄露数据并将其用作训练样本。

交叉验证策略 (CV strategy)

来自 Half and half 的 2 折交叉验证策略表现非常好。但由于它只是简单地将所有数据从中间分开,因此存在缺点,因为某些建筑的样本仅从 6 月、7 月甚至 11 月开始。所以它们只会出现在一个折中。

所以我创建了一个稍微不同的策略 —— 仍然使用对半分,但不是针对整个训练集,而是针对其中每个建筑的每个仪表。换句话说 —— 如果某建筑仅有 6 个月的读数,从 7 月开始,那么第 1 折将包含从 7 月到 9 月的所有读数,第 2 折将包含从 9 月到 12 月的读数。

下面是一个示例图片。请注意,building_id 555 的数据仅从 7 月开始。

同比赛其他方案