Классификатор текста, объясняющий его решения

11

Я строю текст на классификатор коротких фраз. В дополнение к сообщению пользователю «категория введенного вами текста - C», я хочу кратко и понятно объяснить, почему я принял это решение. Например, я не хочу говорить пользователю: «Я поместил ваше предложение в сложную трехслойную нейронную сеть, и это тот ответ, который набрал наибольшее количество баллов»; Мне нужны такие объяснения, как «Ваше предложение содержит слова U, V и W, характерные для этой категории, из-за предложений, таких как X, Y и Z, которые появились в данных обучения».

Мой вопрос: какие алгоритмы классификации лучше всего подходят для такого применения?

k-ближайшие соседи кажутся хорошим кандидатом, потому что я могу сказать пользователю: «Ваше предложение имеет категорию C, потому что оно похоже на предложения X, Y и Z, которые имеют одну и ту же категорию. Но его эффективность в отношении проблем категоризации текста известна быть бедным. Я ищу классификацию, которая уравновешивает производительность с способностью объяснения.

EDIT: После того, как тратить много времени в поисках такого классификатора, я начал строить библиотеку машинного обучения под названием limdu , что позволяет классификаторам объяснить свои решения. Это все еще в стадии разработки, но уже помог мне объяснить себе и своим коллегам , почему наши классификаторы неудачу так часто ...

Эрель Сегал-Халеви
источник
Суть машинного обучения в том, что вас не волнует, что происходит под капотом, вы заботитесь только о производительности. Другой подход потерпел неудачу, и именно поэтому все в настоящее время используют эти непрозрачные статистические подходы - они просто намного лучше.
Ювал Фильмус
2
@Yuval Я совершенно не согласен, что другие подходы не удалось. Они не оптимальны, но все же достигают цели автоматизации задач классификации намного выше того, что человек имеет способность или терпение делать. Непрозрачные чёрные ящики - не единственный способ эффективно проводить машинное обучение, особенно в таких ситуациях, когда производительность - не единственное соображение. Будьте немного более непредубежденными в отношении различных целей, стоящих за задачами машинного обучения.
Ричард Д

Ответы:

7

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

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

Машины опорных векторов , в частности, Sequential Minimum Optimization (SMO), похоже, хорошо работают с этими задачами и также обеспечивают указание значений, используемых для классификации, в виде весов атрибутов и векторов поддержки, но я думаю, что вам может быть труднее четко указав, как эти веса и векторы влияют на общее решение о классификации.

Удачи с вашим проектом! Звучит очень интересно.

Ричард Д
источник
1
Спасибо. Я также обнаружил, что онлайн-классификаторы, такие как персептрон и winnow, довольно хороши в этой задаче (по крайней мере, в моем сценарии), и решение легко объяснить, посмотрев на абсолютное значение, которое каждая функция добавляет к баллу классификации. Для каждого образца я сортирую элементы по абсолютному значению (функция * вес) и показываю первые несколько.
Эрель Сегал-Халеви
3

Я смутно помню, что у Питера Норвига была реализация MYCIN , экспертной системы медицинской диагностики , написанной на LISP в его книге « Парадигмы программирования искусственного интеллекта: тематические исследования в Common Lisp» , которая и сделала именно это.

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

Вы также можете перейти прямо на страницу для Emycin (мой акцент),

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

Пол Г.Д.
источник
2
Существует причина, по которой экспертные системы уже не очень популярны, хотя все правила сложно кодировать.
adrianN