|
Машинное обучение по известному поведению, Какие алгоритмы используются? Как реализовать? |
|
|
|
Oct 30 2016, 07:30
|
Профессионал
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368
|
Народ подскажите, есть ли какие либо алгоритмы или как реализовать такое. Например человек периодически делает какое-то определенное действие - например, включает и выключает свет. Выполнение/невыполнение этого действия, а также конкретный момент зависит от определенных факторов - дня недели, времени суток, состояния погоды. В общем случае известно какие факторы влияют на принятие решения, но неизвестно каким именно образом они влияют на принятие решения. Собственно вопрос в том, что можно, конечно, изучить поведение человека и на основе этого найти условия и на основе этих условий создать алгоритм, но это требует ручной анализ и не будет адаптивным. С другой стороны есть месяцы наблюдений за этим процессом и вся информация записана в виде логов. Т.е. когда был включен свет, какая тогда была погода, день недели, что произошло до этого и т.д. И поэтому хотелось бы придумать такой алгоритм, которому бы на вход подавались данные факторы, затем он обучался бы на исторических данных и в конце концов мог бы предсказывать момент включения/отключения света с определенной долей вероятности. Желательно высокой. Т.е. фактически нашел нужные условия сам. И в конце концов мог заменить человека.
Я так понимаю, это связано с нейросетями, но сам с ними не знаком. Мне кажется эта задача должна сравнительно легко решаться.
|
|
|
|
Guest_TSerg_*
|
Oct 30 2016, 19:54
|
Guests
|
Цитата(syoma @ Oct 30 2016, 10:30) Я так понимаю, это связано с нейросетями, Не обязательно. Есть нечеткая логика ("Fuzzy logic"). Придумана и обоснована моим земляком Лотфи Заде (Lotfi Askar Zadeh). P.S. "Предметом нечёткой логики считается исследование рассуждений в условиях нечёткости, размытости, сходных с рассуждениями в обычном смысле, и их применение в вычислительных системах" В целом же, посмотрите сколько "на коленках" придумано методов принятия решений для систем поддержки принятия решений (Decision Support System, DSS): - информационный поиск; - интеллектуальный анализ данных; - поиск знаний в базах данных; - рассуждение на основе прецедентов; - имитационное моделирование; - эволюционные вычисления и генетические алгоритмы; - нейронные сети; - ситуационный анализ; - когнитивное моделирование; - нечеткая логика; - др.
|
|
|
|
|
Nov 11 2016, 05:10
|
Группа: Участник
Сообщений: 10
Регистрация: 30-01-06
Пользователь №: 13 751
|
Ну как бы я б глядел в сторону Python. Библиотека sklearn. Втупую - решающие деревья попробовать бы попробовал. Может и пойдет такая модель. Ествественно зависит от объема данных обучающих. https://habrahabr.ru/post/202090/ - для понимания примерного. Но в этой библиотеке есть все инструменты, надо только научиться ими пользоваться.
|
|
|
|
|
Nov 11 2016, 11:33
|
Профессионал
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368
|
Цитата(tujhjd @ Nov 11 2016, 08:10) Ну как бы я б глядел в сторону Python. Библиотека sklearn. Втупую - решающие деревья попробовать бы попробовал. Может и пойдет такая модель. Ествественно зависит от объема данных обучающих. https://habrahabr.ru/post/202090/ - для понимания примерного. Но в этой библиотеке есть все инструменты, надо только научиться ими пользоваться. Спасибо. Но вот я чего не понимаю - в статье описывается статистика и алгоритмы, направленные на то, чтобы найти корреляцию между различными признаками, без объяснения почему они вдруг влияют на результат. Это понятно. Например задача по Титанику - есть результат и признаки, без объяснения зависимостей. Но у меня на входе - временные данные. Т.е. в общем случае это лог-файл. Получается, чтобы их обработать алгоритмом, мне нужно их перевести в какой-то другой формат, аналогичный указанному в статье. Вопрос как это сделать, если важно не столько выполнение/невыполнение события (аналогично с примером из Титаника можно считать включение/невключение света как спасся/не спасся). Но как быть с моментом времени для этого события?
|
|
|
|
Guest_TSerg_*
|
Nov 11 2016, 13:54
|
Guests
|
Цитата(syoma @ Nov 11 2016, 14:33) Но как быть с моментом времени для этого события? Времена года (зима, осень, весна, лето); время суток (утро, полдень, вечер, ночь); погода ( безоблачно, облачно, туман, дождь, снег..) и т.д. Т.е. сделать кластеризацию.
|
|
|
|
|
Nov 21 2016, 04:20
|
Группа: Участник
Сообщений: 10
Регистрация: 30-01-06
Пользователь №: 13 751
|
Цитата(syoma @ Nov 11 2016, 15:33) Спасибо. Но вот я чего не понимаю - в статье описывается статистика и алгоритмы, направленные на то, чтобы найти корреляцию между различными признаками, без объяснения почему они вдруг влияют на результат. Это понятно. Например задача по Титанику - есть результат и признаки, без объяснения зависимостей. Но у меня на входе - временные данные. Т.е. в общем случае это лог-файл. Получается, чтобы их обработать алгоритмом, мне нужно их перевести в какой-то другой формат, аналогичный указанному в статье. Вопрос как это сделать, если важно не столько выполнение/невыполнение события (аналогично с примером из Титаника можно считать включение/невключение света как спасся/не спасся). Но как быть с моментом времени для этого события? А временной момент вам действительно нужен? Может он вообще никак не влияет? А если нужен - ну ок, правильно выше написали, отнесите конкретное значение времени к одному из классов. Типа - утро, день, вечер, ночь. ДАлее - можете уточнять (раннее утро, утро, позднее утро и т.д.). Это не суть. Важнее понять как эту всю информацию использовать в дальнейшем.
|
|
|
|
|
Dec 14 2016, 13:08
|
Частый гость
Группа: Свой
Сообщений: 119
Регистрация: 21-09-09
Из: Москва
Пользователь №: 52 501
|
Цитата(TSerg @ Oct 30 2016, 22:54) Не обязательно.
Есть нечеткая логика ("Fuzzy logic") ... Нейронные сети в каком-то смысле есть обобщение нечёткой логики и систем принятия решений. В общем случае нейронные сети работают лучше чем нечёткая логика. Цитата(syoma) Но как быть с моментом времени для этого события? Вам уже написали, что здесь наверное подойдут рекуррентные нейронные сети (LSTM, GRU итд). Для анализа временных рядов можно также попробовать сверточные нейронные сети. Если втупую бустинг, деревья или нейронные сети не дают требуемой точности, то надо смотреть какие признаки больше влияют на результат и отбрасывать те, которые почти не влияют на него.
|
|
|
|
Guest_TSerg_*
|
Dec 16 2016, 18:25
|
Guests
|
Цитата(enclis_ @ Dec 14 2016, 16:08) Если втупую .. Топику стоит выложить часть логов и задачу в целом - это многим интересно и ожидаются бесплатные подсказки.
|
|
|
|
|
Dec 19 2016, 11:33
|
Профессионал
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368
|
Цитата(TSerg @ Dec 16 2016, 21:25) Топику стоит выложить часть логов и задачу в целом - это многим интересно и ожидаются бесплатные подсказки. Да логи есть любые. Например, вот лог от датчика освещения, датчика движения и состояния диммера в различное время суток(утром, днем, вечером): CODE 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 - выключен. Такие логи есть по многим параметрам - температура на улице, статистика включения света на кухне, в туалете, управление жалюзями и т.д. Запись логов ведется круглосуточна и будет доступна за года и месяцы. Вопрос - как с помощью машинного обучения из этих логов выделить закономерности, что Темно -> Вечер -> Есть движение -> Включили свет на полную, но в то же время Темно -> Утро -> Есть движение -> Включили свет на минимум, а днем вообще свет не включается? Т.е. чтобы после того, как закономерности найдены, полученный алгоритм мог бы сам управлять светом без ручного программирования алгоритма управления (как собственно обычно сегодня реализуется в системах УД). Т.е. как бы вырисовывается такая концепция обучения умного дома: - ставим умный дом и датчики, выясняем у жильцов, что им примерно хочется. - включаем нужные модули в режим обучения, ждем, пока не соберется нужно количество данных, пока пользователи продолжают все делать вручную - т. е. изучаем привычки пользователей. - переключаем модули в режим исполнения. Оставляем пользователям кнут и пряник для дальнейшего самообучения - если свет вдруг включился, когда не нужно, или наоборот не включился когда нужно, пользователь должен иметь возможность указать контроллеру на ошибку, а контроллер уточнить входные данные.
|
|
|
|
|
Dec 19 2016, 20:40
|
Профессионал
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368
|
Цитата Кажется кто-то стреляет даже не из пушки, а из ЗРК по воробьям и пытается допилить радар чтобы ракеты наводились на птичек, а не самолёты. В этом-то и смысл - современный смартфоновый процессор в 1000 раз мощнее обычного восьмибитника. Почему-бы не использовать это преимущество? Цитата(count_enable @ Dec 19 2016, 18:48) Вообще не понимаю зачем здесь какое-то машинное обучение. Базовый набор правил, задаваемый примитивным конечным автоматом. Есть движение - включаем свет пропорционально уровню освещенности. Конечно можно решить автоматом, как оно собственно и решено в тех логах. Но для этого нужно данный алгоритм разработать и настроить. А это первая проблема - вот не хочу я заниматься программированием каждого чиха в том числе и таких простых вещей. А хочу, чтобы один или два раза показал, и робот, как слуга начал повторять и с каждым разом все лучше и лучше. Весь смысл в том, чтобы убрать программирование. Вообще. И пусть для этого хоть триллион вычислений понадобится - компьютерное время сейчас дешевое. Цитата Какой другой сценарий предполагается? Светить, когда никого нет каждую Пятницу, 13? В День Земли вырубать всю РЭА на территории? Если человек вошел два раза и вышел на протяжении одной минуты, начать моргать морзянкой "Нефиг шляться, человечишко"? А я не знаю и не хочу знать, какие сценарии предполагаются. Вот такие требования. Кто-то хочет поярче, кто-то потемнее. У кого-то глаза чувствительные, у кого-то нет. Кому-то надо поспать, кто-то рано встает. Кто-то включает свет и вечером и утром, а кто-то только вечером. Или только утром. Сценарии могут быть разные, но решение - одинаковым.
|
|
|
|
Guest_TSerg_*
|
Dec 19 2016, 21:26
|
Guests
|
С учетом того, что энергосберегайки (разные) не допукают диммирования - это вообще все туфта. Регулировать количеством?
|
|
|
|
Guest_TSerg_*
|
Dec 19 2016, 22:01
|
Guests
|
Цитата(syoma @ Dec 20 2016, 00:34) Есть LED, которые прекрасно диммируются. Ну да, если это не просто стандартная LED лампочка. В общем случае, задача не решается. В один и тот же коридор входят по-очереди: - нормальный чел; - чел в инвалидной коляске; - чел с пониженным зрением - чел на костылях с пониженным зрением и т.д. И хто будет их желания распознавать?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|