Идеальный алгоритмический подход Rule-engine/Decision-Tree и некоторая обучающая логика?

Мое требование, вероятно, близко к тому, что можно ожидать от «Экспертной системы». И ищу самое простое решение, которое может дать мне вывод в реальном времени или почти в реальном времени, с некоторыми возможностями обучения в автономном режиме (не в реальном времени).

Чтобы уточнить, моя проблема -

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

Момент, когда это становится сложным, -

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

2) Правила, определяющие красный и зеленый цвета, несовершенны, поэтому иногда случаются ошибки с маркировкой. Поэтому случайный ручной аудит выявляет эти ошибки. Моя главная задача — посмотреть, смогу ли я автоматизировать часть обновления правил с минимальными усилиями по программированию.

Мое (продолжающееся исследование) показывает, что механизм правил, основанный на алгоритме RETE, может служить моей классификации и маркировке, включая перемаркировку. Если это сработает, мне все еще нужно понять, как автоматизировать часть «обучения на ошибках»? Можно ли применить статистический подход -- с.а. Байесовская классификация? Кроме того, можно ли полностью принять байесовскую классификацию в отличие от Rules-Engine, для исходной классификации s.t. Я достаточно обучил систему вручную? Байесовский подход, кажется, «отупляет» задачу поддержания правильного набора правил за счет подхода «доверия статистике», особенно с учетом этих периодических ручных проверок.

PS> Мое основное приложение написано на C++ (если это имеет значение).


person bdutta74    schedule 23.05.2011    source источник


Ответы (1)


Это похоже на обработку комплексных событий (CEP), где у вас есть правила и возможность использовать вычисления времени, такие как событие X происходит в течение 2 минут после события y.

На языке Java с этим справится Drools Fusion (или Drools Expert). действительно хорошо (хотя я предвзят). В стране C++... ну, может быть, вы можете настроить drools-camel-server и общаться с ним через XML.

person Geoffrey De Smet    schedule 24.05.2011
comment
Спасибо @geoffrey-de-smet. Когда-то наткнулся на CEP (особенно ESPER), но как-то потерял этот трек, мило с вашей стороны, что подняли его. Пытаясь догнать Drools Fusion, я наткнулся на это интересный пост и еще более интересный комментарий, в котором ESPER сравнивается с Drools-Fusion. Было бы интересно выяснить, как оба могут дополнять друг друга. Это, безусловно, путь, который я хочу исследовать глубже. Спасибо еще раз. - person bdutta74; 25.05.2011