Извлечение шаблонов из данных журнала устройства

Я работаю над проектом, в котором мы должны извлечь шаблоны (поведение пользователя) из данных журнала устройства. Журнал устройств содержит различные действия устройства с отметкой времени, например, когда устройства были включены или когда они были выключены.

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).

  • Дуги в байесовской сети дадут шаблоны/зависимости между различными устройствами.

    Это правильный подход??

Изменить: хронологический порядок между устройствами имеет значение.


person user3689126    schedule 18.06.2015    source источник
comment
Для вас важен хронологический порядок?   -  person Itay    schedule 18.06.2015
comment
Ага!! хронологический порядок имеет значение. Моя цель - извлечь правила из данных. В приведенном выше примере, когда пользователь входит в комнату. Сначала он включает свет, а затем включает вентилятор. Поэтому, основываясь на приведенной выше информации, мое правило будет действовать всякий раз, когда пользователь входит в комнату, и если он включает свет, вентилятор должен включаться автоматически.   -  person user3689126    schedule 18.06.2015


Ответы (1)


Это правильный подход?

Существует много возможных подходов, но вот очень простой и эффективный, который подходит для данной области:

Учитывая характер приложения, хронологический порядок на самом деле не имеет значения, не имеет значения, включается ли Fan до Light, например.

Также учитывая, что вы можете иметь, например. датчик движения для запуска процедуры, которая считывает показания датчиков и, возможно, периодическую проверку температуры, вы можете использовать приведенную ниже сеть, чтобы воздействовать на извлеченные шаблоны (нет необходимости усложнять ее хронологическим порядком и отслеживанием событий, мы извлекаем данные, чтобы действовать по факту, и порядок событий в этом домене не интересен)

Например: Когда человек входит в комнату. Сначала он включает свет, а затем включает вентилятор или Всякий раз, когда температура ниже 20°С, он выключает кондиционер.

Журнал необработанных устройств может выглядеть примерно так, 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
person bakkal    schedule 18.06.2015
comment
Но мы не знаем зависимости между устройствами заранее, они будут разными для каждого пользователя. Мы должны узнать зависимости из самих данных. Кроме того, в будущем давайте предположим, что пользователь включает вентилятор независимо от температуры, тогда сеть должна интерпретировать это поведение, и граница между вентилятором и температурой должна быть удалена. По сути, я говорю об адаптивной байесовской сети, которая автоматически подстраивается под себя. к данным. - person user3689126; 18.06.2015
comment
Кроме того, хронологический порядок имеет значение. - person user3689126; 18.06.2015
comment
Это важно, например. в промышленном процессе, в комнатных приборах не имеет значения, включаете ли вы сначала свет, а затем вентилятор или наоборот, кондиционер в основном будет зависеть от температуры/влажности, а не в этом порядке. Любая выкопанная хронологическая закономерность будет личной особенности, а не функциональные шаблоны, которые вы хотите в автоматизации - person bakkal; 18.06.2015
comment
В порядке!! но как узнать зависимости, используя данные. Предположим, что мы ничего не знаем и хотим узнать зависимости из самих данных. Подобно тому, как поведение переменного тока (вкл/выкл) будет зависеть только от температуры и влажности и ни от чего другого. Предположим, что данные о температуре и влажности присутствуют в журнале устройства. - person user3689126; 18.06.2015
comment
Наивный байесовский подход не чувствителен к нерелевантным функциям/входам, поэтому, например. если вы посмотрите на мою первую необработанную таблицу, включающую все переменные, и попытаетесь предсказать AC, при достаточном количестве данных она поймет, что некоторые входные данные не очень важны или совершенно неуместны. - person bakkal; 18.06.2015
comment
Я планирую использовать Weka для изучения структуры байесовской сети. - person user3689126; 18.06.2015
comment
Использование наивного Байеса!! - Как мы можем узнать, какие входные данные важны, а какие нет? - person user3689126; 18.06.2015