Подтвердить что ты не робот

Какую библиотеку обучения компьютера использовать

Я ищу библиотеку, которая в идеале имеет следующие функции:

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

Я хотел бы, чтобы это было на С++, так как мне больше всего нравится этот язык, но я также буду использовать любой другой язык, если библиотека того стоит. У меня есть googled и нашел что-то, но у меня действительно нет времени, чтобы попробовать их всех, поэтому я хочу услышать, что другие люди испытывали. Пожалуйста, ответьте только если у вас есть опыт работы с рекомендуемой библиотекой.

P.S.: Я мог бы также использовать разные библиотеки для кластеризации и SVM.

4b9b3361

Ответ 1

Хорошо, ради полноты я опубликую, с чем я пошел, в конце. Теперь я использую scipy-cluster для части кластеризации. Это самая универсальная реализация, которую я нашел до сих пор. Я думаю, что я поеду с libSVM (теперь он имеет интерфейс Python) для части SVM. Я перехожу к Python, потому что не было подходящей реализации иерархической кластеризации на С++ (C Clustering Library специализируется на микрочипах и не поддерживает многомерные данные).

Ответ 2

Есть только несколько библиотек ML, которые я использовал достаточно, чтобы мне было удобно их рекомендовать; dlib ml, безусловно, один из них.

Sourceforge скачать здесь; и выхлопных газов:

hg clone http://hg.code.sf.net/p/dclib/code dclib-code

Оригинальный создатель библиотеки и текущий сопровождающий - Дэвис Кинг.

Ваш список пожеланий по сравнению с соответствующими функциями dlib:

  • хорошая документация: бесплатно, библиотеки с открытым исходным кодом, ориентированные на относительно небольшую группу пользователей/разработчиков, это, вероятно, так же хорошо, как и получается; помимо обычных документов, усовершенствованных в течение пятилетней истории разработчиков, часто обновляется Intro to dlib, (низкий трафик) форум; и большой набор отличных примеров (включая, по крайней мере, один для SVM).

  • С++: 100% на С++, насколько я знаю.

  • Алгоритм поддержки-Vector Machine: yep; на самом деле модули SVM были в центре внимания последних обновлений этой библиотеки.

  • Иерархический алгоритм кластеризации: не из коробки; там однако, упакованный код для k-означает кластеризацию. Очевидно, что результаты каждого метода очень разные, но расчет метрикой сходства и последующим рекурсивный/итеративный шаг разбиения в основе обоих - иными словами, вычислительный механизм для иерархической кластеризации - это все. Чтобы адаптировать существующий модуль кластеризации для HC, потребуется больше, чем пара строк кода, но это также не является серьезным делом, учитывая, что вы работаете почти на уровень представления данных.

dlib ml имеет несколько дополнительных моментов, чтобы рекомендовать его. Это зрелая библиотека (она в версии 17.x сейчас, версия 1.x была выпущена когда-то в конце 2005 года, я считаю), но она также остается в активной разработке, о чем свидетельствуют журналы репо (последнее обновление - 17,27, было 17 Май 2010 года) и последний коммит (23 мая 2010 года). Кроме того, он также включает в себя немало других методов ML (например, байесовские сети, методы ядра и т.д.). И в-третьих, dllib ml имеет отличные "поддерживающие" библиотеки для матричного вычисления и оптимизации - оба из которых являются фундаментальными строительными блоками многих методов ML.

В источнике я заметил, что dlib ml лицензируется под BSL (Boost?), который является лицензией с открытым исходным кодом, хотя я ничего не знаю об этом типе лицензии.

Ответ 3

WEKA (http://www.cs.waikato.ac.nz/ml/weka/) - отличная библиотека для обучения с открытым исходным кодом, которая отвечает большинству ваших требований, кроме С++, - это написано в Ява. Он очень хорошо документирован, реализует машины векторной поддержки и кластеризации, и у меня были очень хорошие впечатления.

Ответ 5

Это не С++, но вы считаете, что используете R. В частности, посмотрите просмотр обучения компьютера на CRAN, который показывает много из вышеупомянутых библиотек, включая Weka и libsvm.

Ответ 6

Несколько дополнительных возможных вариантов:

Условные случайные поля (CRF): http://www.chokkan.org/software/crfsuite/

Скрытые марковские модели (HMM): http://www.cs.au.dk/~asand/?page_id=152

Для общей библиотеки ML рассмотрим факел (версия 7, на момент написания): https://github.com/andresy/torch

Оранжевая система реализована на С++ и может использоваться как библиотека, но фокусируется на экспонировании ее функциональности как в оболочках Python для гибкого сценария, так и визуального программирования: http://orange.biolab.si/