Перейти к содержанию
    

Машинное обучение по известному поведению

Народ подскажите, есть ли какие либо алгоритмы или как реализовать такое.

Например человек периодически делает какое-то определенное действие - например, включает и выключает свет. Выполнение/невыполнение этого действия, а также конкретный момент зависит от определенных факторов - дня недели, времени суток, состояния погоды. В общем случае известно какие факторы влияют на принятие решения, но неизвестно каким именно образом они влияют на принятие решения.

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

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

 

Я так понимаю, это связано с нейросетями, но сам с ними не знаком. Мне кажется эта задача должна сравнительно легко решаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитайте статьи известного Geohot'a. Он добился значительного успеха в создании автопилота, обучая нейронку на примере своей езды. Сеть "смотрит" сенсорами и пытается уловить закономерности, почему живой водитель ведёт себя так или иначе.

 

Для временных сценариев отлично подходят рекуррентные НС. Это стандартный метод анализа и прогнозирования временных рядов, машинного перевода, генерации текстов. Готовые библиотеки есть в матлабе - вообще можно всё кликая мышкой сделать, или использовать популярные сейчас Caffe/Theano.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость TSerg
Я так понимаю, это связано с нейросетями,

Не обязательно.

 

Есть нечеткая логика ("Fuzzy logic"). Придумана и обоснована моим земляком Лотфи Заде (Lotfi Askar Zadeh).

P.S.

"Предметом нечёткой логики считается исследование рассуждений в условиях нечёткости, размытости, сходных с рассуждениями в обычном смысле, и их применение в вычислительных системах"

 

В целом же, посмотрите сколько "на коленках" придумано методов принятия решений для систем поддержки принятия решений (Decision Support System, DSS):

- информационный поиск;

- интеллектуальный анализ данных;

- поиск знаний в базах данных;

- рассуждение на основе прецедентов;

- имитационное моделирование;

- эволюционные вычисления и генетические алгоритмы;

- нейронные сети;

- ситуационный анализ;

- когнитивное моделирование;

- нечеткая логика;

- др.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну как бы я б глядел в сторону Python. Библиотека sklearn.

Втупую - решающие деревья попробовать бы попробовал. Может и пойдет такая модель. Ествественно зависит от объема данных обучающих.

https://habrahabr.ru/post/202090/ - для понимания примерного.

 

Но в этой библиотеке есть все инструменты, надо только научиться ими пользоваться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну как бы я б глядел в сторону Python. Библиотека sklearn.

Втупую - решающие деревья попробовать бы попробовал. Может и пойдет такая модель. Ествественно зависит от объема данных обучающих.

https://habrahabr.ru/post/202090/ - для понимания примерного.

Но в этой библиотеке есть все инструменты, надо только научиться ими пользоваться.

Спасибо. Но вот я чего не понимаю - в статье описывается статистика и алгоритмы, направленные на то, чтобы найти корреляцию между различными признаками, без объяснения почему они вдруг влияют на результат. Это понятно.

Например задача по Титанику - есть результат и признаки, без объяснения зависимостей.

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

Вопрос как это сделать, если важно не столько выполнение/невыполнение события (аналогично с примером из Титаника можно считать включение/невключение света как спасся/не спасся). Но как быть с моментом времени для этого события?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость TSerg
Но как быть с моментом времени для этого события?

Времена года (зима, осень, весна, лето); время суток (утро, полдень, вечер, ночь); погода ( безоблачно, облачно, туман, дождь, снег..) и т.д.

Т.е. сделать кластеризацию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. Но вот я чего не понимаю - в статье описывается статистика и алгоритмы, направленные на то, чтобы найти корреляцию между различными признаками, без объяснения почему они вдруг влияют на результат. Это понятно.

Например задача по Титанику - есть результат и признаки, без объяснения зависимостей.

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

Вопрос как это сделать, если важно не столько выполнение/невыполнение события (аналогично с примером из Титаника можно считать включение/невключение света как спасся/не спасся). Но как быть с моментом времени для этого события?

 

А временной момент вам действительно нужен? Может он вообще никак не влияет? А если нужен - ну ок, правильно выше написали, отнесите конкретное значение времени к одному из классов. Типа - утро, день, вечер, ночь. ДАлее - можете уточнять (раннее утро, утро, позднее утро и т.д.).

Это не суть. Важнее понять как эту всю информацию использовать в дальнейшем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не обязательно.

 

Есть нечеткая логика ("Fuzzy logic") ...

Нейронные сети в каком-то смысле есть обобщение нечёткой логики и систем принятия решений. В общем случае нейронные сети работают лучше чем нечёткая логика.

 

Но как быть с моментом времени для этого события?

Вам уже написали, что здесь наверное подойдут рекуррентные нейронные сети (LSTM, GRU итд). Для анализа временных рядов можно также попробовать сверточные нейронные сети.

Если втупую бустинг, деревья или нейронные сети не дают требуемой точности, то надо смотреть какие признаки больше влияют на результат и отбрасывать те, которые почти не влияют на него.

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость TSerg
Если втупую ..

Топику стоит выложить часть логов и задачу в целом - это многим интересно и ожидаются бесплатные подсказки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Топику стоит выложить часть логов и задачу в целом - это многим интересно и ожидаются бесплатные подсказки.

Да логи есть любые.

Например, вот лог от датчика освещения, датчика движения и состояния диммера в различное время суток(утром, днем, вечером):

10/10/16	07:17:03.234	/myhome/state/Lumin_Hall	9
10/10/16	07:18:03.239	/myhome/state/Lumin_Hall	9
10/10/16	07:19:03.250	/myhome/state/Lumin_Hall	10
10/10/16	07:19:12.732	/myhome/state/Hall_motion	OPEN
10/10/16	07:19:12.745	/myhome/command/Light_Hall/state	25
10/10/16	07:19:19.330	/myhome/state/Hall_motion	CLOSED
10/10/16	07:19:32.358	/myhome/command/Light_Hall/state	0
10/10/16	07:20:03.240	/myhome/state/Lumin_Hall	10
10/10/16	07:20:45.698	/myhome/state/Hall_motion	OPEN
10/10/16	07:20:45.714	/myhome/command/Light_Hall/state	25
10/10/16	07:20:56.337	/myhome/state/Hall_motion	CLOSED
...
10/09/16	15:14:14.743	/myhome/state/Lumin_Hall	1000
10/09/16	15:15:14.803	/myhome/state/Lumin_Hall	1000
10/09/16	15:16:14.884	/myhome/state/Lumin_Hall	1000
10/09/16	15:16:26.837	/myhome/state/Hall_motion	OPEN
10/09/16	15:16:33.975	/myhome/state/Hall_motion	CLOSED
10/09/16	15:16:36.948	/myhome/state/Hall_motion	OPEN
10/09/16	15:16:47.991	/myhome/state/Hall_motion	CLOSED
10/09/16	15:16:51.524	/myhome/state/Hall_motion	OPEN
10/09/16	15:16:55.989	/myhome/state/Hall_motion	CLOSED
10/09/16	15:17:14.917	/myhome/state/Lumin_Hall	1000
10/09/16	15:18:14.979	/myhome/state/Lumin_Hall	1000
10/09/16	15:19:15.043	/myhome/state/Lumin_Hall	1000
10/09/16	15:19:23.918	/myhome/state/Hall_motion	OPEN
10/09/16	15:19:35.155	/myhome/state/Hall_motion	CLOSED
10/09/16	15:19:37.060	/myhome/state/Hall_motion	OPEN
10/09/16	15:19:51.172	/myhome/state/Hall_motion	CLOSED
10/09/16	15:20:03.101	/myhome/state/Hall_motion	OPEN
10/09/16	15:20:11.197	/myhome/state/Hall_motion	CLOSED
10/09/16	15:20:15.103	/myhome/state/Lumin_Hall	1000
...
10/08/16	19:56:23.492	/myhome/state/Lumin_Hall	15
10/08/16	19:57:23.480	/myhome/state/Lumin_Hall	12
10/08/16	19:58:23.480	/myhome/state/Lumin_Hall	11
10/08/16	19:59:23.477	/myhome/state/Lumin_Hall	15
10/08/16	19:59:58.442	/myhome/state/Hall_motion	OPEN
10/08/16	19:59:58.458	/myhome/command/Light_Hall/state	100
10/08/16	20:00:02.684	/myhome/state/Hall_motion	CLOSED
10/08/16	20:00:15.699	/myhome/command/Light_Hall/state	0
10/08/16	20:00:23.477	/myhome/state/Lumin_Hall	11
10/08/16	20:00:26.161	/myhome/state/Hall_motion	OPEN
10/08/16	20:00:26.175	/myhome/command/Light_Hall/state	100
10/08/16	20:00:30.699	/myhome/state/Hall_motion	CLOSED
10/08/16	20:00:41.180	/myhome/state/Hall_motion	OPEN
10/08/16	20:00:41.194	/myhome/command/Light_Hall/state	100
10/08/16	20:00:47.696	/myhome/state/Hall_motion	CLOSED
10/08/16	20:00:50.205	/myhome/state/Hall_motion	OPEN
10/08/16	20:00:50.226	/myhome/command/Light_Hall/state	100
10/08/16	20:00:55.696	/myhome/state/Hall_motion	CLOSED

Lumin_Hall - текущая освещенность - <20 - это темно, 1000 - это день. Hall_motion - датчик движения в коридоре Open - движение есть, Close нет. Light_Hall/state - состояние светильника 100 - максимальная яркость, 25 - низкая яркость, 0 - выключен. Такие логи есть по многим параметрам - температура на улице, статистика включения света на кухне, в туалете, управление жалюзями и т.д. Запись логов ведется круглосуточна и будет доступна за года и месяцы.

Вопрос - как с помощью машинного обучения из этих логов выделить закономерности, что Темно -> Вечер -> Есть движение -> Включили свет на полную, но в то же время Темно -> Утро -> Есть движение -> Включили свет на минимум, а днем вообще свет не включается? Т.е. чтобы после того, как закономерности найдены, полученный алгоритм мог бы сам управлять светом без ручного программирования алгоритма управления (как собственно обычно сегодня реализуется в системах УД).

 

Т.е. как бы вырисовывается такая концепция обучения умного дома:

- ставим умный дом и датчики, выясняем у жильцов, что им примерно хочется.

- включаем нужные модули в режим обучения, ждем, пока не соберется нужно количество данных, пока пользователи продолжают все делать вручную - т. е. изучаем привычки пользователей.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще не понимаю зачем здесь какое-то машинное обучение.

 

Базовый набор правил, задаваемый примитивным конечным автоматом.

Есть движение - включаем свет пропорционально уровню освещенности.

 

Какой другой сценарий предполагается? Светить, когда никого нет каждую Пятницу, 13? В День Земли вырубать всю РЭА на территории? Если человек вошел два раза и вышел на протяжении одной минуты, начать моргать морзянкой "Нефиг шляться, человечишко"?

 

Кажется кто-то стреляет даже не из пушки, а из ЗРК по воробьям и пытается допилить радар чтобы ракеты наводились на птичек, а не самолёты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кажется кто-то стреляет даже не из пушки, а из ЗРК по воробьям и пытается допилить радар чтобы ракеты наводились на птичек, а не самолёты.

В этом-то и смысл - современный смартфоновый процессор в 1000 раз мощнее обычного восьмибитника. Почему-бы не использовать это преимущество?

 

Вообще не понимаю зачем здесь какое-то машинное обучение.

Базовый набор правил, задаваемый примитивным конечным автоматом.

Есть движение - включаем свет пропорционально уровню освещенности.

Конечно можно решить автоматом, как оно собственно и решено в тех логах. Но для этого нужно данный алгоритм разработать и настроить. А это первая проблема - вот не хочу я заниматься программированием каждого чиха в том числе и таких простых вещей. А хочу, чтобы один или два раза показал, и робот, как слуга начал повторять и с каждым разом все лучше и лучше. Весь смысл в том, чтобы убрать программирование. Вообще. И пусть для этого хоть триллион вычислений понадобится - компьютерное время сейчас дешевое.

Какой другой сценарий предполагается? Светить, когда никого нет каждую Пятницу, 13? В День Земли вырубать всю РЭА на территории? Если человек вошел два раза и вышел на протяжении одной минуты, начать моргать морзянкой "Нефиг шляться, человечишко"?

А я не знаю и не хочу знать, какие сценарии предполагаются. Вот такие требования.

Кто-то хочет поярче, кто-то потемнее. У кого-то глаза чувствительные, у кого-то нет. Кому-то надо поспать, кто-то рано встает. Кто-то включает свет и вечером и утром, а кто-то только вечером. Или только утром. Сценарии могут быть разные, но решение - одинаковым.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость TSerg

С учетом того, что энергосберегайки (разные) не допукают диммирования - это вообще все туфта.

Регулировать количеством?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С учетом того, что энергосберегайки (разные) не допукают диммирования - это вообще все туфта.

Регулировать количеством?

Есть LED, которые прекрасно диммируются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость TSerg
Есть LED, которые прекрасно диммируются.

Ну да, если это не просто стандартная LED лампочка.

 

В общем случае, задача не решается.

В один и тот же коридор входят по-очереди:

- нормальный чел;

- чел в инвалидной коляске;

- чел с пониженным зрением

- чел на костылях с пониженным зрением

и т.д.

И хто будет их желания распознавать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...