Estou construindo um categorizador de texto para frases curtas. Além de dizer ao usuário "a categoria do texto digitado é C", quero poder explicar por que tomei essa decisão, de uma maneira curta e compreensível. Por exemplo, não quero dizer ao usuário "Coloquei sua frase em uma complexa rede neural de três camadas e essa é a resposta que obteve a melhor pontuação"; Quero explicações como "Sua sentença contém as palavras U, V e W, características desta categoria, devido a sentenças como X, Y e Z que apareceram nos dados de treinamento".
Minha pergunta é: quais algoritmos de classificação são mais adequados para essa aplicação?
k-vizinhos mais próximos parece ser um bom candidato, porque posso dizer ao usuário "Sua sentença tem a categoria C porque é semelhante às sentenças X, Y e Z que têm a mesma categoria. Mas é conhecido por seu desempenho em problemas de categorização de texto. Estou à procura de uma classificação que equilibre desempenho com capacidade de explicação.
EDIT: Depois de passar muito tempo procurando por um classificador, comecei a construir uma biblioteca de aprendizado de máquina chamada limdu , que permite que os classificadores expliquem suas decisões. Ainda está em desenvolvimento, mas já me ajudou a explicar a mim e aos meus colegas por que nossos classificadores falham com tanta frequência ...
fonte
Respostas:
Embora ele tenha um desempenho ruim nas tarefas de classificação de texto, se você desejar uma explicação clara do raciocínio de classificação, uma árvore de decisão seria sua melhor opção, pois fornece regras claras sobre como uma instância é classificada. Um rastreamento da árvore forneceria os valores determinantes e, analisando as instâncias próximas ao nó raiz, você poderá determinar quais atributos foram mais significativos na classificação.
Outra opção seria usar um classificador Naive Bayes , que funciona melhor em tarefas de mineração de texto e forneceria um esquema de avaliação compreensível com base nas probabilidades que você poderia usar para gerar o "porquê" que está procurando, fornecendo até uma indicação de quais valores de atributo foram mais importantes que outros na determinação.
As Máquinas de Vetor de Suporte , especificamente a Otimização Mínima Sequencial (SMO), parecem funcionar bem com essas tarefas e também fornecem indicação dos valores usados para fazer a classificação na forma de pesos de atributo e vetores de suporte, mas acho que você pode ter mais dificuldade explicitando como esses pesos e vetores influenciaram a decisão geral de classificação.
Boa sorte com seu projeto! Parece muito interessante.
fonte
Lembro-me vagamente de que Peter Norvig teve uma implementação do MYCIN , um sistema especialista em diagnóstico médico , escrito em LISP em seu livro Paradigmas de Programação de Inteligência Artificial: Estudos de Caso em Common Lisp , que fez exatamente isso.
Talvez seja um bom lugar para começar sua pesquisa. Você encontrará o código-fonte on - line, juntamente com uma base de regras , no entanto, recomendo a leitura do texto e não tente entendê-lo apenas a partir do código-fonte.
Você também pode ir diretamente à página da Emycin (minha ênfase),
fonte