Seleção de Recursos
A seleção de recursos como uma etapa de pré-processamento em machine learning é uma ocorrência comum. Ela pode reduzir a complexidade de um modelo e aumentar sua eficiência e poder preditivo, reduzindo o ruído dos dados. Existem várias formas de se selecionar recursos. Neste post, o método escolhido será o uso de matriz de correlação.
O que é uma Matriz de Correlação?
Uma matriz de correlação é uma tabela quadrada que mostra os coeficientes de correlação entre diferentes recursos de um conjunto de dados. Um coeficiente de correlação mede a força e a direção da relação linear entre duas variáveis. Ele varia de -1 a 1, onde -1 indica uma correlação negativa forte, 0 indica nenhuma correlação e 1 indica uma correlação positiva forte. A partir desses valores, uma matriz de correlação fornece uma indicação de quão fortemente e em que direção dois recursos estão relacionados. Em essência, uma matriz de correlação é um resumo das relações entre pares de recursos. Ela consegue destacar quais estão fortemente relacionados e quais não estão.
Como criar uma matriz de correlação
A criação de uma matriz de correlação é bem direta. Primeiro, calcule os coeficientes de correlação entre todos os pares de variáveis. Organize esses coeficientes em um formato de tabela. Visualize a matriz de correlação como um mapa de calor, onde variáveis altamente correlacionadas são representadas por cores intensas (por exemplo, azul para correlações negativas ou vermelho para correlações positivas). Isso ajuda a identificar agrupamentos de recursos correlacionados.
Na prática, a forma mais simples de criar uma matriz de correlação em Python é com Scikit-learn. Para ilustrar esse processo, usaremos o conjunto de dados iris. O código é mostrado abaixo:
import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import seaborn as sns
# Carrega os dados
iris = load_iris()
X = iris.data
feature_names = iris.feature_names
# Normaliza os recursos
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Calcula matriz de correlação
corr_matrix = np.corrcoef(X_scaled.T)
# Cria heatmap
plt.figure(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', xticklabels=feature_names, yticklabels=feature_names)
plt.title('Matriz de Correlação do Conjunto de Dados Iris')
plt.show()
Neste código, abrimos os dados e separamos os atributos das variáveis-alvo. Depois, normalizamos os dados, calculamos os coeficientes de correlação e plotamos um heatmap.
Matriz de correlação dos atributos do conjunto de dados iris.
Como selecionar recursos com uma matriz de correlação
Para a seleção de recursos com matriz de correlação, existem pelo menos dois aspectos que devem ser explorados. Eles são: correlações entre recursos e a variável-alvo e as correlações de recursos entre si (multicolinearidade).
Recursos altamente correlacionados com a variável de destino devem ser selecionados. Porém, as correlações negativas podem ser tão importantes quanto as positivas para a seleção de recursos. A força da correlação (valor absoluto) é mais importante do que a direção. Uma forte correlação negativa (-1 a -0,5) indica uma relação inversa entre as variáveis. Portanto, considere o valor absoluto das correlações ao selecionar recursos. Selecione recursos com correlação acima de um determinado limite (por exemplo, 0,5). Remova os demais. A remoção de recursos pouco correlacionados ajuda na redução de dimensionalidade de um modelo, o que contribui para um melhor desempenho.
Outro exemplo de matriz de correlação.
Recursos altamente correlacionados entre si também podem ser verificados usando um limite (por exemplo, > correlação de 0,8). Remova um dos recursos altamente correlacionados para reduzir a multicolinearidade. Ela compromete o desempenho dos modelos de machine learning.
Não se esqueça de incluir correções negativas. Se dois recursos estiverem altamente correlacionados negativamente entre si, considere remover um para reduzir a multicolinearidade.
Quais recursos são adequados para uma matriz de correlação?
Em machine learning, uma matriz de correlação mede a relação linear entre pares de recursos em um conjunto de dados. Portanto, a seleção de recursos através de correlação é adequada para problemas em que se espera que a relação entre os recursos seja linear. Além disso, ambas as variáveis de um par devem ser medidas em uma escala contínua. Idealmente, os dados não devem possuir outliers que possam distorcer os resultados e a distribuição conjunta das variáveis deve ser aproximadamente normal.
Limitações
A seleção de recursos através de análises com matriz de correlação tem algumas limitações importantes. A primeira, já mencionada, é que ela mede a relação linear entre pares de recursos. Portanto, ela não é adequada para dados com relações não lineares.
Além disso, a análise de correlação ignora dependências entre recursos. Embora considere relacionamentos em pares, a análise de correlação pode não capturar como vários recursos influenciam conjuntamente a variável de destino.
Veja também:
O que é machine learning (aprendizado de máquina)?
Como machine learning (aprendizado de máquina) funciona?
Como machine learning (aprendizado de máquina) aprende?
Como implementar um modelo de machine learning?
Como escolher um bom modelo de machine learning?
Classificação e regressão em machine learning
O que é conjunto de dados (dataset) em machine learning?
Onde conseguir conjuntos de dados para machine learning?
Salve localmente conjuntos de dados para machine learning
Pré-processamento de dados em machine learning
Regressão Linear e Machine Learning
Conjuntos de treinamento e teste em machine learning
Função de perda em machine learning
Scikit-learn para machine learning
Matrizes de Confusão em Machine Learning
Floresta aleatória com Scikit-learn
Detecção de anomalias com Isolation Forest
Máquinas de vetores de suporte (SVMs)
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.