Eu sou novo no Machine Learning. No momento, estou usando um classificador Naive Bayes (NB) para classificar textos pequenos em 3 classes como positivos, negativos ou neutros, usando NLTK e python.
Depois de realizar alguns testes, com um conjunto de dados composto de 300.000 instâncias (16.924 positivos 7.477 negativos e 275.599 neutros), descobri que, quando aumento o número de recursos, a precisão diminui, mas a precisão / recuperação para classes positivas e negativas aumenta. esse é um comportamento normal para um classificador NB? Podemos dizer que seria melhor usar mais recursos?
Alguns dados:
Features: 50
Accuracy: 0.88199
F_Measure Class Neutral 0.938299
F_Measure Class Positive 0.195742
F_Measure Class Negative 0.065596
Features: 500
Accuracy: 0.822573
F_Measure Class Neutral 0.904684
F_Measure Class Positive 0.223353
F_Measure Class Negative 0.134942
Desde já, obrigado...
Editar 26/11/2011
Testei três estratégias diferentes de seleção de recursos (MAXFREQ, FREQENT, MAXINFOGAIN) com o classificador Naive Bayes. Primeiro, aqui estão as medidas de precisão e F1 por classe:
Em seguida, plotei o erro de trem e o erro de teste com um conjunto de treinamento incremental, ao usar MAXINFOGAIN com os 100 principais e os 1000 principais recursos:
Então, parece-me que, embora a mais alta precisão seja alcançada com o FREQENT, o melhor classificador é aquele que usa MAXINFOGAIN, isso é certo ? Ao usar os 100 principais recursos, temos um viés (o erro de teste está próximo do erro de treinamento) e adicionar mais exemplos de treinamento não ajudará. Para melhorar isso, precisaremos de mais recursos. Com 1000 recursos, o viés é reduzido, mas o erro aumenta ... Tudo bem? Devo precisar adicionar mais recursos? Eu realmente não sei como interpretar isso ...
Obrigado novamente...
fonte
Respostas:
Precisão vs medida F
Primeiro de tudo, quando você usa uma métrica, deve saber como jogar. A precisão mede a proporção de instâncias classificadas corretamente em todas as classes. Isso significa que, se uma classe ocorre com mais frequência do que outra, a precisão resultante é claramente dominada pela precisão da classe dominante. No seu caso, se alguém construir um Modelo M que apenas predizer "neutro" para cada instância, a precisão resultante será
Bom, mas inútil.
Portanto, a adição de recursos melhorou claramente o poder do NB de diferenciar as classes, mas, ao prever "positivo" e "negativo", um erro classifica os neutros e, portanto, a precisão diminui (grosso modo). Esse comportamento é independente do NB.
Mais ou menos recursos?
Em geral, não é melhor usar mais recursos, mas usar os recursos certos. Mais recursos é melhor na medida em que um algoritmo de seleção de recursos tem mais opções para encontrar o subconjunto ideal (sugiro explorar: seleção de recursos com validação cruzada ). No que diz respeito ao NB, uma abordagem rápida e sólida (mas menos que ótima) é usar o InformationGain (Ratio) para classificar os recursos em ordem decrescente e selecionar os k principais.
Novamente, este conselho (exceto InformationGain) é independente do algoritmo de classificação.
EDIT 27.11.11
Houve muita confusão em relação ao viés e variação para selecionar o número correto de recursos. Por isso, recomendo a leitura das primeiras páginas deste tutorial: tradeoff Bias-Variance . A essência principal é:
As curvas de aprendizado plotadas indicam de fato o viés, pois o erro é plotado. No entanto, o que você não pode ver é a variação, pois o intervalo de confiança do erro não é plotado.
Exemplo: ao executar uma validação cruzada de três vezes 6 vezes (sim, é recomendável repetir com particionamento de dados diferente, Kohavi sugere 6 repetições), você obtém 18 valores. Eu agora esperaria que ...
Esse comportamento do erro / viés é exatamente o que vemos em seus gráficos. Não podemos fazer uma declaração sobre a variação. O fato de as curvas estarem próximas umas das outras pode ser uma indicação de que o conjunto de testes é grande o suficiente para mostrar as mesmas características do conjunto de treinamento e, portanto, que o erro medido pode ser confiável, mas isso é (pelo menos tanto quanto eu entendi não é suficiente para fazer uma declaração sobre a variação (do erro!).
Ao adicionar mais e mais exemplos de treinamento (mantendo o tamanho do conjunto de testes fixo), eu esperaria que a variação de ambas as abordagens (número pequeno e alto de recursos) diminua.
Ah, e não se esqueça de calcular o infogain para a seleção de recursos usando apenas os dados da amostra de treinamento! É tentado usar os dados completos para a seleção de recursos e, em seguida, executar o particionamento de dados e aplicar a validação cruzada, mas isso levará ao sobreajuste. Não sei o que você fez, este é apenas um aviso que nunca se deve esquecer.
fonte
Para saber se é útil usar mais recursos, traçaria as curvas de aprendizado. Acho que isso está claramente explicado na 10ª unidade da classe Machine Learning de Stanford, denominada "Aconselhar para aplicar o aprendizado de máquina", que você pode encontrar aqui: http://www.ml-class.org/course/video/preview_list .
Traçando curvas de aprendizado, você pode entender se o seu problema é o alto viés ou a alta variação. Desde que você aumente o número de exemplos de treinamento, plote o erro de treinamento e o erro de teste (ou seja, precisão 1), este último é o erro do seu classificador estimado em um conjunto de dados diferente. Se essas curvas estiverem próximas uma da outra, você tem um problema de alta polarização e provavelmente seria benéfico inserir mais recursos. Por outro lado, se suas curvas estiverem bastante separadas, desde que você aumente o número de exemplos de treinamento, você terá um problema de alta variação. Nesse caso, você deve diminuir o número de recursos que está usando.
Editar
Vou adicionar alguns exemplos de curvas de aprendizado. Estas são curvas de aprendizado obtidas com uma regressão logística regularizada. Gráficos diferentes estão relacionados a diferentesλ
fonte