glp-92 / Prueba_Tecnica_ML_DL

0 stars 0 forks source link

Estructura del proyecto

El proyecto se ha estructurado en los siguientes directorios:

Acerca de California Housing Dataset

Columna Acerca de
MedInc Mediana de ingresos de los habitantes por bloque
HouseAge Mediana de edad de las viviendas por bloque
AveRooms Numero promedio de habitaciones por hogar en bloque
AveBedrms Numero promedio de dormitorios por hogar en bloque
Population Numero de personas que habitan en el bloque
AveOccup Numero promedio de personas por hogar en bloque
Latitude Latitud del bloque
Longitude Longitud del bloque

Procedimiento

En una primera aproximación, y basándose en el tiempo disponible para la realización de la prueba, se tratará únicamente con el dataset sugerido, ya que el análisis de datos no es una tarea habitual. En caso de obtener buenos resultados y disponer de mas tiempo, se tratará de incorporar datos 'extra' al modelo (distancia al mar, servicios proximos...) así como optimización. Se aprovechará la oportunidad para refrescar conceptos y métodos de matplotlib, numpy, pandas y scikit-learn.

Procedimiento completo

Ejecución

Ejecución de la Pipeline

Métricas

Conclusiones y resultados

Se ha observado que la Custom_Dense_net es la que mejor se comporta, tanto por métricas como visualizando los diagramas de dispersion, para un experimento donde se ajusta el batch size a 64, 30 epochs, y Decission Tree con profundidad de 5

Id Model MSE MAE RMSE R2
Linear Regression 0.022 0.1089 0.1483 0.6206
Decission Tree 0.0214 0.1071 0.1463 0.6304
Lasso 0.0357 0.1474 0.189 0.3834
Custom_Dense_net 0.0198 0.1031 0.1406 0.6586

En los diagramas de dispersión, se ha observado que la Custom_Dense_net y el algoritmo de Regresion Lineal se ajustan mejor a los valores del dataset de test; por otro lado, el algoritmo de Lasso tiende a predecir precios aproximándose al punto medio del rango, por lo que para precios reales elevados la desviación es grande. El árbol de decisión tiende a formar escalones en la predicción de precios, tanto en profundidad 2 como a profundidad 5, por lo que no resultaría un modelo deseable en este caso.

Por otro lado, se ha probado a eliminar del dataframe las columnas asociadas a las coordenadas geográficas, ya que no deberían asociarse directamente al precio; quizás la distancia a la línea de mar en California resultaria una variable mejor, ya que por norma general las residencias próximas al mar tienen un precio mayor; pero las coordenadas como tal no deberían tratarse en este dataset si no se asociarán de alguna forma a esta clase de variables (distancia al mar, a hospitales, a zonas históricas...) y en este caso, no hay una asociación a priori lineal con el precio.

Los resultados son los siguientes:

Id Model MSE MAE RMSE R2
Linear Regression 0.026 0.1184 0.1613 0.5434
Decission Tree 0.0215 0.1062 0.1467 0.6223
Lasso 0.0355 0.1458 0.1884 0.3765
Custom_Dense_net 0.0246 0.1161 0.157 0.5672

En cuanto a los gráficos de dispersion, se observa cómo el árbol de decisión presenta un mejor comportamiento respecto al resto de modelos al haber eliminado las 2 columnas. Para tratar de verificar que hay una relación fuerte con las coordenadas, el siguiente experimento utilizará éstas solamente para ver la relación con el precio, eliminando el resto de variables independientes:

Los resultados son los siguientes:

Id Model MSE MAE RMSE R2
Linear Regression 0.0428 0.1593 0.2068 0.2418
Decission Tree 0.0309 0.1297 0.1757 0.4527
Lasso 0.0564 0.1873 0.2375 -0.0
Custom_Dense_net 0.0415 0.157 0.2036 0.2654

El modelo que mejor comportamiento ha tenido ha sido el árbol de decisión, pese a que tanto las métricas como las gráficas muestran un ajuste menor a los datos de test. Se puede concluir que la relación del precio con las coordenadas no es fuerte.

Como conclusión, el modelo que mejor responde a la determinación del precio empleando estas variables ha sido el modelo de DL personalizado en Tensorflow. Después, el modelo de regresión lineal ha demostrado buena performance mientras que el árbol de decisión mayor tolerancia a grandes modificaciones en el dataset.

Los experimentos se adjuntan en la carpeta /doc/experimentos

Referencias

Se ha utilizado las siguientes referencias para el proyecto:

Se ha utilizado IA Generativa (ChatGPT, Bard...) para implementación rápida de ciertos métodos, el planteamiento del problema y solución son propios, basado en experiencia y conocimiento en el campo.