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

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

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 24 мая 2011

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

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

...