Como usar python para selecionar as variáveis ​​adequadas para a ciência de dados

Selecionando as variáveis ​​corretas em Python podem melhorar o processo de aprendizagem em ciência de dados, reduzindo a quantidade de ruído (informação inútil) que podem influenciar estimativas do aluno. seleção de variáveis, portanto, pode efetivamente reduzir a variância das previsões. A fim de envolver apenas as variáveis ​​úteis na formação e deixar de fora os redundantes, você pode usar essas técnicas:

  • abordagem univariada: Selecione as variáveis ​​mais relacionadas com o resultado alvo.

  • Greedy ou para trás abordagem: Mantenha apenas as variáveis ​​que podem ser removidos a partir do processo de aprendizagem sem danificar o seu desempenho.

A seleção por medidas univariadas

Se você decidir para selecionar uma variável pelo seu nível de associação com o seu alvo, a classe SelectPercentile fornece um procedimento automático para manter apenas uma certa percentagem das melhores características, associadas. As métricas disponíveis para associação são

  • f_regression: Usado apenas para alvos numéricos e com base no desempenho de regressão linear.

  • f_classif: Usado apenas para alvos categóricas e com base na análise de variância (ANOVA) teste estatístico.

  • chi2: Realiza a estatística de qui-quadrado para alvos categóricas, que é menos sensível à relação não linear entre a variável preditiva e seu alvo.

Ao avaliar os candidatos a um problema de classificação, f_classif e chi2 tendem a fornecer o mesmo conjunto de principais variáveis. Ainda é uma boa prática para testar as seleções de ambos os indicadores de associação.

Video: Fisl 16 - Cientista de Dados – Dominando o Big Data com Software Livre

Além de aplicar uma seleção direta das principais associações percentuais, SelectPercentile Também pode classificar as melhores variáveis ​​para torná-lo mais fácil de decidir em que percentil para excluir um recurso de participar no processo de aprendizagem. A classe SelectKBest é análogo, na sua funcionalidade, mas selecciona o topo k variáveis, onde k é um número, não um percentil.

de Selector_f.fit sklearn.feature_selection importação SelectPercentilefrom sklearn.feature_selection importação f_regressionselector_f = SelectPercentile (f_regression, percentil = 25) (X, Y) para N, S em fecho de correr (boston.feature_names, Selector_f.scores _): print `F-pontuação: % 3,2 pés por recurso s% `% (s, N) F-pontuação: 88,15 por recurso CRIMF-pontuação: 75,26 por recurso ZnF-pontuação: 153,95 para recurso INDUSF-pontuação: 15,97 por recurso CHASF-pontuação: 112,59 para recurso NOXF -score: 471,85 para o recurso RMF-score: 83,48 por recurso AGEF-score: 33.58 para o recurso DISF-score: 85,91 por recurso RADF-score: 141,76 para o recurso TAXF-score: 175,11 para o recurso PTRATIOF-score: 63.05 para o recurso BF- pontuação: 601,62 para o recurso lstat

Usando o nível de produção associação ajuda você a escolher as variáveis ​​mais importantes para o seu modelo de máquina-learning, mas você deve prestar atenção para fora para estes problemas possíveis:



  • Algumas variáveis ​​com alta associação também pode ser altamente correlacionados, introduzindo informações duplicadas, que atua como o ruído no processo de aprendizagem.

  • Algumas variáveis ​​podem ser penalizados, especialmente binários queridos (variáveis ​​que indicam um estado ou característica utilizando o valor 1 quando ela está presente, 0 quando não é). Por exemplo, observe que a saída mostra a variável binária CHAS como o menos associado com a variável-alvo (mas você sabe a partir de exemplos anteriores que é influente da fase de validação cruzada).

O processo de seleção univariada pode dar-lhe uma vantagem real quando você tem um grande número de variáveis ​​para selecionar e todos os outros métodos transformar computacionalmente inviável. O melhor procedimento é reduzir o valor de SelectPercentile pela metade ou mais das variáveis ​​disponíveis, reduzir o número de variáveis ​​a um número gerenciável, e, consequentemente, permitir o uso de um método mais sofisticado e mais preciso, como uma busca gananciosa.

Usando uma busca gananciosa

Ao usar uma seleção univariada, você tem que decidir por si mesmo como muitas variáveis ​​para manter: selecção Greedy reduz automaticamente o número de recursos envolvidos em um modelo de aprendizagem com base em sua contribuição efetiva para o desempenho medido pela medida de erro.

o RFECV classe, ajuste dos dados, pode fornecer informações sobre o número de recursos úteis, apontá-los para você, e transformar automaticamente o X dados, pelo método de transformar, em um reduzido conjunto de variáveis, como mostrado no exemplo que se segue:

sklearn.feature_selection de importação RFECVselector = RFECV (estimador = regressão, CV = 10, pontuação = `mean_squared_error`) selector.fit (X, Y) de impressão ( “Optimal número de características:% d”% selector.n_features_) número óptimo de características: 6

É possível obter um índice para o melhor conjunto de variáveis ​​chamando o atributo Apoio, suporte_ de RFECV classe depois de ajustá-lo.

boston.feature_names impressão [selector.support _] [NOX ‘CHAS’ ‘’ ‘RM’ ‘DIS’ ‘PTRATIO’ ‘lstat’]

Notar que CHAS agora está incluído entre as características mais preditivos, o que contrasta com o resultado da pesquisa univariada. o RFECV método pode detectar se uma variável é importante, não importa se é binário, categórica ou numérica, pois avalia diretamente o papel desempenhado pelo recurso na previsão.

o RFECV método é, certamente, mais eficiente, quando em comparação com a abordagem univariada, porque considera características altamente correlacionados e é ajustado para optimizar a medida de avaliação (que normalmente não é qui-quadrado ou F-pontuação). Sendo um processo ganancioso, que é computacionalmente exigente e só podem aproximar o melhor conjunto de preditores.

Como RFECV aprende o melhor conjunto de variáveis ​​de dados, a seleção pode overfit, que é o que acontece com todos os outros algoritmos de aprendizagem de máquina. tentando RFECV em diferentes amostras de dados de treinamento pode confirmar as melhores variáveis ​​de usar.


Publicações relacionadas