标记时间序列数据集

数据挖掘 机器学习 Python 时间序列 数据 数据分析
2022-03-02 19:00:41

我在一次采访中被问到这个我没有破解。

您将获得总(汇总)功耗数据,以及三个家庭的电视功耗数据。每个家庭都有一天的数据。任务一:利用电视瞬时功耗数据,识别电视“开机”的时间。请注意,某些电视可能具有待机模式。任务 2:使用所有给定的数据,设计一个分类器来识别电视“打开”的时间。您可能还想训练和测试您设计的分类器。经过训练的分类器不应将 TV 瞬时功率作为输入。请提供尝试任务 1 和 2 的脚本。请不要提供没有解释的脚本。

附加信息:附件 .csv 文件中的数据格式:“House”列表示它是哪个房子,范围从 1 到 3。“Time”列表示时间戳。“TV”一栏表示电视机的瞬时功耗。“Agg”列表示总(合计)瞬时功耗。采样率为 1/60 Hz。

我的提交在这里。

我没有收到雇主的任何反馈,我不知道出了什么问题。请让我知道您对可以做得更好的地方的想法。

1个回答

这里有一些反馈/提示/技巧/意见:

问题设置

包括需求分析。必须决定系统/解决方案应该如何工作,如何知道我们做得如何,然后如何到达那里。

模型评估。

有一种定量的方法来评估我们的模型性能是非常可取的。为此,我们需要一些标记数据。计算每所房屋的 ON 事件(给定假设)的数量非常快。房子1、4次。房子2、3次。房子3、2次。那么至少我们可以将其用作评估指标。还可以标记数据集中的时间以计算开启时间的百分比。这将是一个更细粒度/更精确的评估指标。最强的评估是检查每个事件时间是否也是正确的(在一定的公差范围内)。

概括

在 N 台电视/房屋上训练的模型也将适用于看不见的房屋。非常理想,因为允许将相同的模型用于所有房屋,包括未来的房屋。

出于这个原因,一个应该做的可能是按 house 分组的交叉验证。可能还想使用时间序列拆分,但在这么小的数据集上有点困难。

系统行为假设

我们假设Power(ON) >> Power(Standby) > Power(Off).

但是,每台电视可能具有不同的功率级别,以及三个级别之间的差异/比率。不同的房屋在打开/关闭时也可能具有不同的行为模式。

最少准时。

假设/设置电视开/关的最短时间是合理的。可以从数据中得知,也可以根据您对电视的了解进行设置。也许10秒可以吗?

技术反馈

EDA

真的错过了功率水平的直方图!

去噪

KNearestNeighbours 对此过于复杂/固执己见。运行平均值或运行中位数会更合适。

分类器

GradientBoostingClassifier 很复杂。你有一个单一的特征和少量的数据。

GaussianMixtureModel 非常相关,因为这是隐藏状态和转换的经典案例。但是,仍然不清楚复杂性是否合理 - 即问题是否不能仅通过与状态无关的阈值来解决

报告反馈

您的笔记本表明正在进行大量工作,它不具备报告的质量。当然,如果你是现场、现场或在非常紧迫的期限内完成的,那是很自然的。但如果你有几个小时来完成这项任务,我希望你的笔记本更干净。

  • 介绍应该定义/重新陈述问题。使报告是独立的
  • 探索性数据分析部分应该在模型之前。问题 -> 数据探索 -> 发现。
  • 应该删除所有不感兴趣的发现或探索!
  • 全局变量使用少,函数使用合理。模型应在适当的情况下使用管道
  • 使用 pandas 时间序列功能。所有时间序列图都应该在轴上有时间!
  • 在 EDA 和模型、结果之后,然后是讨论/结论
  • 您可能还希望将最重要的发现/结论汇总在顶部