我正在开发一个项目,我们必须从设备日志数据中提取模式(用户行为)。设备日志包含不同的设备操作,其时间戳与设备打开或关闭时的时间戳相同。
For example:
When a person enters a room. He first switches on the light and then he
switches on the fan or Whenever the temp is less than 20 C, he switches off
the AC.
我正在考虑使用贝叶斯网络来提取这些模式。
贝叶斯网络中的Arcs将在不同设备之间提供模式/依赖关系。
这是正确的做法吗?
编辑:设备之间的时间顺序很重要。
答案 0 :(得分:2)
这是正确的方法吗?
有许多可能的方法,但这里有一个非常简单有效的方法适合该领域:
鉴于应用程序的性质,时间顺序并不重要,如果在Fan
之前Light
被启用,则无关紧要。
另外,你可以有例如一个运动传感器,用于触发读取传感器的程序,也许是定期温度检查,您可以使用下面的网络对提取的模式进行操作(无需按时间顺序和事件跟踪进一步复杂化,我们提取数据进行操作在此域中的事件顺序并不感兴趣)
例如:当一个人进入房间时。他先打开了 然后他打开风扇或每当温度较低时开启 超过20 C,他关闭了AC。
原始设备日志可能看起来像这样,T / F为True / False:
Person in room | Temperature | Light | Fan | AC
-----------------------------------------------
T | 20 | T | T | T
T | 19 | T | T | F
F | 18 | F | F | F
如果有足够的样本,您可以在上面训练模型,例如:朴素贝叶斯对不相关的特征/输入不敏感,例如如果你看看我上面的第一个包含所有变量的原始表并尝试预测AC
,如果有足够的数据,它会理解一些输入不是很重要或完全不相关
或者,如果您事先了解Light
,Fan
和AC
所依赖的内容,例如我们知道Light
不会依赖Temperature
,而Fan
和AC
并不关心Light
是否已启用(他们)即使这个人正在睡觉,也能操作,所以你可以将其分解如下:
Person in Room | Light
----------------------
T | T
F | F
Person in Room | Temperature | Fan
----------------------------------
T | 20 | T
F | 25 | F
Person in room | Temperature | AC
---------------------------------
T | 20 | T
T | 19 | F
F | 20 | F
F | 19 | F