Фреймворк Java Bayesian Inference для огромного набора данных

Пожалуйста, сообщите о структуре байесовского вывода Java, которая:

1. Is open-source
2. Can be used programmatically from Java app.
3. Will be able to process 10 GB data-set running on a single host (node) 
4. NOT Mahout or any other Hadoop-based / distributed frameworks (see 3.)

2 ответа

Решение

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

Кевин Мерфи недавно обновил сравнение программного обеспечения для байесовского вывода по адресу http://www.cs.ubc.ca/~murphyk/Software/bnsoft.html. Один из пакетов с открытым исходным кодом, который я изучаю, - это libDAI ( http://cs.ru.nl/~jorism/libDAI/), который находится на C++, но я предполагаю, что он вызывается из Java. Он поддерживает несколько методов логического вывода, в том числе цикличное распространение убеждений, которое представляется довольно хорошим алгоритмом приближения.

Может быть, weka соответствует вашему счету? http://www.cs.waikato.ac.nz/ml/weka/ Это определенно удовлетворяет требованиям 1, 2 и 4. 3 должно быть выполнимо с чем-то вроде пользовательской реализации weka.core.Instances, если по умолчанию это не так обеспечить некоторую "потоковую" передачу данных, поэтому не все они должны одновременно находиться в памяти - я давно их не использовал, поэтому я точно не знаю.

Другие вопросы по тегам