从设备日志数据中提取模式

时间:2015-06-18 04:31:30

标签: machine-learning pattern-recognition bayesian-networks

我正在开发一个项目,我们必须从设备日志数据中提取模式(用户行为)。设备日志包含不同的设备操作,其时间戳与设备打开或关闭时的时间戳相同。

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.

我正在考虑使用贝叶斯网络来提取这些模式。

  • 从数据中学习贝叶斯网络(使用Weka或Netica)。
  • 贝叶斯网络中的Arcs将在不同设备之间提供模式/依赖关系。

    这是正确的做法吗?

编辑:设备之间的时间顺序很重要。

1 个答案:

答案 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,如果有足够的数据,它会理解一些输入不是很重要或完全不相关

或者,如果您事先了解LightFanAC所依赖的内容,例如我们知道Light不会依赖Temperature,而FanAC并不关心Light是否已启用(他们)即使这个人正在睡觉,也能操作,所以你可以将其分解如下:

enter image description here

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