Escolhendo uma métrica de desempenho de classificação para seleção de modelo, seleção de recurso e publicação

8

Eu tenho um conjunto de dados pequeno e desequilibrado (70 positivo, 30 negativo) e ando brincando com a seleção de modelos para parâmetros SVM usando BAC (precisão balanceada) e AUC (área sob a curva). Usei pesos de classe diferentes para o parâmetro C no libSVM para compensar os dados desequilibrados, seguindo os conselhos aqui ( Treinamento de uma árvore de decisão contra dados desequilibrados ).

  1. Parece que o erro de validação cruzada k-fold é muito sensível ao tipo de medida de desempenho. Ele também possui um erro porque os conjuntos de treinamento e validação são escolhidos aleatoriamente. Por exemplo, se eu repetir o BAC duas vezes com diferentes sementes aleatórias, obteremos erros diferentes e, posteriormente, valores ideais de parâmetros diferentes. Se eu calcular a média de pontuações repetidas no BAC, a média de 1000 vezes me fornecerá valores ótimos de parâmetros diferentes da média de 10000 vezes. Além disso, alterar o número de dobras fornece valores de parâmetros ótimos diferentes.

  2. As métricas de precisão para validação cruzada podem ser excessivamente otimistas. Geralmente, qualquer coisa com uma validação cruzada dupla me dá 100% de precisão. Além disso, a taxa de erro é discreta devido ao pequeno tamanho da amostra. A seleção de modelos geralmente fornece a mesma taxa de erro em todos ou na maioria dos valores de parâmetros.

  3. Ao escrever um relatório, como eu saberia que uma classificação é 'boa' ou 'aceitável'? Em campo, parece que não temos algo como um ajuste de qualidade ou um limiar de valor-p que seja comumente aceito. Como estou adicionando os dados de forma iterativa, gostaria de saber quando parar - o que é um bom N onde o modelo não melhora significativamente?

Dadas as questões descritas acima, parece que a precisão não pode ser facilmente comparada entre as publicações, enquanto a AUC foi descrita como um mau indicador de desempenho (veja aqui , ou aqui , por exemplo).

Algum conselho sobre como resolver qualquer um desses 3 problemas?

bravetang8
fonte
1
O que você deseja fazer em grande parte não pode ser feito, especialmente com tão poucos dados. É praticamente isso. Em relação ao seu argumento de que você não possui uma convenção como um limite para os valores-p, provavelmente deve estar agradecido.
gung - Restabelece Monica

Respostas:

5

Parece que o erro de validação cruzada k-fold é muito sensível ao tipo de medida de desempenho. Ele também possui um erro porque os conjuntos de treinamento e validação são escolhidos aleatoriamente.

Acho que você descobriu a alta variação das medidas de desempenho que são proporções de contagens de casos, como . Você tenta estimar, por exemplo, a probabilidade de seu classificador retornar uma resposta correta. Do ponto de vista estatístico, isso é descrito como um estudo de Bernoulli, levando a uma distribuição binomial. Você pode calcular intervalos de confiança para distribuições binomiais e descobrirá que elas são muito amplas. Obviamente, isso limita sua capacidade de fazer comparação de modelos.# correct predictions# test cases

Com os esquemas de validação de reamostragem, como a validação cruzada, você tem uma fonte adicional de variação: a instabilidade de seus modelos (à medida que você constrói modelos substitutos durante cada execução de CV)k

Além disso, alterar o número de dobras fornece valores de parâmetros ótimos diferentes.

Isso é esperado devido à variação. Você pode ter um efeito adicional aqui: libSVM divide os dados apenas uma vez se você usar a validação cruzada interna para ajuste. Devido à natureza dos SVMs, se você construiu o SVM com dados de treinamento idênticos e varia lentamente os parâmetros, verá que os vetores de suporte (e consequentemente a precisão) saltam: desde que os parâmetros do SVM não sejam muito diferentes, ainda assim escolha os mesmos vetores de suporte. Somente quando os paraters são alterados o suficiente, resultam subitamente diferentes vetores de suporte. Portanto, avaliar a grade de parâmetros SVM com exatamente as mesmas divisões de validação cruzada pode ocultar a variabilidade, que você vê entre diferentes execuções.

IMHO, o problema básico é que você faz uma pesquisa na grade, que é uma otimização que depende de um comportamento razoavelmente suave do seu alvo funcional (precisão ou qualquer outra coisa que você use). Devido à alta variação de suas medidas de desempenho, essa suposição é violada. A dependência "irregular" do modelo SVM também viola essa suposição.

As métricas de precisão para validação cruzada podem ser excessivamente otimistas. Geralmente, qualquer coisa com uma validação cruzada dupla me dá 100% de precisão. Além disso, a taxa de erro é discreta devido ao pequeno tamanho da amostra. A seleção de modelos geralmente fornece a mesma taxa de erro em todos ou na maioria dos valores de parâmetros.

Isso é esperado, dados os problemas gerais da abordagem.

No entanto, geralmente é possível escolher valores de parâmetros realmente extremos onde o classificador se decompõe. IMHO, o intervalo de parâmetros em que os SVMs funcionam bem é uma informação importante.

Em qualquer caso, você precisa absolutamente de uma validação externa (dupla / aninhada) do desempenho do modelo escolhido como 'melhor'.

Eu provavelmente faria várias execuções / repetições / iterações de uma validação cruzada externa ou uma validação externa fora da inicialização e forneceria a distribuição de

  • hiperparâmetros para o "melhor" modelo
  • desempenho relatado do ajuste
  • desempenho observado da validação externa

A diferença entre os dois últimos é um indicador de ajuste excessivo (por exemplo, devido a "skimming" da variação).

Ao escrever um relatório, como eu saberia que uma classificação é 'boa' ou 'aceitável'? Em campo, parece que não temos algo parecido com uma qualidade de ajuste ou limite de valor-p que é comumente aceito. Como estou adicionando os dados de forma iterativa, gostaria de saber quando parar - o que é um bom N em que o modelo não melhora significativamente?

(O que você está adicionando? Casos ou variáveis ​​/ recursos?)

Antes de tudo, se você fizer uma modelagem iterativa, precisará relatar que, devido ao seu procedimento de ajuste, seu desempenho não deve ser levado a sério, pois está sujeito a um viés otimista. A melhor alternativa é fazer uma validação do modelo final. No entanto, os dados de teste devem ser independentes de todos os dados que já foram treinados ou do seu processo de decisão para a modelagem (portanto, você pode não ter esses dados).

cbeleites descontentes com o SX
fonte
Obrigado pela excelente resposta. Pelo que entendi, sua estratégia envolveria a construção de uma distribuição de hiperparâmetros a partir de intervalos de valores provenientes de várias dobras / iterações externas. (1) Nesse caso, exatidões otimistas ou CUA são válidas? Eu acho que uma métrica pessimista seria melhor para encontrar o "melhor modelo" porque, caso contrário, a distribuição das pontuações de CV repetido seria "unilateral". (2) Além disso, acho peculiar que a média de mais iterações de CV não necessariamente ajude - é porque os erros não são distribuídos probabilisticamente devido à instabilidade do modelo SVM?
bravetang8
Para esclarecer minha última pergunta, estou adicionando casos iterativamente com experimentos. Estou usando um modelo inicial para escolher pontos 'informativos', dos quais posso reconstruir e refinar o modelo original. O que eu essencialmente quero saber é quantos casos eu preciso adicionar para que o erro estimado (da validação externa) seja minimamente tendencioso. Eu esperava que houvesse uma relação caso / recurso que fosse 'aceitável'.
bravetang8
@ bravetang8: (1) você está certo: medidas otimistas tendenciosas não são uma boa idéia: não para otimização interna porque a otimização não pode distinguir entre diferentes modelos que parecem ser perfeitos. Não é para otimização externa, porque em muitas aplicações é melhor ter uma estimativa conservadora do desempenho do que uma otimização excessiva. Mas é bom saber se a otimização interna sofre com a estimativa interna excessivamente otimista ou se isso não é um problema aqui.
cbeleites descontente com SX
@ bravetang8: 2) a média de iterações do CV reduzirá apenas a parte da variação que é devida à instabilidade do modelo, mas não a parte que é devida ao seu conjunto de casos finitos. Portanto, após iterações "suficientes", a variação do tipo instabilidade do modelo será apenas um contribuidor menor da variação total e não ajuda a fazer mais iterações.
cbeleites descontente com SX
@cbeleites, oi cbeleites, eu queria saber se você tem tempo para dar uma olhada neste post, embora o prof.Harrel já tenha feito uma anotação importante aqui? Obrigado. stats.stackexchange.com/questions/86917/…
lennon310
3

Mais simples que o BIR são as regras de pontuação logarítmica ou quadrática (Brier). Essas são pontuações adequadas que, diferentemente da proporção classificada corretamente, não darão origem a um modelo falso durante a otimização.

Frank Harrell
fonte
Para isso, o OP precisa mudar para a saída de probabilidade para o SVM. Pelo menos com o libSVM, pelo IIRC, isso é calculado ajustando-se uma logística, e não tenho certeza de como isso está intimamente relacionado ao SVM original.
cbeleites descontente com SX
1

Como você ressalta, a precisão preditiva e a AUC são limitadas em certos aspectos. Eu daria uma chance ao Bayesian Information Reward (BIR), que deveria dar uma avaliação mais sensível de quão bem ou mal está o seu classificador e como isso muda conforme você ajusta seus parâmetros (número de dobras de validação, etc.).

A intuição do BIR é a seguinte: um apostador é recompensado não apenas por identificar os vencedores e perdedores (zeros e zeros), mas mais importante ainda por identificar as probabilidades apropriadas. Além disso, dá um passo à frente e compara todas as previsões com as probabilidades anteriores.

Digamos que você tenha uma lista de 10 jogos do Arsenal (time de futebol da Inglaterra) com possíveis resultados: ou . A fórmula para a classificação binária gratificante por jogo é:L o s eWinLose

insira a descrição da imagem aqui

onde é a previsão do seu modelo para um jogo específico do Arsenal é a probabilidade anterior de o Arsenal vencer um jogo. O ponto de partida é: se eu souber de antemão que e meu modelo de preditor produziu , mesmo que sua previsão esteja correta, ele será recompensado com 0, pois não está transmitindo nenhuma informação nova. Como observação, você trata as classificações corretas e incorretas de maneira diferente, conforme mostrado nas equações. Como resultado, com base em se a previsão está correta ou incorreta, o BIR para uma única previsão pode assumir um valor entre .p p = 0,6 p = 0,6 ( - i n f , 1 ]ppp=0.6p=0.6(inf,1]

O BIR não se limita às classificações binárias, mas também é generalizado para problemas de classificação multinomial.

Zhubarb
fonte