Skip to content

EmValdi/Modelo_Abalone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Modelo_Abalone

Introducción

El abulón es una especie de gasterópodo marino que puede ser consumido en varias cocinas diferentes a lo largo del mundo. La edad de estos moluscos es dificil de conocer, ya que para conocerla a ciencia cierta, es necesario contar anillos de crecimiento microscópicos que se presentan en su concha.

El propósito de este proyecto es generar un modelo capaz de predecir la edad de un abulón basándose en sus características físicas, como su diametro, peso y sexo.

Dataset

Este dataset fue encontrado en UC Irvine Machine Learning Repository y contiene 4177 registros y 8 atributos, que son los siguientes:

  • Sexo: Se guarda una de tres letras para categorizar el sexo del abulón en masculino (M), femenino (F), o infante (I)
  • Longitud: La longitud de la concha del espécimen
  • Diámetro: El diámetro de la concha del espécimen
  • Altura: La altura máxima del espécimen
  • Peso entero: El peso completo
  • Peso sin concha: Peso total de la carne una vez retirada la concha
  • Peso de vísceras: Peso de las vísceras una vez que se retira la sangre
  • Peso de concha: Peso de la concha una vez que se seca
  • Anillos: Indicadores aproximados de la edad (aproximadamente 1.5 años por anillo)

Preprocesamiento

El primer paso del preprocesamiento fue realizar un análisis exploratorio de los datos para entender cómo estaban compuestos y correlacionados entre ellos.

Lo primero que se hizo fue averiguar información general sobre los datos, como sus tipos o si había registros nulos. La documentación del dataset indicaba que no habían registros nulos y se pudo constatar esta información. Adicionalmente, se revisó el tipo de dato de cada feature y se encontró que con excepción de Sex y Rings, todos son de tipo flotante.

Lo siguiente que se revisó fue la distribución en la información de anillos, lo cual nos muestra que la gran mayoría de registros se encuentran en un rango de 7 a 11 registros, observando además una cola muy pronunciada hacia la derecha de la gráfica. La poca cantidad de registros encontrados sobre abulones mayores puede ser un indicador de que este modelo podría fallar al predecir las edades de estos especímenes y aunque en un principio no modificaré la información del dataset, esto puede ser un factor a tener en cuenta en caso que el modelo no mejore después de varias modificaciones.

ring count

Para asegurar que el sexo, que es el único atributo categórico del dataset no pudiera generar un sesgo, también se verificó la distribución de los datos en las tres categorías y se encontró que estos estan adecuadamente distribuidos, con la distribución siendo la siguiente:

  • Masculino: 37%
  • Infante: 32%
  • Femenino: 31% Esta distribución entre las categorías no hará que una adquiera un peso mucho mayor del que debería tener en el modelo
Disrtib

El siguiente paso a tomar fue un mapa de calor para entender las relaciones entre atributos y su relación con los anillos, el cual arrojó los siguientes resultados:

heat

Este mapa nos da a entender que varias de las variables del dataset son muy similares entre sí (principalmente longitud y diámetro) y todas tienen una relación mediana con los anillos. Las relaciones más fuertes con los anillos las presentan el peso de la concha y el diámetro, por lo que posiblemente serán las variables más importantes en el modelo.

Una carencia en este modelo es que no pudo mapear la variable del sexo, ya que esta es una variable categórica, por lo que se elaboró una gráfica de caja y bigotes para obtener información adicional sobre la misma. Esta nos mostró una diferencia bastante clara entre la cantidad de anillos de los especímenes de infantes y las otras dos categorías, aunque estas últimas no presentan una diferencia significativa entre ellas. Aún sin una diferencia mayor entre los especímenes masculinos y femeninos, tener en claro que los infantes sí suelen tener una menor cantidad de anillos muestra que la variable puede traer valor al modelo.

cajas

El último tipo de gráficas que fueron realizadas fueron gráficos de dispersión para cada variable numérica respecto a la cantidad de anillo, esto con el propósito de entender cómo se encontraban distribuidos los datos. La mayoría de gráficos mostraron similitudes con varios otros, volviendo a mostrar que varias variables muestran parecidos grandes, particularmente la longitud con el diámetro y los diferentes pesos entre ellos. La gráfica de altura destacó por mostrar dos registros con datos extraños, ya que en una gráfica donde la mayoría de datos se agruparon entre el 0 y 0.2, hubo un registro que mostró una medida de 0.4 y uno con un valor de más de 1, dandonos a entender que estos son posiblemente errores de medición.

altura

Además de estos dos registros, el atributo de altura presenta otros dos datos que podrían ser erroneos, ya que la documentación indica el valor mínimo del mismo como 0.000. Tras verificar este dato, se encontraron 2 registros en los que el dato de altura es de 0.

Tras el análisis las decisiones tomadas fueron:

  • Eliminar los registros con 0 y los números altos en la variable de altura, ya que al ser solo 4, eliminarlos no representará un daño significativo a la cantidad de datos para entrenamiento y podría ser beneficial para el modelo
  • Usar One Hot Encoding para transformar el dato Sex a un número
  • No usar la variable de longitud, ya que es muy similar al diámetro

Se considera una separación de 70/30 para los sets de entrenamiento y prueba para el modelo.

Modelos

Primer Modelo

El primer modelo experimental contiene los siguientes hiperparámetros:

  • Capa de entrada de 9 neuronas, 1 por atributo de entrada.
  • 2 capas ocultas, la primera con 12 neuronas y la segunda con 6, ambas con activación relu.
  • Capa de salida con activación linear para arrojar predicciones sin modificación.
  • Batch size de 32, definido en base al paper [1].

Como función de loss se usó el Mean Absolute Error y la métrica principal a reportar es el Root Mean Square Error (RMSE), con propósito de poder compararlo con los valores obtenidos como referencia en el paper [1].

Tras correr el modelo por 20 épocas y contando con un split de validación de 20%, se obtuvieron los siguientes valores como resultado:

Métrica Train Val Test
Loss 1.5821 1.5069 1.6296
RMSE 2.3396 2.1984 2.4231

Aunque el modelo aprendió y logró hacer predicciones con cierto acercamiento, el siguiente paso tomado fue incrementar la complejidad del modelos para intentar mejorar estas métricas.

Segundo Modelo

El segundo modelo intentó realizar una red más poderosa, modificando la cantidad de capas escondidas de 2 a 3 y aumentando la cantidad de neuronas en ellas, contando con 64, 32 y 16 neuronas respectivamente.

En la misma cantidad de épocas que el primer modelo obtuvo los siguientes resultados:

Métrica Train Val Test
Loss 1.4567 1.4237 1.5440
RMSE 2.1602 2.0565 2.2431

Aunque hay una mejora apreciable, esta se queda por detrás de los valores presentados en el paper para una arquitectura de 3 capas ocultas, por lo que como siguiente paso y para verificar si se tiene la red neuronal cuenta con la capacidad de trabajar el dataset, se intentará realizar un modelo con overfitting.

Tercer Modelo

Este modelo utiliza hiperparámetros idénticos al segundo con la excepción de las épocas, que fueron incrementadas a 500, esto con el propósito de verificar si se podía hacer overfitting al modelo. De ser este el caso, esto significaría que se pueden utilizar estrategias de regularización para mejorar el desempeño del modelo, pero de no ser capáz, podría indicar problemas en el preprocesado que deberán ser corregidos.

Métrica Train Val Test
Loss 1.1161 1.5109 1.6903
RMSE 1.7455 2.2213 2.4784

Las grandes diferencias entre las métricas de Train con Val y Test revelan que el experimento fue exitoso. Tener overfitting es una señal de que el modelo podrá ser utilizado para resolver el problema aplicando técnicas de regularización. Nuevamente tomando como referencia el paper [1], se decidió utilizar capas de dropout en el siguiente modelo para reducir el overfitting.

Cuarto Modelo

Se volvieron a tomar los parametros del modelo anterios, pero agregando dos nuevas capas de dropout, de modo que la arquitectura será la siguiente:

  • Capa de entrada de 9 neuronas, 1 por atributo de entrada.
  • Primera capa oculta con 64 neuronas.
  • Primera capa dropout con valor de 0.3.
  • Segunda capa oculta con 32 neuronas.
  • Segunda capa dropout con valor de 0.1.
  • Tercera capa oculta con 16 neuronas.
  • Capa de salida con activación linear para arrojar predicciones sin modificación.

Se realizaron 400 épocas para poder comparar los resultados que los obtenidos por el modelo del paper en este mismo marco. El paper menciona el valor de 0.5 como valor para las capas de dropout, pero al utilizarlo se producían valores más bajos en las métricas, así que se llego a los valores propuestos a través de reducción y análisis de los valores que esto producía, finalmente los resultados fueron los siguientes

Métrica Train Val Test
Loss 1.4279 1.3768 1.4965
RMSE 2.1115 2.0085 2.1987

Aunque sí hay una mejora perceptible, esta sigue sin estar muy alejada de los resultados obtenidos con el primer modelo. Adicionalmente, los valores obtenidos son más bajos a los obtenidos en el paper con una arquitectura similar. El siguiente paso será replicar esta arquitectura para determinar si esta puede ser replicada y obtener los mismos resultados que en el paper original.

Quinto Modelo

Para este útlimo modelo se utilizó la cuarta arquitectura descrita en el paper, compuesta de :

  • Capa de entrada.
  • Primera capa oculta con 6 neuronas.
  • Primera capa dropout con valor de 0.5.
  • Segunda capa oculta con 6 neuronas.
  • Segunda capa dropout con valor de 0.5.
  • Tercera capa oculta con 6 neuronas.

Tras correr este modelo 400 epocas, se obtuvieron los siguientes valores:

Métrica Train Val Test
Loss 1.8161 3.0281 3.1787
RMSE 2.6228 3.8783 4.1165

Los valores muestran una gran diferencia a los reportados en el paper originalmente, que son los siguientes.

Métrica Train Val
Loss 1.2903 1.3669
RMSE 2.0691 1.8552

Conclusión

Al buscar una explicación a la gran diferencia que hubo entre los resultados del paper y los obtenidos, se llegó a la conclusión de que esto se debe muy probablemente al trato que el paper le da a la variable Sex. En la sección de preprocesamiento, se menciona que esta es codificada como un valor binario donde 0 representaba femenino y 1 masculino; por lo que aunque no se menciona explícitamente, se puede inferir que los datos relacionados a la categoría de infantes fueron dejados de lado. Al representar casi una tercera parte de los datos, esto significaría que el paper está trabajando con una versión reducida y por lo tanto menos compleja del dataset, lo que pudo haber llevado a mejores valores en sus métricas. Otro factor que pudo haber contribuido es la inclusión de rings como una variable numérica del modelo, y aunque no se menciona el cómo se implemento durante el preprocesamiento, se hace referencia a que la variable que se intenta predecir es directamente la edad del abulón.

Métrica Primer Modelo Segundo Modelo Cuarto Modelo Resultados del Paper
Loss 1.5821 1.4567 1.4279 1.2903
RMSE 2.3396 2.1602 2.1115 2.0691
Val Loss 1.5069 1.4237 1.3768 1.3669
Val RMSE 2.1984 2.0565 2.0085 1.8552
Test Loss 1.6296 1.5440 1.4965 -
Test RMSE 2.4231 2.2431 2.1987 -

Al comparar los resultados de los diferentes modelos propuestos, podemos concluir que la mejor implementación para el cálculo de anillos fue un modelo grande que utilice funciones de regularización a lo largo de una gran cantidad de épocas para prevenir que caiga en overfitting. Aunque no se pudieron alcanzar valores similares a los del paper para todas las áreas, hay algunos que no se quedan muy por detrás de los mismos, principalmente en el RMSE de entrenamiento y el Loss de Val. De igual forma, aunque los errores se disminuyeron al progresar los modelos, estas mejoras fueron cada vez más pequeñas, lo que también podría significar que el modelo se acercaría a un límite de precisión.

Referencias

[1] M. F. Misman, A. A. Samah, N. A. Ab Aziz, H. A. Majid, Z. A. Shah, H. Hashim, and M. F. Harun, “Prediction of Abalone Age Using Regression-Based Neural Network,” in Proceedings of the 2019 1st International Conference on Artificial Intelligence and Data Sciences (AiDAS), Shah Alam, Malaysia, Sep. 2019, pp. 52–57, doi: 10.1109/AiDAS47888.2019.8970983.

About

Código de google colaboratory para construcción de red neuronal con dataset de abalone

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors