Remover preditores com variância quase zero
Como você viu no vídeo, no próximo conjunto de exercícios você vai usar o conjunto de dados blood-brain. É um conjunto bioquímico em que a tarefa é prever o seguinte valor para um conjunto de compostos bioquímicos:
log((concentração do composto no cérebro) /
(concentração do composto no sangue))
Isso fornece uma métrica quantitativa da capacidade do composto de atravessar a barreira hematoencefálica e é útil para entender as propriedades biológicas dessa barreira.
Um aspecto interessante desse conjunto é que ele contém muitas variáveis, e várias delas têm variâncias extremamente baixas. Isso significa que há muito pouca informação nessas variáveis porque elas consistem, em grande parte, de um único valor (por exemplo, zero).
Felizmente, o caret possui uma função utilitária chamada nearZeroVar() para remover essas variáveis e economizar tempo durante a modelagem.
nearZeroVar() recebe os dados x e analisa a razão entre o valor mais comum e o segundo mais comum, freqCut, e a porcentagem de valores distintos em relação ao número total de amostras, uniqueCut. Por padrão, o caret usa freqCut = 19 e uniqueCut = 10, que é uma configuração bastante conservadora. Eu prefiro ser um pouco mais agressivo e usar freqCut = 2 e uniqueCut = 20 ao chamar nearZeroVar().
Este exercício faz parte do curso
Machine Learning com caret em R
Instruções do exercício
bloodbrain_x e bloodbrain_y já estão carregados no seu workspace.
- Identifique os preditores com variância quase zero executando
nearZeroVar()no conjunto blood-brain. Armazene o resultado em um objeto chamadoremove_cols. UsefreqCut = 2euniqueCut = 20na chamada denearZeroVar(). - Use
names()para criar um vetor contendo todos os nomes de colunas debloodbrain_x. Chame-o deall_cols. - Crie um novo data frame chamado
bloodbrain_x_smallcom as variáveis de variância quase zero removidas. Usesetdiff()para isolar os nomes das colunas que você deseja manter (ou seja, que você não quer remover).
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Identify near zero variance predictors: remove_cols
remove_cols <- nearZeroVar(___, names = TRUE,
freqCut = ___, uniqueCut = ___)
# Get all column names from bloodbrain_x: all_cols
# Remove from data: bloodbrain_x_small
bloodbrain_x_small <- bloodbrain_x[ , setdiff(___, ___)]