Estatística para Seleção de Atributos

Gustavo Santos
Data Hackers
Published in
7 min readJan 4, 2021

--

Entendendo o que está por trás dos testes de correlação, chi-quadrado e ANOVA para seleção de atributos.

Photo by Max van den Oetelaar on Unsplash

Duas Partes

Vou dividir o conteúdo deste assunto em duas postagens. O primeiro artigo é sobre os testes estatísticos que estão por trás da ferramenta SelectKBest do sklearn. Na Parte 2, vou dissertar sobre o uso da ferramenta de seleção de atributos em si e explicar quais testes usamos com quais tipos de dados.

Nesta postagem, você encontra:

  • Correlação Pearson e Spearman
  • Chi-Squared (ou Chi-quadrado)
  • ANOVA

Não é só o Modelo

Criar um modelo preditivo é, talvez, uma das coisas mais básicas que aprendemos durante os estudos da Ciência de Dados. E, veja, não digo isso com desdém. Longe de mim. Na verdade, para aprender esse "básico" eu levei um bom tempo.

Digo isso porque, na verdade, criar o modelo em si será uma linha ou pouco mais do seu script. lm(target~var, data) em R. model = LinearRegression().fit(X,y) em Python, por exemplo.

Entretanto, o que vem antes dessa única linha é que vai fazer a diferença entre um modelo bom, regular ou ruim. Toda a Análise Exploratória dos dados, limpeza, normalização, selecionar as melhores variáveis, enfim, tem um monte de trabalho antes de criar o modelo. Pois eis que entramos no assunto desta postagem: Seleção de Atributos.

Por Que Seleção de Atributos?

Seleção de Atributos foca primariamente em remover preditores redundantes ou não-informativos do modelo. — Max Kuhn , Kjell Johnson — Applied Predictive Modeling

Depois que estamos familiarizados com os dados, o dataset já foi limpo e normalizado, é natural criarmos uma primeira versão do nosso modelo, o qual servirá de ponto de partida, uma referência para sabermos se estamos melhorando ou piorando em performance, versão após versão.

Geralmente, esse primeiro modelo é feito usando todas as variáveis, sem muito pudor. Queremos apenas saber o quanto toda aquela massa de variáveis preditoras podem explicar da nossa variável target.

Colocando em perspectiva, imagine que eu tenho aquele dataset dos Pinguins (sim, um dos muitos datasets-exemplo bem conhecidos. O foco é no conteúdo, não no dataset… heheh) e eu quero prever o sexo do animal baseado nas outras variáveis: espécie, comprimento e profundidade do bico, tamanho das nadadeiras, massa corporal e ilha onde habita.

Extrato do dataset

É de se esperar que nem todas as variáveis preditoras carreguem informação relevante para de fato prever o sexo dos pinguins. Se "jogarmos" todas elas no modelo, certamente que teremos um resultado. Mas será que esse resultado não terá muito ruído?

Pense bem: será que a ilha onde habitam ou a espécie podem realmente me ajudar a prever o sexo do animais? Afinal, é natural que em todas as ilhas e todas as espécies tenham pinguins machos e fêmeas. A não ser que exista uma discrepância muito grande a favor de um dos sexos, não creio que essas variáveis somarão tanto para o modelo final. Vamos ver.

Objetivando chegar em uma resposta cientificamente embasada, ao invés de mera opinião, temos diversos testes estatísticos que podem ser usados para nos ajudar.

Teste de Correlação: Pearson vs Spearman

O teste de correlação mede a força da relação linear entre duas variáveis.

Um dos métodos mais usados na seleção de variáveis para modelos lineares é o cálculo de correlação, dada a sua facilidade de medição e entendimento. Basicamente, estamos medindo o quanto uma variável influencia em outra. Quando A aumenta ou diminui, mede-se o quanto B irá aumentar ou diminuir proporcionalmente em relação a A.

Após o cálculo, teremos números que vão de -1 (correlação perfeitamente negativa) a 0 (sem correlação) até 1 (correlação perfeitamente positiva). Baseado nesses números, podemos selecionar os valores que mais se aproximam de 1 ou -1 e descartamos os valores mais próximos de 0. É um modo simples, rápido e muitas vezes efetivo para a seleção de variáveis para um modelo linear.

Temos dois modos principais de calcular a correlação: método de Pearson e o método de Spearman.

Pearson é o mais comumente usado, pois ele mede o coeficiente de correlação entre duas variáveis numéricas contínuas. As variáveis A e B variam juntas e em determinada proporção. Exemplos: Quanto mais quente a temperatura, mais sorvetes eu vendo ou Quanto maior o PIB, menor a taxa de mortalidade infantil de um país. Assim, o número extraído do cálculo vai dizer quão forte é a relação e, quanto maior é a correlação, mais próximo o gráfico será de uma linha reta.

Imagem clássica que representa a relação entre duas variáveis. Creditos: Wikipedia

Já o teste de correlação de Spearman é semelhante em termos de significado e interpretação. Entretanto, a utilização e o cálculo são diferentes. Usamos o método de Spearman quando queremos medir a correlação entre variáveis numéricas (lineares ou não) ou entre variáveis qualitativas e quantitativas. Afinal, esse teste mede a relação monotônica entre duas variáveis. De forma simples, significa medir se X e Y variam juntas, mas não necessariamente em uma taxa constante. Se X aumenta, Y também aumenta, independentemente de ser proporcional ao aumento de X.

Para cada valor mais alto de X, existe um valor mais alto de Y. Isso é a correlação perfeita de Spearman. Créditos da Imagem: Wikipedia

Teste do Chi-Quadrado

O segundo teste que vou apresentar neste artigo é o Chi-Quadrado (ou também chamado de Chi-Squared).

Chi Quadrado mede a relação de dependência entre duas variáveis categóricas, verificando como os valores esperados desviam dos valores observados.

Quando temos um alto valor de Chi-quadrado (nosso p-value será baixo), significa que temos evidência estatística para inferir que os valores observados e esperados não são os mesmos, portanto possuem dependência entre si.

Quanto mais alto o Chi-quadrado, maior a dependência entre as variáveis.

O teste pode ser feito de modo simples em Python. Basta usar a função chi2 do pacote sklearn from sklearn.feature_selection import chi2.

No código a seguir, você poderá ver como transformei um pouco nosso dataset dos pinguins para simular as variáveis species e island como categóricas ordinais, variando entre 1 e 3. O teste retornou valores muito baixos de Chi e bem altos para p-value, confirmando que ilha de habitação e espécie não influenciam no sexo dos pinguins, sendo, desta forma, menos relevantes para a criação de um eventual modelo preditivo.

ANOVA: Análise de Variância

Para fechar este primeiro artigo, vamos estudar a Análise de Variância, comumente referida como ANOVA (Analysis Of Variance).

ANOVA é um método estatístico para verificar se existe diferenças significativas entre as médias de grupos de dados, sendo possível inferir se as variáveis são dependentes uma sobre a outra.

Nessa metodologia, vamos medir o F-Value que é a relação entre a variância entre grupos dividido pela variância dentro dos grupos. Deste modo, fica claro dizer que quanto maior a variância entre os grupos, mais diferentes as duas variáveis serão. Então, quanto maior o valor de F maior é a evidência de que as variáveis são diferentes entre si e que exercem influência uma sobre a outra

Inversamente verdadeiro, maiores valores de F significam menores valores de p — significância estatística.

Para aplicar o teste em Python, veja o notebook abaixo. Usei o teste anova do pacote pingouin. O statsmodels também tem o teste.

Usamos o teste ANOVA para entradas numéricas e saídas categóricas (classificação). Como a ideia seria criar um modelo para classificar pinguins em macho ou fêmea, usamos esse método que mostrou que os melhores atributos seriam aqueles com maiores F scores: massa corporal, características da nadadeira e do bico. Como imaginávamos, ilha onde habitam e espécie não seriam relevantes para este modelo preditivo.

Conclusão

Ufa! Foi bastante conteúdo.

Concluímos o artigo mostrando um pouco dos testes que estão por trás de métodos de seleção de atributos em Machine Learning.

Aprendemos que:

  • Os testes de correlação de Pearson são para relações lineares e numéricas.
  • Correlação de Spearman é para valores lineares ou não-linerares e para variáveis numéricas ordinais (3 > 2 > 1)
  • Chi-Quadrado é um teste para saber se variáveis são dependentes uma da outra.
  • Valores altos de Chi-Quadrado indicam variáveis mais dependentes e melhores para serem usadas no modelo.
  • ANOVA mede as relações entre grupos de dados inferindo a dependência entre eles a partir de diferenças nas médias.
  • ANOVA se baseia em valores de F. Quanto maior o valor de F, maior a diferença entre grupos e, logo, maior impacto uma variável causa na outra, sendo um bom indicativo para selecionar a variável para seu modelo.

Caros leitores. Não sou estatístico e nem matemático. Sou apenas um Cientista de dados esforçado que está aprendendo e compartilhando conhecimento de estudos. Se coloquei alguma definição errônea, me apontem que farei correções.

No mais, é isso.

if data:

data.science()

Leia também a parte 2 do meu artigo:

Referências

Gus

--

--

Gustavo Santos
Data Hackers

Data Scientist. I extract insights from data to help people and companies to make better and data driven decisions. | In: https://www.linkedin.com/in/gurezende/