Aqui, o @gung faz referência à regra .632+. Uma pesquisa rápida no Google não fornece uma resposta fácil de entender sobre o significado dessa regra e com que finalidade ela é usada. Alguém esclareceria a regra .632+?
Vou chegar ao estimador 0.632, mas será um desenvolvimento um tanto longo:
Suponha que desejamos prever com usando a função , onde pode depender de alguns parâmetros estimados usando os dados , por exemplo,
Uma estimativa ingênua de erro de previsão é onde é uma função de perda, por exemplo, perda de erro ao quadrado. Isso geralmente é chamado de erro de treinamento. Efron et al. chama de taxa de erro aparente ou taxa de re-substituição. Não é muito bom, pois usamos nossos dados para ajustar . Isso resulta em sendo enviesado para baixo. Você quer saber o desempenho do seu modelo na previsão de novos valores.
Geralmente, usamos a validação cruzada como uma maneira simples de estimar o erro de previsão de amostra extra-amostra (quão bem o nosso modelo se comporta com dados que não estão em nosso conjunto de treinamento?).
Uma maneira popular de fazer isso é fazer a validação cruzada em fold. Divida seus dados em grupos (por exemplo, 10). Para cada grupo , ajuste seu modelo nos demais grupos e teste-o no ésimo grupo. Nosso erro de previsão de amostra extra validada cruzada é apenas a média onde é alguma função de índice que indica a partição à qual a observação está alocada é o valor previsto de usando dados que não estão no conjunto th.
Este estimador é aproximadamente imparcial para o verdadeiro erro de previsão quando e tem maior variação e é mais caro computacionalmente para maior . Então, mais uma vez, vemos o trade-off de desvio e variação em jogo.
Em vez de validação cruzada, poderíamos usar o bootstrap para estimar o erro de previsão de amostra extra. A reamostragem de bootstrap pode ser usada para estimar a distribuição amostral de qualquer estatística. Se nossos dados de treinamento forem , podemos pensar em tirar amostras de bootstrap (com substituição) deste conjunto onde cada é um conjunto de amostras. Agora podemos usar nossas amostras de autoinicialização para estimar o erro de previsão extra-amostra: que é o valor previsto em do modelo ajustado ao
No entanto, se tivermos uma função de previsão altamente super ajustada (por exemplo, ), mesmo o estimador .632 será enviesado para baixo. O estimador .632+ foi projetado para ser um compromisso menos tendencioso entre e . com que é a taxa de erro sem informação, estimada pela avaliação do modelo de previsão em todas as combinações possíveis de segmenta e preditores .
Aqui mede a taxa de super adaptação. Se não houver (R = 0, quando ), isso é igual ao estimador .632.
Você vai encontrar mais informações na seção 3 deste 1 papel. Mas, para resumir, se você chamar uma amostra de números de sorteados aleatoriamente e com substituição, conterá em média aproximadamente elementos únicos.S n {1:n} S (1−e−1)n≈0.63212056n
O raciocínio é o seguinte. Nós preenchemos amostrando vezes (aleatoriamente e com substituição) de . Considere um índice específico .S={s1,…,sn} i=1,…,n {1:n} m∈{1:n}
Então:
e
e isso é verdade (intuitivamente, uma vez que amostramos com substituição, as probabilidades não dependem de )∀1≤i≤n i
portanto
Você também pode realizar esta pequena simulação para verificar empiricamente a qualidade da aproximação (que depende de ):n
1. Bradley Efron e Robert Tibshirani (1997). Aprimoramentos na validação cruzada: o método .632+ Bootstrap . Jornal da Associação Estatística Americana , vol. 92, n. 438, pp. 548-560.
fonte
Na minha experiência, principalmente com base em simulações, as variantes de bootstrap 0.632 e 0.632+ foram necessárias apenas devido a problemas graves causados pelo uso de uma regra de pontuação de precisão inadequada, ou seja, a proporção "classificada" corretamente. Quando você usa regras de pontuação adequadas (por exemplo, pontuação baseada em desvio ou Brier) ou semi-adequadas (por exemplo, -index = AUROC), a inicialização padrão do otimizador de Efron-Gong funciona bem.c
fonte
Essas respostas são muito úteis. Como não consegui encontrar uma maneira de demonstrar isso com matemática, escrevi um código Python que funciona muito bem:
fonte