1

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

Проблема в том, что множество языков, допустимых для класса, довольно велико: C++, C#, Delphi. Кроме того, я не хочу, чтобы студенты тратили много времени на любые технические проблемы, такие как подключение библиотеки. WEKA отлично подходит для Java. Мы также можем использовать OpenCV со всеми обертками, но он довольно большой и неуклюжий, в то время как я хочу что-то простое и сладкое.

Итак, вы знаете какие-либо простые библиотеки C++/C#/Delphi для обучения деревьям решений?

+0

Я сделал упражнения по извлечению информации, у меня была аналогичная проблема.То, что я сделал, заключалось в том, чтобы разработать простую оболочку, которая предоставляет только необходимую функциональность, - над сложной библиотекой, чтобы позволить студентам быстро начать и не тратить часы на разработку структуры. – Skarab

+0

Да, но я не хотел реализовывать четыре разных обертки для разных языков. :) Кроме того, я бы хотел, чтобы студенты получили реальный опыт работы с некоторыми API. К сожалению, наш курс, кажется, единственный в учебном плане, который затрагивает такие проблемы. –

ответ

2

Я знаю такие библиотеки, только один из которых я использовал недавно. Эти два значения: Waffles и Tilburg-Based Memory Learner (TiMBL). Оба являются свободными и с открытым исходным кодом (lgpl и GNU gpl, соответственно). Кроме того, обе являются стабильными, зрелыми библиотеками. Вафли были созданы и в настоящее время поддерживаются одним разработчиком, в то время как TiMBL, я считаю, является академическим проектом (направленным на область лингвистики).

Из этих двух я использовал только модуль дерева решений в Ваффле (в классе GDecisionTree, см. Документацию here). Вафли могут быть здесь выборкой, потому что она включает в себя достойный набор функций для описательной статистики, а также построение функций для диагностики, визуализации пространства решений и многое другое. Автор библиотеки (Майк Гашлер) также включил набор демонстрационных приложений, хотя я не помню, было ли одно из этих приложений деревом решений.

Я использовал несколько классов в Waffles Library (включая класс дерева решений), и я, безусловно, рекомендую его. Я больше ничего не могу сказать о Tilburg-Based Memory Learner, потому что я никогда не использовал свой класс дерева решений.

+0

мы, наконец, рекомендуем Вафли и WEKA. –

0

Язык программирования не является проблемой. Очень сложно найти реализацию дерева решений для каждого языка. Почти невозможно гарантировать, что все версии являются одной и той же реализацией.

Поскольку дерево решений является методом черного ящика. Вы можете написать данные обучения и тестирования в стандартные файлы (например, формат arff в Weka, opencv также имеет собственный формат.) И используйте командную строку для вызова обучающего и тестера дерева. Таким образом, все ученики имеют одно и то же дерево решений. В противном случае ученик A использует хорошего ученика по дереву, ученик B использует плохого ученика дерева, когда его результаты различны, вы не знаете, зависит ли это от различия дерева решений или части CV (например, обработки функций). В этой ситуации вы пойдете в ситуацию, когда вам нужно заботиться о деталях/качестве реализации учащихся, изучающих дерево.

+0

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

2

Вы посмотрели на реализацию «решения леса» в Alglib? Это бесплатно для академического использования. Веб-страница утверждает, что поддерживает C++/C# и (возможно) Delphi. Это не реализация дерева решений, но random forests имеют тенденцию быть лучшими классификаторами, чем отдельные деревья решений по многим проблемам, и они не занимают много времени для обучения. Я предполагаю, что будет трудно найти последовательную реализацию дерева решений на нескольких языках, потому что существует так много разных типов алгоритмов дерева решений.

Существует ряд других библиотек случайных лесов с открытым исходным кодом, перечисленных в статье Википедии, если Alglib не то, что вам нужно. Cavaet: реализация Alglib не является традиционным случайным лесом.

+0

Спасибо за подсказку! Мы рекомендуем учащимся сначала использовать деревья решений, поскольку они обеспечивают достаточное качество в базовом наборе данных и концептуально просты, то есть можно взглянуть на структуру для отладочных или методологических целей. Тем не менее, мы предлагаем учащимся реализовать случайный лес в продвинутой части задачи. –

Смежные вопросы