Я строю текст на классификатор коротких фраз. В дополнение к сообщению пользователю «категория введенного вами текста - C», я хочу кратко и понятно объяснить, почему я принял это решение. Например, я не хочу говорить пользователю: «Я поместил ваше предложение в сложную трехслойную нейронную сеть, и это тот ответ, который набрал наибольшее количество баллов»; Мне нужны такие объяснения, как «Ваше предложение содержит слова U, V и W, характерные для этой категории, из-за предложений, таких как X, Y и Z, которые появились в данных обучения».
Мой вопрос: какие алгоритмы классификации лучше всего подходят для такого применения?
k-ближайшие соседи кажутся хорошим кандидатом, потому что я могу сказать пользователю: «Ваше предложение имеет категорию C, потому что оно похоже на предложения X, Y и Z, которые имеют одну и ту же категорию. Но его эффективность в отношении проблем категоризации текста известна быть бедным. Я ищу классификацию, которая уравновешивает производительность с способностью объяснения.
EDIT: После того, как тратить много времени в поисках такого классификатора, я начал строить библиотеку машинного обучения под названием limdu , что позволяет классификаторам объяснить свои решения. Это все еще в стадии разработки, но уже помог мне объяснить себе и своим коллегам , почему наши классификаторы неудачу так часто ...
источник
Ответы:
Несмотря на то, что он плохо справляется с задачами классификации текста, если вы хотите получить четкое объяснение причин классификации, вашим выбором будет дерево решений, поскольку оно содержит четкие правила классификации экземпляра. Трассировка дерева обеспечит определяющие значения, и, проанализировав экземпляры, близкие к корневому узлу, вы даже сможете определить, какие атрибуты более значимы в классификации.
Другим вариантом будет использование наивного байесовского классификатора , который лучше работает для задач интеллектуального анализа текста и даст вам понятную схему оценки, основанную на вероятностях, которую вы можете использовать для генерации искомого «почему», даже обеспечивая указание на какие значения атрибутов были важнее других при принятии решения.
Машины опорных векторов , в частности, Sequential Minimum Optimization (SMO), похоже, хорошо работают с этими задачами и также обеспечивают указание значений, используемых для классификации, в виде весов атрибутов и векторов поддержки, но я думаю, что вам может быть труднее четко указав, как эти веса и векторы влияют на общее решение о классификации.
Удачи с вашим проектом! Звучит очень интересно.
источник
Я смутно помню, что у Питера Норвига была реализация MYCIN , экспертной системы медицинской диагностики , написанной на LISP в его книге « Парадигмы программирования искусственного интеллекта: тематические исследования в Common Lisp» , которая и сделала именно это.
Может быть, это хорошее место для начала вашего исследования. Вы найдете исходный код онлайн вместе с базой правил , однако я настоятельно рекомендую прочитать текст, а не пытаться понять его только из исходного кода.
Вы также можете перейти прямо на страницу для Emycin (мой акцент),
источник