Redes neuronales para problemas de regresión

En este artículo usaré las redes neuronales profundas para predecir el precio de la vivienda usando un dataset de Kaggle.

Las redes neuronales profundas son bien conocidas por los problemas de clasificación, por ejemplo, se usan en la clasificación de los dígitos escritos a mano, pero la pregunta es ¿será fructífero si las usamos para los problemas de regresión?

Puede descargar el dataset de Aquí

Le recomiendo que siga intente ejecutar el código usando mi computadora portátil en Google colab [ Aquí ]

Contenido:

1- Procesar el dataset
2- Crear la red neuronal profunda
3- Entrenar al DNN
4- Probar el DNN
5- Compare el resultado del DNN con otro algoritmo ML

Primero que nada, importaremos las dependencias necesarias:

https://medium.com/media/7ae5d71445700640f4d0f8ee3bda3ae9/href

Primero: Procesando el dataset

No profundizaremos en el procesamiento del dataset, todos queremos hacer es preparar el dataset para alimentar nuestros modelos.

Nos deshaceremos de cualquier característica con valores perdidos, luego codificaremos las características categóricas, eso es todo.

Cargue el dataset:

  • Cargue datos de trenes y pruebas en pandas DataFrames
  • Combine datos de trenes y pruebas para procesarlos juntos

https://medium.com/media/74079f4f16be0ad386e8d2aca2597324/href

 combined.describe ()

vamos a definir una función para obtener las columnas que no tienen valores faltantes

https://medium.com/media/8c021174c209be26f75c4be0dd229f72/href

Obtenga las columnas que no tienen valores faltantes.

https: // medium.com/media/9803907ae75e4de65bec03c1e4d8949e/href[19659020◆Letescuántascolumnasobtuvimos

https://medium.com/media/b1f0f495d92b3ace0200bccccccccgcgcccggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggfenfbc. no nan values: 25
Número de columnas monja-numéricas sin nan valu es: 20

https://medium.com/media/5d65e167f81695523e9196b6bfc70f2e/href

Histograma de las características

La ​​correlación entre las características

https://medium.com/media/b3ed302f304a5cf5af247cc54669a33b/href

Del mapa de calor de correlación anterior, vemos que alrededor de 15 características están altamente correlacionadas con el objetivo.

One Hot Encode Las características categóricas:

Codificaremos las características categóricas con una codificación en caliente.

https://medium.com/media/a3b4f4ee54dbf5f43f351d88fd41adf1/href

[out]: 
 Había 45 columnas antes de codificar las características categóricas 
. ] Ahora, divida la combinación de dataFrame con datos de entrenamiento y datos de prueba

https://medium.com/media/81f63e7e65c70060758a307339ec98db/href

Segundo: haga redes neuronales profundas

  • Defina un modelo secuencial
  • Agregar Algunas capas densas
  • Nosotros e ‘ relu ‘ como la función de activación para las capas ocultas
  • Use un inicializador ‘ normal ‘ como el inicializador kernal

Los inicializadores definen la manera de establecer los pesos aleatorios iniciales de Capas de Keras.

  • Usaremos mean_absolute_error como una función de pérdida
  • Definir la capa de salida con un solo nodo
  • Usar ‘ linear ‘ como la función de activación para la capa de salida

https : //medium.com/media/7e1117f942b466a5e040a9044956781c/href

 [Out]: 
 _________________________________________________________________ Layer (type) Output Shape Param # =================== ============================================== dense_1 (denso) (Ninguno, 128) 19200 _________________________________________________________________ dense_2 (Denso) (Ninguno, 256) 33024 ____________________________________ _____________________________ dense_3 (Denso) (Ninguno, 256) 65792 _________________________________________________________________ denso_ (Denso) (Ninguno, 256) 65792 _________________________________________________________________ denso_5 (Denso) (Ninguno, 1) 257 ================= ============================================= Parámetros totales : 184,065 parametros entrenables: 184,065 parametros no capacitables: 0 _________________________________________________________________

Defina una devolución de llamada de punto de control:

https://medium.com/media/ca09pac. 19659050] https://medium.com/media/775326dac4d60113a9cac206295d99d9/href

 [out]: 
 Entrene en 1168 muestras, valide en 292 muestras 
 Época 1/500 
 1168/6868 - 0s 266us / step - pérdida: 19251.8903 - mean_absolute_error: 19251.8903 - val_l oss: 23041.8968 - val_mean_absolute_error: 23041.8968 
 Época 00001: val_loss no mejoró desde 21730.93555 
 Época 2/500 
 1168/1168 [==============================] - 0s 268us / paso - pérdida: 18180.4985 - mean_absolute_error: 18180.4985 - val_loss : 22197.7991 - val_mean_absolute_error: 22197.7991 
 Época 00002: val_loss no mejoró desde 21730.93555 
. 
. 
. 
 Época 00500: val_loss no mejoró desde 18738.19831

https: // medium .com / media / 19deb04e60483f19184d177cbf20f6a2 / href

Vemos que la pérdida de validación del mejor modelo es 18738.19

Cuarto: pruebe el modelo

Enviaremos las predicciones sobre los datos de prueba a Kaggle y veremos qué tan bien están El modelo es.

https://medium.com/media/1651eb80da6d4b34a652e9f7c5e61646/href

El resultado de la presentación de la red neuronal profunda en Kaggle

No está nada mal, con algo más de preprocesamiento y más capacitación, y puede hacerlo mejor.

Quinto: Tr y otro algoritmo ML:

Ahora, probemos otro algoritmo ML para comparar los resultados.

Usaremos regresores de bosque aleatorios y XGBRegressor.

Dividiremos datos de entrenamiento para entrenamiento y validación de datos

https://medium.com/media/d117b5b0522e6d2eb5ae8c7899367c0e/href

Probaremos primero el modelo de bosque aleatorio:

https://medium.com/media/138b1513f179e019b2276dd7df6caee7/href

 Validación de bosque aleatorio MAE = 19089.71589041096

Haga un archivo de envío y envíelo a Kaggle para ver el resultado:

https://medium.com/media/7358faff9bfc037525b1b56ba1cba6b2/href

El resultado de la sumisión del bosque al azar 19659027] Ahora, probemos el modelo de XGBoost: https://medium.com/media/cc4bde7a1981e0c41d3862b7e781d65f/href [19659017pinadelavajilladelagavilladelapiscinadelacajadelaluzdelaluzdelacasa
]
archivar y enviarlo a Kaggle para ver el resultado: [19659074] https://medium.com/media/a133db89f0f05f934845841b98fbb67c/href

El resultado de la presentación de XGBoost en Kaggle

No es una sorpresa, realmente no creo que las redes neuronales profundas superen los bosques aleatorios y los algoritmos XGBoost pero intentemos no ser demasiado optimistas, recuerde que no configuramos ningún parámetro de hiperparámetros en modelos de bosque aleatorio y XGBoost, creo que si lo hiciéramos, estos dos modelos superarán las redes neuronales profundas.

Para resumir lo que hicimos: Cargamos y procesamos el dataset

  • Nos familiarizamos con el dataset al trazar algunos histogramas y un mapa de calor de correlación de las características
  • Utilizamos una red neuronal profunda con tres capas ocultas, cada una con 256 nodos. [19659015] Usamos una función de activación lineal en la capa de salida
  • Formamos el modelo y luego lo probamos en Kaggle.
  • También probamos otros dos modelos
  • Nuestra red neuronal profunda fue capaz de superar a estos dos modelos
  • Creemos que t Estos dos modelos podrían superar al modelo de red neuronal profunda si modificamos sus hiperparámetros.

Pasos siguientes:

Intente:

  • Esforzarse más en procesar el dataset
  • Con otros tipos de redes neuronales profundas
  • Modificar el hiperparámetros de los dos modelos que usamos
  • Si realmente desea mejorar los problemas de regresión, siga este tutorial:

[ Regresiones apiladas: Top 4% en LeaderBoard | Kaggle ]

Referencias:

Puedes seguirme en Twitter @ModMaamari [19659000] may también puede gustar:

Dejá un comentario