Estás leyendo la publicación: Una guía completa para la regresión por etapas incremental hacia adelante
El algoritmo Incremental Forward Stagewise es un tipo de algoritmo de refuerzo para el problema de regresión lineal. Utiliza un algoritmo de selección hacia adelante y eliminación hacia atrás para eliminar aquellas características que no son útiles en el proceso de aprendizaje. Con esta estrategia, construye un algoritmo simple y eficiente basado en regresión lineal. Este algoritmo está altamente motivado por la regresión LASSO. En este artículo, vamos a discutir la técnica de eliminación y el algoritmo Lasso para minimizar el residual con un enfoque iterativo. Los siguientes son los temas a tratar.
Tabla de contenido
- Técnica de selección hacia adelante y eliminación hacia atrás
- Regresión por etapas hacia adelante
- Implementación en python
Comencemos con la comprensión de la técnica de eliminación de características utilizada por la Regresión por etapas hacia adelante.
Selección de reenvío y técnica de eliminación hacia atrás
La selección directa es un método de selección de variables en el que inicialmente se construye un modelo que no contiene variables llamado modelo nulo, luego comienza a agregar las variables más significativas una tras otra, este proceso continúa hasta que se debe alcanzar una regla de parada preespecificada o todas. las variables deben ser consideradas en el modelo.
Establecer un punto de parada necesita un umbral fijo que se selecciona en función de su valor p (que debe ser inferior a 0,05) o se determina utilizando dos criterios denominados Criterio de información de Akaike y Criterio de información bayesiano. Del mismo modo, la importancia de cada valor se determina sobre la base de:
- Tiene el valor p más pequeño.
- Proporciona el mayor aumento en el porcentaje de predicción (puntuación R2).
- Proporciona la mayor caída en Residuals Sum of Squares (RSS) en comparación con otras características consideradas.
La eliminación hacia atrás es un método de selección de variables en el que inicialmente el modelo contiene todas las variables bajo consideración conocidas como Modelo completo, luego elimina las variables menos significativas una tras otra hasta que el modelo alcanza un punto de parada preespecificado o hasta que no queda ninguna variable. El umbral se fija con el mismo método utilizado en la selección hacia adelante. La importancia de las variables se decide sobre la base de que:
- Tiene el valor p más alto en el modelo.
- Tiene la caída más baja en R2
- Proporciona el aumento más bajo en RSS en comparación con otras funciones.
¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos? echa un vistazo aquí.
¿Cuándo se usan?
La selección paso a paso hacia adelante se usa cuando el número de características es menor que el tamaño de la muestra en el caso de regresión lineal y el caso de regresión logística, se usa cuando el número de eventos es mayor que el número de características.
La selección hacia atrás es importante cuando las variables de un modelo están correlacionadas; la selección hacia atrás puede obligar a que todas las características se incluyan en el modelo, a diferencia de la selección hacia adelante, donde no se incluirá ninguna de ellas.
Regresión por etapas hacia adelante
La regresión progresiva por etapas es una regresión por pasos cuyo objetivo es encontrar un conjunto de variables independientes que influyan significativamente en la variable dependiente a través de una serie de pruebas (p. ej., pruebas F, pruebas t). Este cálculo se logra a través de iteraciones.
La regresión paso a paso hacia adelante utiliza tanto la selección hacia adelante como la eliminación hacia atrás, que consiste en probar una variable independiente a la vez y calcular su valor estadísticamente significativo (valor p) para el alumno o al incluir todas las variables independientes potenciales en el modelo y eliminar aquellas que son no estadísticamente significativo.
Entendamos este concepto con un ejemplo,
Considere que necesitamos comprender el efecto del colesterol en el cuerpo humano y existen características como la edad, el peso, el porcentaje de grasa, la presión arterial, el IMC, la frecuencia cardíaca, el tabaquismo, etc. El modelo utilizará un enfoque bidireccional que es esencialmente un procedimiento de selección hacia adelante. que se llevará a cabo que está construyendo un modelo nulo pero con la posibilidad de eliminar una variable seleccionada en cada etapa cuando existen correlaciones entre variables como en la eliminación hacia atrás.
Implementemos este concepto en Python y observemos los resultados.
Implementación en python
Primero, construiremos un modelo estadístico y haremos una eliminación bidireccional de las características y luego usaremos las características significativas para construir un modelo de regresión lineal.
Importar bibliotecas necesarias
importar numpy como np importar pandas como pd importar statsmodels.api como sm de sklearn.linear_model importar LinearRegression de sklearn.metrics importar mean_squared_error,r2_score
Leer y preprocesar los datos
dfX_train=pd.read_csv(“/content/drive/MyDrive/Datasets/X_train.csv”) dfX_test=pd.read_csv(“/content/drive/MyDrive/Datasets/X_test.csv”) dfy_train=pd.read_csv(“/ content/drive/MyDrive/Datasets/y_train.csv”) dfy_test=pd.read_csv(“/content/drive/MyDrive/Datasets/y_test.csv”)
Los datos consisten en 33 características con variables categóricas y continuas. Los datos están relacionados con el desempeño de los estudiantes en diferentes pruebas. Las variables categóricas necesitan ser dummificadas antes del proceso de aprendizaje.
dfX_train_dum=pd.get_dummies(data=dfX_train,drop_first=True) dfX_test_dum=pd.get_dummies(data=dfX_test,drop_first=True)
Construir modelo estadístico:
x_columnas=[‘StudentID’, ‘age’, ‘Medu’, ‘Fedu’, ‘traveltime’, ‘studytime’,
‘failures’, ‘famrel’, ‘freetime’, ‘goout’, ‘Dalc’, ‘Walc’, ‘health’,
‘absences’, ‘G1’, ‘G2’, ‘school_MS’, ‘sex_M’, ‘address_U’,
‘famsize_LE3’, ‘Pstatus_T’, ‘Mjob_health’, ‘Mjob_other’,
‘Mjob_services’, ‘Mjob_teacher’, ‘Fjob_health’, ‘Fjob_other’,
‘Fjob_services’, ‘Fjob_teacher’, ‘reason_home’, ‘reason_other’,
‘reason_reputation’, ‘guardian_mother’, ‘guardian_other’,
‘schoolsup_yes’, ‘famsup_yes’, ‘paid_yes’, ‘activities_yes’,
‘nursery_yes’, ‘higher_yes’, ‘internet_yes’, ‘romantic_yes’]
def get_stats(): x = dfX_train_dum[x_columns]
resultados = sm.OLS(y_train, x).fit() print(resultados.resumen()) get_stats()
Hay un total de 42 funciones creadas, de las cuales 15 tienen un valor p muy alto y deben eliminarse.
x_columns.remove(“edad”) x_columns.remove(“Medu”) x_columns.remove(“Fedu”) x_columns.remove(“tiempo libre”) x_columns.remove(“Dalc”) x_columns.remove(“Walc”) x_columns. remove(“salud”) x_columns.remove(“school_MS”) x_columns.remove(“Mjob_other”) x_columns.remove(“schoolsup_yes”) x_columns.remove(“famrel”) x_columns.remove(“goout”) x_columns.remove( “higher_yes”) x_columns.remove(“romantic_yes”) x_columns.remove(“StudentID”) get_stats()
Ahora nos quedan 27 características, de las cuales algunas aún tienen un valor alto, pero primero usaríamos estas características para construir un modelo lineal y si el rendimiento del modelo necesita una mejora, solo eliminaríamos esas características.
Construir regresión lineal
x = dfX_tren_dum[x_columns]
lr = Regresión Lineal() lr.fit(x, y_train) x_test = dfX_test_dum[x_columns]
y_pred = lr.predict(x_test) print(“RMSE:”,np.sqrt(mean_squared_error(dfy_test[‘G3’],y_pred)),”\npuntuación R2:”,r2_score(dfy_test[‘G3’],y_pred)) RMSE: 1,7085538565926237 Puntuación R2: 0,810166639435027
El alumno de regresión se está desempeñando bien con un error cuadrático medio menor y una puntuación R2 alta. Pero podría mejorarse eliminando esas características insignificantes, eso depende de usted.
Ultimas palabras
La regresión incremental hacia adelante por etapas es un algoritmo que utiliza técnicas de eliminación bidireccional para seleccionar las características significativas de acuerdo con la característica dependiente para que el alumno pueda predecir con absoluta precisión. Con una implementación práctica de este concepto en este artículo, podríamos entender la regresión progresiva progresiva gradual.