ComenzarEmpieza gratis

Eliminar predictores con varianza casi nula

Como viste en el vídeo, en el siguiente bloque de ejercicios usarás el conjunto de datos blood-brain. Es un conjunto bioquímico en el que la tarea es predecir el siguiente valor para un conjunto de compuestos bioquímicos:

log((concentration of compound in brain) /
      (concentration of compound in blood))

Esto proporciona una métrica cuantitativa de la capacidad del compuesto para cruzar la barrera hematoencefálica y es útil para comprender las propiedades biológicas de esa barrera.

Un aspecto interesante de este conjunto es que contiene muchas variables, y muchas de ellas tienen varianzas extremadamente bajas. Esto significa que hay muy poca información en esas variables porque, en su mayoría, consisten en un único valor (p. ej., cero).

Por suerte, caret incluye una función de utilidad llamada nearZeroVar() para eliminar estas variables y ahorrar tiempo durante el modelado.

nearZeroVar() recibe datos x, y luego analiza la razón entre el valor más común y el segundo más común, freqCut, y el porcentaje de valores distintos respecto al número total de muestras, uniqueCut. De forma predeterminada, caret usa freqCut = 19 y uniqueCut = 10, que es bastante conservador. A mí me gusta ser un poco más agresivo y usar freqCut = 2 y uniqueCut = 20 al llamar a nearZeroVar().

Este ejercicio forma parte del curso

Machine Learning con caret en R

Ver curso

Instrucciones del ejercicio

bloodbrain_x y bloodbrain_y están cargados en tu espacio de trabajo.

  • Identifica los predictores con varianza casi nula ejecutando nearZeroVar() sobre el conjunto blood-brain. Guarda el resultado en un objeto llamado remove_cols. Usa freqCut = 2 y uniqueCut = 20 en la llamada a nearZeroVar().
  • Usa names() para crear un vector con todos los nombres de columnas de bloodbrain_x. Llámalo all_cols.
  • Crea un nuevo data frame llamado bloodbrain_x_small con las variables de varianza casi nula eliminadas. Usa setdiff() para aislar los nombres de las columnas que quieres conservar (es decir, que no quieres eliminar).

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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(___, ___)]
Editar y ejecutar código