Machine Learning puede hacer que el consumo de mariscos sea sostenible

Este trabajo fue tomado de: https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/

Es delicioso comer la mejor comida de mar a un precio módico, sin embargo, algunas veces algunos factores dificultan que los productos consumidos sean de la mejor calidad. El simple hecho de que el marisco no haya llegado a una edad madura, hace que el estado de la carne no sea el mejor y que se tomen especies con potencial reproductivo, desbalanceando el ecosistema. Otras veces se puede llegar a un producto de alta calidad, pero a expensas de un proceso de selección complejo e invasivo el cual puede llegar a ser muy caro, aumentando el precio del alimento sustancialmente.

Por esta razón, se propone encontrar una manera de utilizar métodos de aprendizaje automático para poder llegar a clasificar los mejores mariscos de una recolecta, de una manera barata y sencilla. Como punto de partida se propone estudiar el caso del abalone, un tipo de marisco en peligro de extinción.


Abalone

El abalone es un tipo de molusco, también es conocido como orejas de mar o abulones. Este ser vivo forma parte de un gran grupo de caracoles de mar (sea snails) del género Haliotis, desgraciadamente, segun la WWF (World Wildlife comoFund), esta especie se encuentra en severo peligro de extinción por problemas como la sobrepesca. La familia a la que pertenece este individuo son las almejas, moluscos, pulpos y otros. El abalone puede ser encontrado en zonas costeras alrededor del mundo, su suave piel es rodeada por una concha gruesa que la protege, el mismo cuenta con tentáculos, los cuales son diferentes según cada especie de abalone. En la Figura 1 se puede ver una imagen del molusco.

Figura 1. Estructura Interna del Abalone. Tomado de: https://www.aquarium.co.za/blog/entry/everything-you-need-to-know-about-abalone

Esta especie se encuentra en la lista roja de WWF SASSI, indicando que las personas NO deben comprar este ser vivo. Este molusco puede ser pescado “legalmente” en zonas comerciales designadas cuando tienen 8~10 años, se pone legalmente entre comillas porque no es perseguido penalmente en algunos países. Este animal llega a la madurez sexual a los 7 años, lo cual es muy cercano a la edad cuando ya es permitido pescarlo, esta es la razón de porqué estos individuos se encuentran en peligro. Actualmente Sudáfrica se encuentra en un proceso de cultivo para hacer crecer abalone con fines de consumo de manera sostenible. La especie es ampliamente consumida en Asia Oriental, Estados Unidos y México.


La base de datos

La información utilizada fue tomada de un set de datos proveído por la división de recursos marinos de Taroona en el Department of Primary Industry and Fisheries, Tasmania. Los datos son del año 1995 y fue un estudio original que no tenía propósitos para Machine Learning, la misma no tiene datos faltantes. Esta base de datos se encuentra disponible en:

https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/

Los datos se usan para predecir la edad del abalone a partir de las siguientes características:

  1. Sexo.
  2. Largo.
  3. Diámetro.
  4. Altura.
  5. Peso absoluto.
  6. Peso de su carne.
  7. Peso de la viscera después del sangrado.
  8. Peso de la concha después de haber sido secada.

Con estos datos se pretende obtener la cantidad de anillos en la carne, de la cual se puede derivar la edad del molusco. La otra manera de calcularlo es usar un microscopio y contar los anillos visibles en la muestra, esto es una tarea que consume mucho tiempo y es bastante aburrida (según el criterio de expertos). Por la razón anterior se prefiere usar las 8 características listadas anteriormente, en lugar del microscopio.

Han habido trabajos anteriores que tratan de predecir la cantidad de anillos con las características anteriores, usando los siguientes resultados:

  • Cascade-Correlation (no hidden nodes) con 24.86% de acierto.
  • Cascade-Correlation (5 hidden nodes) con 26.25% de acierto.
  • C4.5 con 21.5% de acierto.
  • knn con k = 5 con un 3.57% de acierto.

Otra proposición para resolver el problema es dividir el set de datos en grupos, creando tres categorías de clasificación: 1~8 anillos, 9 y 10 anillos; y finalmente de 11 anillos en adelante. Los resultados son los siguientes:

  • Backprop con 64% de acierto.
  • Dystal con 55% de acierto.
  • Cascade-Correlation (no hidden nodes) con 61.40% de acierto.
  • Cascade-Correlation (5 hidden nodes) con 65.61% de acierto.
  • C4.5 con 59.2% de acierto.
  • knn con k=5, acertando un 62.46%.

Análisis Exploratorio de Datos

Para este trabajo se propone realizar un análisis de los datos usando técnicas como PCA, aprendizaje supervisado, no supervisado y redes neuronales. Todas estas herramientas son implementadas en la biblioteca de Scikit-Learn. El análisis exploratorio de los datos puede ser visualizado en Github.

Se realizó el preprocesamiento de los datos para ver si es posible no tener que procesar los 8 atributos de los datos. El preprocesamiento por PCA se muestra en la Figura 2.

Figura 2. Análisis de componentes principales de los datos

De estos datos se propone realizar las siguientes tres propuestas para analizar los datos, y su comportamiento:

  1. Separar los datos en clusters a través de aprendizaje no supervisado.
  2. Realizar el mismo proceso de la propuesta 1, pero iniciando con los pesos de las correlaciones cruzadas.
  3. Obtener la mayoría de los grupos en cada uno de los tres clusters.

Las tres propuestas anteriores realizan las tareas de aprendizaje supervisado utilizando una red neuronal del tipo MLP, soportada en la biblioteca de Scikit Learn.

De este análisis exhaustivo se puede ver que los datos pueden ser separados en clusters, sin embargo los pesos iniciales a cada una de las variables no presentan ninguna mejora importante. Los datos tienen un rendimiento de 23%.

Finalmente, el agrupamiento en tres grupos permite obtener la predicción en rangos de anillos. Si se quisiera predecir la procedencia de los anillos dentro de cada uno de los tres grupos se obtendra un rendimiento de 26%, lo cual es bastante similar a las propuestas del párrafo anterior.

De este análisis exploratorio de los datos se llega a la conclusión definitiva que los datos no son uniformes, los mismos muestran una distribución gaussiana como se muestra en la Figura 2.

Figura 2. Distribución de las clases

Estos datos al no ser balanceados en los extremos hace difícil la clasificación de las clases en la distribución. Es necesario rellenar estos datos si se quisiera una manera robusta para determinar el número de anillos en un abalone, usando 8 características.

Por la distribución de los datos en la Figura 2 se puede concluir que la mejor forma de predecir los datos es clasificar un valor en mayor o menor a cierta cantidad de anillos en la campana de Gauss, el centro de la misma se puede ver que es en alrededor de 9 anillos.

Esto es respaldado por el análisis exploratorio de los datos usando las tres propuestas anteriormente mencionadas, donde se indica el porqué esta perdida de granularidad es coherente en estos datos.

Como se dijo anteriormente, los abalone es permitido pescarlo en zonas comerciales si son mayores a 8 años, por esta razón se propone realizar un red neuronal para predecir si el molusco es mayor o menor a este límite para ser pescado dentro del rango de la ley en zonas comerciales.

La curva de aprendizaje de la red implementada se muestra en la Figura 3. Donde se nota que después de usar 1400 datos de entrenamiento se obtiene un rendimiento de alrededor de 83% sin mejorar mucho después de este punto.

Figura 3. Curva de aprendizaje de la red neuronal MLP

Esta red puede ser usada como una herramienta para predecir si un molusco es lo suficientemente maduro para ser pescado, tomando como punto límite si el ser vivo es mayor o menor a 8 años. Esto puede ser realizado con un margen de exactitud de 83%, siendo un método robusto.


Pensamientos finales

La preservación de recursos humanos puede ser llevado de la mano con la tecnología, en este caso se muestra una forma en la que una red neuronal puede ser implementada para clasificar si un abalone es maduro y puede ser pescado. Esto es porque la extracción de estos moluscos es permitido en zonas comerciales si son mayores a 8 años, esta edad es relativa al número de anillos con que cuenta el ser vivo, este parámetro puede ser determinado a partir de ocho atributos. Esta tarea de clasificación puede ser implementada con un 83% de precisión.

La herramienta propuesta puede ser utilizada también como un método para clasificar la pesca de un día para determinar si hay abalone con potencial de fertilidad en una pesca de alguna embarcación.

Las herrramientas de aprendizaje automático sin duda alguna pueden ayudar a preservar la vida marina en nuestros océanos, noten como una red neuronal junto con un análisis exhaustivo de los datos puede desencadenar en una aplicación práctica a un problema real que afecta a nuestra sociedad actual. Este trabajo puede ser derivado a otras especies marinas en peligro de extinción.

Como recomendación para tener un sistema más robusto es necesario tomar más datos para balancear cada una de las clases utilizadas.