TL: DR
Não haverá diferença se F-regression
apenas computar a estatística F e escolher os melhores recursos. Pode haver uma diferença na classificação, assumindo F-regression
o seguinte:
- Comece com um modelo constante, M0 0
- Experimente todos os modelos compostos por apenas um recurso e escolha o melhor de acordo com a estatística FM1
- Experimente todos os modelos compostos por M 1 mais um outro recurso e escolha os melhores ...M2M1
Como a correlação não será a mesma em cada iteração. Mas você ainda pode obter esse ranking apenas calculando a correlação em cada etapa, então por que F-regression
dá um passo adicional? Faz duas coisas:
- Seleção de recursos: se você deseja selecionar os melhores recursos em um pipeline de aprendizado de máquina, onde você se preocupa apenas com a precisão e possui medidas para ajustar o under / overfitting, você pode se preocupar apenas com a classificação e o cálculo adicional não é útil.k
- Teste de significância: se você estiver tentando entender o efeito de algumas variáveis em uma saída em um estudo, convém criar um modelo linear e incluir apenas as variáveis que estão melhorando significativamente seu modelo, com relação a alguns p valor . Aqui,
F-regression
é útil.
O que é um teste F
Um teste F (Wikipedia) é uma maneira de comparar a importância da melhoria de um modelo, com relação à adição de novas variáveis. Você pode usá-lo quando tiver um modelo básico e um modelo mais complicado M 1 , que contém todas as variáveis de M 0 e um pouco mais. O teste F indica se M 1 é significativamente melhor que M 0 , em relação a umM0M1M0M1M0valor- p .p
Para fazer isso, ele usa a soma residual dos quadrados como uma medida de erro e compara a redução no erro com o número de variáveis adicionadas e o número de observação (mais detalhes na Wikipedia ). A adição de variáveis, mesmo que sejam completamente aleatórias, deverá sempre ajudar o modelo a obter um erro menor ao adicionar outra dimensão. O objetivo é descobrir se os novos recursos são realmente úteis ou se são números aleatórios, mas ainda ajudam o modelo porque adicionam uma dimensão.
O que f_regression
faz
Observe que eu não estou familiarizado com a implementação do Scikit learn, mas vamos tentar descobrir o que f_regression
está fazendo. A documentação afirma que o procedimento é seqüencial. Se a palavra sequencial significa o mesmo que em outros pacotes estatísticos, como Matlab Sequential Feature Selection , eis como eu esperaria que ela prosseguisse:
- Comece com um modelo constante, M0
- Experimente todos os modelos M1 compostos por apenas um recurso e escolha o melhor de acordo com a estatística F
- Experimente todos os modelos constituídos por M 1M2M1 mais um outro recurso e escolha os melhores ...
Por enquanto, acho que é uma aproximação suficientemente próxima para responder sua pergunta; existe uma diferença entre a classificação de f_regression
e classificação por correlação.
Se você começar com o modelo constante e tentar encontrar o melhor modelo com apenas um recurso, M 1 , selecionará o mesmo recurso, seja usando sua abordagem baseada em correlação, pois ambos são uma medida de dependência linear. Mas se você fosse de M 0 para M 1 e depois para M 2 , haveria uma diferença na sua pontuação.M0M1f_regression
M0M1M2
Suponha que você tenha três recursos, , em que ambos x 1 e x 2 estão altamente correlacionados com a saída y , mas também altamente correlacionados um com o outro, enquanto x 3 é apenas intermediário com y . Seu método de pontuação atribuiria as melhores pontuações a x 1 e x 2 , mas o método seqüencial pode não. Na primeira rodada, ele escolheria o melhor recurso, digamos x 1 , para criar M 1 . Então, avaliaria tantox1,x2,x3x1x2yx3yx1x2x1M1 e. É assim que os dois procedimentos que você propõe são diferentes.x2 para M 2 . Como x 2 está altamente correlacionado com um recurso já selecionado, a maioria das informações que ele contém já está incorporada ao modelo e, portanto, o procedimento pode selecionar x 3 . Embora seja menos correlacionado com y , é mais correlacionado com osresíduos, a parte que x 1 ainda não explica, que x 2x3M2x2x3yx1x2
Você ainda pode emular o mesmo efeito com sua ideia, construindo seu modelo sequencialmente e medindo a diferença de ganho para cada recurso adicional, em vez de compará-los ao modelo constante como você está fazendo agora. O resultado não seria diferente dos resultados. A razão para esta função existir é fornecer essa seleção seqüencial de recursos e, adicionalmente, converte o resultado em uma medida F que você pode usar para avaliar a significância.M0f_regression
O objetivo do teste F é fornecer nível de significância. Se você deseja garantir que os recursos incluídos sejam significativos em relação ao seu valor- , use um teste-F. Se você quiser incluir apenas os k melhores recursos, poderá usar apenas a correlação.pk
Material adicional: Aqui está uma introdução ao teste F que você pode achar útil