Suponha que eu queira criar um classificador binário. Eu tenho vários milhares de recursos e apenas alguns 10s de amostras. Pelo conhecimento do domínio, tenho um bom motivo para acreditar que o rótulo da classe pode ser previsto com precisão usando apenas alguns recursos, mas não faço ideia de quais . Também quero que a regra de decisão final seja fácil de interpretar / explicar, exigindo ainda um pequeno número de recursos. Certos subconjuntos de meus recursos são altamente correlacionados, portanto, selecionar os poucos mais preditivos de forma independente não funcionaria. Eu também quero poder fazer testes de hipóteses de maneira significativa em meus recursos.
O procedimento de regressão gradual a seguir é razoável nessas condições:
Dado os recursos já existentes no modelo (ou apenas a interceptação na primeira iteração), selecione o recurso que produz a maior taxa de probabilidade de log quando adicionado ao modelo. Use o teste qui-quadrado da razão de verossimilhança para calcular um valor P nominal para cada teste de hipótese realizado nesta seleção. O nulo aqui é que adicionar a variável extra ao modelo não fornece capacidade preditiva adicional. A alternativa é que ele aumenta a capacidade preditiva
Trate as hipóteses testadas na Etapa 1 de cada iteração como uma família e calcule a taxa de descoberta falsa para o menor valor P (para o recurso selecionado) usando algo como Benjamini-Hochberg.
Vá para 1, a menos que alguns critérios de parada sejam atendidos.
Relate as taxas de descoberta falsas para os recursos individuais, mas não o valor P para o modelo como um todo (pois isso será inflado massivamente). Cada um desses múltiplos valores P corrigidos de teste representa a significância estatística desse recurso, considerando todos os recursos adicionados anteriormente ao modelo.
Fazer algo assim nessas circunstâncias evita com êxito todas as críticas típicas da regressão gradual? As taxas de falsas descobertas são calculadas dessa maneira razoáveis?
Respostas:
Eu não recomendaria que você usasse esse procedimento. Minha recomendação é: abandonar este projeto. Apenas desista e vá embora. Você não tem esperança deste trabalho.
fonte de imagem
Deixando de lado os problemas padrão com a seleção gradual (cf. aqui ), é muito provável que você tenha previsões perfeitas devido à separação em um espaço tão dimensional.
Não tenho detalhes específicos sobre a sua situação, mas você afirma que possui "apenas algumas 10s de amostras". Vamos ser caridosos e dizer que você tem 90. Você ainda diz que tem "vários milhares de recursos". Vamos imaginar que você 'apenas' tenha 2.000. Por uma questão de simplicidade, digamos que todos os seus recursos sejam binários. Você "acredita que o rótulo da classe pode ser previsto com precisão usando apenas alguns recursos", digamos que você procure conjuntos de até 9 recursos no máximo. Por fim, vamos imaginar que o relacionamento é determinístico, para que o relacionamento verdadeiro esteja sempre perfeitamente presente nos seus dados. (Podemos mudar esses números e suposições, mas isso só deve piorar o problema.) Agora, quão bem você seria capaz de recuperar esse relacionamento nessas condições (generosas)? Ou seja, com que frequência o conjunto correto seria o único que produz precisão perfeita? Ou, dito de outra maneira, quantos conjuntos de nove recursos também servirão apenas por acaso?
Algumas matemáticas e simulações (excessivamente) simples devem fornecer algumas pistas para essa pergunta. Primeiro, com 9 variáveis, cada uma das quais pode ser 0 ou 1, o número de padrões que uma observação pode mostrar é , mas você terá apenas 90 observações. Portanto, é perfeitamente possível que, para um determinado conjunto de 9 variáveis binárias, toda observação tenha um conjunto diferente de valores preditores - não há réplicas. Sem réplicas com os mesmos valores preditores em que alguns têm y = 0 e outros y = 1, você terá uma separação completa e será possível prever perfeitamente todas as observações.29=512
Abaixo, tenho uma simulação (codificada em R) para ver com que frequência você pode não ter padrões de valores x com 0 e 1. A maneira como funciona é que eu recebo um conjunto de números de 1 a 512, que representam os padrões possíveis, e vejo se algum dos padrões nos primeiros 45 (que podem ser os 0s) corresponde a qualquer padrão nos segundos 45 (esses podem ser os 1s). Isso pressupõe que você tenha dados de resposta perfeitamente equilibrados, o que oferece a melhor proteção possível contra esse problema. Observe que ter alguns vetores x replicados com valores y diferentes realmente não o tira do sério, apenas significa que você não seria capaz de prever perfeitamente todas as observações em seu conjunto de dados, que é o padrão mais rigoroso I estou usando aqui.
A simulação sugere que você teria esse problema com aproximadamente 1,8% dos conjuntos de 9 variáveis x. Agora, quantos conjuntos de 9 existem? Estritamente, isso seria (desde que estipulamos que as verdadeiras 9 variáveis causais determinísticas estão no seu conjunto). No entanto, muitos desses conjuntos serão sobrepostos; haverá conjuntos não-sobrepostos de 9 dentro de uma partição especificada de suas variáveis (com muitas partições possíveis). Assim, dentro de uma determinada partição, podemos esperar que haja conjuntos de 9 variáveis x que preverão perfeitamente todas as observações em seu conjunto de dados.1991 choose 9=1.3×1024 1991/9≈221 221×0.018≈4
Observe que esses resultados são apenas para casos em que você tem um conjunto de dados relativamente maior (dentro das "dezenas"), um número relativamente menor de variáveis (dentro dos "milhares"), apenas procura casos em que todas as observações podem ser previstas perfeitamente ( haverá muitos outros conjuntos quase perfeitos), etc. É improvável que seu caso real funcione 'tão bem'. Além disso, estipulamos que o relacionamento é perfeitamente determinístico. O que aconteceria se houvesse algum ruído aleatório no relacionamento? Nesse caso, você ainda terá ~ 4 conjuntos (nulos) que prevêem perfeitamente seus dados, mas o conjunto correto pode não estar entre eles .
Por outro lado , o ponto básico aqui é que seu conjunto de variáveis é muito grande / dimensional e sua quantidade de dados é muito pequena, para que tudo seja possível. Se é realmente verdade que você tem "dezenas" de amostras, "milhares" de variáveis e absolutamente nenhuma idéia terrena de quais variáveis podem estar corretas, você não tem esperança de chegar a lugar algum com qualquer procedimento. Vá fazer outra coisa com o seu tempo.
fonte
Então, sugiro avaliar a previsão diretamente, em vez da razão de probabilidade. No entanto, a observação prevista não deve ser incluída na estimativa do modelo (porque essa é exatamente a situação que você enfrentará ao usar seu modelo). Portanto, dê um novo passo 1) (negrito é a minha alteração sugerida). 1) Dados os recursos já existentes no modelo (ou apenas a interceptação na primeira iteração), selecione o recurso que produz as melhores previsões quando adicionado ao modelo.
Agora você precisa decidir
Vou fazer uma sugestão para cada um:
Por etapas, pode ser arriscado porque você pode encontrar "máximos locais" em vez de "máximos globais", principalmente porque você tem um número tão grande de preditores (esse é um grande "espaço" para otimizar e provavelmente é multimodal - o que significa que existem muitos "melhores" modelos)
Acho que você achará muito mais fácil justificar sua escolha do modelo final para um não estatístico, em vez de tentar explicar por que o valor p indica que o modelo é bom.
Duas considerações finais:
fonte