Selección de funciones con el paquete Caret R
Seleccionar las características correctas en tus datos puede significar la diferencia entre un rendimiento mediocre con tiempos de entrenamiento prolongados y un rendimiento excelente con tiempos de entrenamiento cortos.
El paquete caret R proporciona herramientas para informar automáticamente sobre la relevancia e importancia de los atributos en sus datos e incluso seleccionar las características más importantes para usted.
En esta publicación descubrirá las herramientas de selección de funciones en el paquete Caret R con recetas independientes en R.
Después de leer este post sabrás:
- Cómo eliminar funciones redundantes de su conjunto de datos.
- Cómo clasificar las funciones de tu conjunto de datos según su importancia.
- Cómo seleccionar funciones de su conjunto de datos mediante el método de eliminación recursiva de funciones.
Pon en marcha tu proyecto con mi nuevo libro Machine Learning Mastery With R, que incluye tutoriales paso a paso y los archivos de código fuente de R para todos los ejemplos.
Empecemos.
Eliminar funciones redundantes
Los datos pueden contener atributos que están altamente correlacionados entre sí. Muchos métodos funcionan mejor si se eliminan los atributos altamente correlacionados.
El paquete Caret R proporciona findCorrelation que analizará una matriz de correlación de los atributos de sus datos e informará sobre los atributos que se pueden eliminar.
El siguiente ejemplo carga el conjunto de datos Pima Indians Diabetes que contiene una serie de atributos biológicos de informes médicos. Se crea una matriz de correlación a partir de estos atributos y se identifican los atributos altamente correlacionados; en este caso, el atributo de edad se elimina ya que se correlaciona altamente con el atributo de embarazo.
Generalmente, desea eliminar atributos con una correlación absoluta de 0,75 o superior.
Identifique características altamente correlacionadas en el paquete caret r:
# ensure the results are repeatable
set.seed(7)
# load the library
library(mlbench)
library(caret)
# load the data
data(PimaIndiansDiabetes)
# calculate correlation matrix
correlationMatrix <- cor(PimaIndiansDiabetes[,1:8])
# summarize the correlation matrix
print(correlationMatrix)
# find attributes that are highly corrected (ideally >0.75)
highlyCorrelated <- findCorrelation(correlationMatrix, cutoff=0.5)
# print indexes of highly correlated attributes
print(highlyCorrelated)
Clasificar características por importancia
La importancia de las características se puede estimar a partir de datos mediante la construcción de un modelo. Algunos métodos, como los árboles de decisión, tienen un mecanismo integrado para informar sobre la importancia de las variables. Para otros algoritmos, la importancia se puede estimar mediante un análisis de curva ROC realizado para cada atributo.
El siguiente ejemplo carga el conjunto de datos sobre diabetes de los indios Pima y construye un modelo de cuantificación de vectores de aprendizaje (LVQ). Luego, varImp se utiliza para estimar la importancia de la variable, que se imprime y traza. Muestra que los atributos de glucosa, masa y edad son los 3 atributos más importantes del conjunto de datos y el atributo de insulina es el menos importante.
Clasifique las características por importancia utilizando el paquete caret r:
# ensure results are repeatable
set.seed(7)
# load the library
library(mlbench)
library(caret)
# load the dataset
data(PimaIndiansDiabetes)
# prepare training scheme
control <- trainControl(method="repeatedcv", number=10, repeats=3)
# train the model
model <- train(diabetes~., data=PimaIndiansDiabetes, method="lvq", preProcess="scale", trControl=control)
# estimate variable importance
importance <- varImp(model, scale=FALSE)
# summarize importance
print(importance)
# plot importance
plot(importance)
Selección de funciones
Los métodos de selección automática de características se pueden utilizar para construir muchos modelos con diferentes subconjuntos de un conjunto de datos e identificar aquellos atributos que son y no son necesarios para construir un modelo preciso.
Un método automático popular para la selección de funciones proporcionado por el paquete caret R se llama Eliminación de funciones recursivas o RFE.
El siguiente ejemplo proporciona un ejemplo del método RFE en el conjunto de datos de diabetes de los indios Pima. Se utiliza un algoritmo de bosque aleatorio en cada iteración para evaluar el modelo. El algoritmo está configurado para explorar todos los subconjuntos posibles de atributos. En este ejemplo se seleccionan los 8 atributos, aunque en el gráfico que muestra la precisión de los diferentes tamaños de subconjunto de atributos, podemos ver que solo 4 atributos dan resultados casi comparables.
Seleccione funciones automáticamente usando el paquete Caret R:
# ensure the results are repeatable
set.seed(7)
# load the library
library(mlbench)
library(caret)
# load the data
data(PimaIndiansDiabetes)
# define the control using a random forest selection function
control <- rfeControl(functions=rfFuncs, method="cv", number=10)
# run the RFE algorithm
results <- rfe(PimaIndiansDiabetes[,1:8], PimaIndiansDiabetes[,9], sizes=c(1:8), rfeControl=control)
# summarize the results
print(results)
# list the chosen features
predictors(results)
# plot the results
plot(results, type=c("g", "o"))
Resumen
En esta publicación, descubrió 3 métodos de selección de funciones proporcionados por el paquete caret R. Específicamente, buscar y eliminar funciones redundantes, clasificar funciones por importancia y seleccionar automáticamente un subconjunto de las funciones más predictivas.
Se proporcionaron tres recetas independientes en R que puede copiar y pegar en su propio proyecto y adaptarlas a sus problemas específicos.