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.
set.seed(7938) # this makes the simulation exactly reproducible
my.fun = function(){
x = sample.int(512, size=90, replace=TRUE)
return(sum(x[1:45]%in%x[46:90])==0)
}
n.unique = replicate(10000, my.fun())
mean(n.unique) # [1] 0.0181
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×10241991/9≈221221×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.