Алгоритм генерации правил классификации

11

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

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

Item A { 4-door, small, steel } => { sedan }
Item B { 2-door, big,   steel } => { truck }
Item C { 2-door, small, steel } => { coupe }

Я просто хочу правила, которые говорят: «если это большой и 2-дверный, это грузовик», а не правила, которые говорят: «если это 4-дверный, это тоже маленький».

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

super_seabass
источник

Ответы:

9

C45 производства Quinlan способен выработать правило для прогнозирования. Проверьте эту страницу Википедии . Я знаю, что на Weka его зовут J48. Я понятия не имею, какие реализации в R или Python. В любом случае, из дерева решений такого типа вы сможете вывести правила прогнозирования.

Позже редактировать

Также вас могут заинтересовать алгоритмы прямого определения правил классификации. RIPPER - это тот, который снова в Weka получил другое название JRip. См. Оригинальную статью для RIPPER: Быстрая эффективная индукция правил, WW Cohen 1995

rapaio
источник
Я экспериментировал с C45 / J48 в предыдущем проекте. Я не понимал, что существуют правила, которые я мог бы извлечь из него. Я также проверю RIPPER. Спасибо!
super_seabass
Также проверьте пакет C50 в R.
nfmcclure
Хотел предоставить обновление для этого вопроса / ответа: мы использовали JRip с некоторым успехом, но наш новый ведущий соперник - FURIA ( cs.uni-paderborn.de/fileadmin/Informatik/eim-i-is/PDFs/… ). Он генерирует лучшие правила для обзора / использования человеком, потому что он пытается создать исчерпывающий набор правил. JRip создает хорошие правила, но у него есть правило по умолчанию для классификации, когда другие правила не применяются. Сегменты по умолчанию не работают хорошо в бизнес-контексте нашего проекта, нам нужны исчерпывающие правила.
super_seabass
7

На самом деле это даже проще, чем то, что вы описываете - вы просто ищете базовый алгоритм дерева классификации (поэтому нет необходимости в немного более сложных вариантах, таких как C4.5, которые оптимизированы для точности прогнозирования). Канонический текст:

http://www.amazon.com/Classification-Regression-Wadsworth-Statistics-Probability/dp/0412048418

Это легко реализуется в R:

http://cran.r-project.org/web/packages/tree/tree.pdf

и Python:

http://scikit-learn.org/stable/modules/tree.html

Therriault
источник
Я не согласен, что деревья здесь помогают. Это вопрос правил фильтрации, и этого можно достичь с помощью пакета arules в R.
adesantos
1

Вам следует попробовать пакет arules в R. Он позволяет вам создавать не только правила ассоциации, но также указывать длину каждого правила, важность каждого правила, а также вы можете фильтровать их, что вы и ищете (попробуйте Команда rhs () этого пакета).

adesantos
источник