La regresión es un proceso de varios pasos para estimar las relaciones entre una variable dependiente y una o más variables independientes, también conocidas como predictores o covariables. El análisis de regresión se usa principalmente para dos propósitos conceptualmente distintos: para la predicción y el pronóstico, donde su uso tiene una superposición sustancial con el campo del aprendizaje automático y, en segundo lugar, a veces se puede usar para inferir relaciones entre las variables independientes y dependientes.
Regresión con Variables Categóricas
Las variables categóricas son variables que pueden tomar uno de un número limitado y fijo de valores posibles, asignando cada individuo u otra unidad de observación a un grupo particular o categoría nominal sobre la base de alguna propiedad cualitativa. También se les conoce como factor o variables cualitativas. El tipo de análisis de regresión que mejor se adapta a las variables categóricas es la regresión logística. La regresión logística utiliza la estimación de máxima verosimilitud para estimar los parámetros. Deriva la relación entre un conjunto de variables (independientes) y una variable categórica (dependiente). Es mucho más fácil implementar un modelo de regresión usando el lenguaje Rdebido a sus excelentes bibliotecas en su interior. Ahora, intentemos configurar un modelo de regresión logística con variables categóricas para una mejor comprensión.
Ejemplo: El objetivo es predecir si un candidato será admitido en una universidad con variables como gre, gpa y rank. El script R se proporciona uno al lado del otro y se comenta para una mejor comprensión del usuario. Los datos están en formato .csv. Obtendremos el directorio de trabajo con la función getwd() y colocaremos conjuntos de datos binary.csv dentro de él para continuar. Descargue el archivo CSV aquí .
R
# preparing the dataset getwd() data <- read.csv("binary.csv" ) str(data)
Producción:
'data.frame': 400 obs. of 4 variables: $ admit: int 0 1 1 1 0 1 1 0 1 0 ... $ gre : int 380 660 800 640 520 760 560 400 540 700 ... $ gpa : num 3.61 3.67 4 3.19 2.93 3 2.98 3.08 3.39 3.92 ... $ rank : int 3 3 1 4 4 2 1 2 3 2 ...
Al observar la estructura de los conjuntos de datos, podemos observar que tiene 4 variables, donde admitir indica si un candidato será admitido o no (1 si es admitido y 0 si no es admitido) gre, gpa y rank dan la puntuación gre de los candidatos, su gpa en la universidad anterior y el rango de la universidad anterior, respectivamente. Usamos admitir como variable dependiente y gre, gpa y rango como variables independientes. Ahora, tenga en cuenta que admitir y clasificar son variables categóricas pero son de tipo numérico. Pero para usarlas como variables categóricas en nuestro modelo, usaremos la función as.factor() para convertirlas en variables factoriales.
R
# converting admit and rank # columns into factor variables data$admit = as.factor(data$admit) data$rank = as.factor(data$rank) # two-way table of factor # variable xtabs(~admit + rank, data = data)
Producción:
rank admit 1 2 3 4 0 28 97 93 55 1 33 54 28 12
Ahora divida los datos en un conjunto de entrenamiento y un conjunto de prueba. El conjunto de entrenamiento se utiliza para encontrar la relación entre las variables dependientes e independientes, mientras que el conjunto de prueba analiza el rendimiento del modelo. Utilizamos el 60% del conjunto de datos como conjunto de entrenamiento. La asignación de los datos al conjunto de entrenamiento y prueba se realiza mediante un muestreo aleatorio. Realizamos un muestreo aleatorio en R usando la función sample() . Use set.seed() para generar la misma muestra aleatoria cada vez y mantener la consistencia.
R
# Partitioning of data set.seed(1234) data1<-sample(2, nrow(data), replace = T, prob = c(0.6, 0.4)) train<-data[data1 == 1,] test<-data[data1 == 2,]
Ahora construya un modelo de regresión logística para nuestros datos. La función glm() nos ayuda a establecer una red neuronal para nuestros datos. La función glm() que estamos usando aquí tiene la siguiente sintaxis.
Sintaxis:
glm(fórmula, familia = gaussiana, datos, pesos, subconjunto, na.action, start = NULL, etastart, mustart, offset,
control = lista(…), modelo = VERDADERO, método = “glm.fit”, x = FALSO, y = VERDADERO, singular.ok = VERDADERO, contrastes = NULL, …)
Parámetro | Descripción |
fórmula | una descripción simbólica del modelo a montar. |
familia | una descripción de la distribución de errores y la función de enlace que se utilizará en el modelo. |
datos | un marco de datos opcional. |
pesos | un vector opcional de ‘pesos anteriores’ para ser utilizado en el proceso de ajuste. Debe ser NULL o un vector numérico. |
subconjunto | un vector opcional que especifica un subconjunto de observaciones que se utilizará en el proceso de ajuste. |
na.action | una función que indica lo que debería suceder cuando los datos contienen NA. |
comienzo | valores iniciales para los parámetros en el predictor lineal. |
etastart | valores iniciales para el predictor lineal. |
mustart | valores iniciales para el vector de medias. |
compensar | esto se puede usar para especificar un componente conocido a priori que se incluirá en el predictor lineal durante el ajuste. |
control | una lista de parámetros para controlar el proceso de ajuste. |
modelo | un valor lógico que indica si el marco del modelo debe incluirse como un componente del valor devuelto. |
método | el método a utilizar para ajustar el modelo. |
x,y |
valores lógicos que indican si el vector de respuesta y la array del modelo utilizados en el proceso de ajuste deben devolverse como componentes del valor devuelto. |
singular.ok | lógico; si es FALSO, un ajuste singular es un error. |
contrastes | una lista opcional. |
… | argumentos que se utilizarán para formar el argumento de control predeterminado si no se proporciona directamente. |
R
mymodel<-glm(admit~gre + gpa + rank, data = train, family = 'binomial') summary(mymodel)
Producción:
Call: glm(formula = admit ~ gre + gpa + rank, family = "binomial", data = train) Deviance Residuals: Min 1Q Median 3Q Max -1.6576 -0.8724 -0.6184 1.0683 2.1035 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -4.972329 1.518865 -3.274 0.00106 ** gre 0.001449 0.001405 1.031 0.30270 gpa 1.233117 0.450550 2.737 0.00620 ** rank2 -0.784080 0.406376 -1.929 0.05368 . rank3 -1.203013 0.426614 -2.820 0.00480 ** rank4 -1.699652 0.536974 -3.165 0.00155 ** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 312.66 on 248 degrees of freedom Residual deviance: 283.38 on 243 degrees of freedom AIC: 295.38 Number of Fisher Scoring iterations: 4
Del resumen del modelo es evidente que gre no tiene un papel significativo en las predicciones, por lo que podemos eliminarlo de nuestro modelo y reescribirlo de la siguiente manera:
R
mymodel<-glm(admit~gpa + rank, data = train, family = 'binomial')
Ahora, intentemos analizar nuestro modelo de regresión haciendo algunas predicciones.
R
# Prediction p1<-predict(mymodel, train, type = 'response') head(p1)
Producción:
1 7 8 10 12 13 0.3013327 0.3784012 0.2414806 0.5116852 0.4610888 0.7211702
R
head(train)
Producción:
admit gre gpa rank 1 0 380 3.61 3 7 1 560 2.98 1 8 0 400 3.08 2 10 0 700 3.92 2 12 0 440 3.22 1 13 1 760 4.00 1
Luego, redondeamos nuestros resultados creando una array de confusión para comparar el número de verdaderos/falsos positivos y negativos. Formaremos una array de confusión con datos de entrenamiento.
R
# confusion Matrix # $Misclassification error -Training data pre1<-ifelse(p1 > 0.5, 1, 0) table<-table(Prediction = pre1, Actual = train$admit) table
Producción:
Actual Prediction 0 1 0 158 55 1 11 25
El modelo genera 158 verdaderos negativos (0), 25 verdaderos positivos (1), mientras que hay 11 falsos negativos y 55 falsos positivos. Ahora, calculemos el error de clasificación errónea (para datos de entrenamiento) que {1 – error de clasificación}
R
1 - sum(diag(table)) / sum(table)
Producción:
[1] 0.2650602
El error de clasificación errónea resulta ser del 24,9%. En esto, podemos usar técnicas de regresión con variables categóricas a varios otros datos.
El análisis de regresión es un método muy eficiente y existen numerosos tipos de modelos de regresión que se pueden utilizar. Esta elección a menudo depende del tipo de datos que tenga para la variable dependiente y el tipo de modelo que proporciona el mejor ajuste, como la regresión logística, que es el más adecuado para las variables categóricas.
Publicación traducida automáticamente
Artículo escrito por misraaakash1998 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA