Proyectos / whatMLmodel
¿Qué es whatMLmodel?
Esta es una aplicación impulsada por IA que permite obtener recomendaciones sobre modelos de machine learning a partir de la breve descripción de un dataset. El proyecto, que estoy desarrollando junto a colaboradores, se encuentra aún en su versión beta y es de código abierto. Si eres desarrollador o tienes conocimientos sobre machine learning, puedes sumarte y contribuir con tus ideas y experiencia.

¿Cómo surgió la idea?
Hace un tiempo, cuando las APIs de texto generativo eran una novedad, tuve una idea: ¿y si, en lugar de pedir un texto libre, pedía un JSON con un esquema definido? En otras palabras: usar la API no para sostener una conversación, sino para mover los hilos de una aplicación. Más adelante descubrí que eso ya existía, y que consistía simplemente en utilizar la API en “modo JSON”. Bastaba entonces con definir un buen esquema, diseñar un prompt adecuado y desarrollar una aplicación capaz de reaccionar a esa estructura.
Tiempo después, me adentré en el mundo del machine learning y me sorprendió la cantidad de criterios que había que tener en cuenta para dar el tratamiento adecuado a un conjunto de datos. Usé muchas veces ChatGPT para orientarme sobre qué modelo aplicar a qué problema, pero la línea del chat no era lo más práctico y tuve que hacer varios apuntes para asentar conocimientos y facilitar consultas rápidas.
Meses después, buscando inspiración para un nuevo proyecto, ambas ideas se fusionaron: se me ocurrió crear una plataforma que permitiera desarrollar criterios de selección de modelos de machine learning, con una interfaz accesible y alimentada dinámicamente por inteligencia artificial. Además, como en esos momentos estaba resolviendo problemas de procesamiento de datos para practicar, vi en esto la oportunidad de volcar mis casos resueltos en una base de conocimiento para que la IA hiciera sus recomendaciones.
Así funciona la app
El proceso es sencillo: el usuario comienza haciendo una breve descripción de su dataset y variable objetivo. Un ejemplo clásico sería: “Conociendo las características de las víctimas del Titanic (edad, sexo, ocupación, etc.), se busca predecir la probabilidad de supervivencia de una determinada persona.”
A partir de esa descripción, la aplicación genera una interpretación más detallada, que incluye el nombre de las features más importantes, el tamaño del dataset, etc. El usuario debe chequear esta información y corregirla antes de darle a Get models.
La IA genera así una serie de recomendaciones habiendo detectado el tipo de problema (regresión, clasificación o clustering) y sugiriendo adaptaciones a otros tipos si fuera posible. Por ejemplo, la probabilidad de supervivencia se puede determinar mediante una variable discreta (sí o no) y estaríamos hablando de un problema de clasificación, pero puede traducirse a uno de regresión si se define mediante una variable continua (un 70% de probabilidad de supervivencia).
El resultado es un análisis interactivo en el que el usuario puede explorar los modelos de machine learning más adecuados para su problema y ver cómo han rendido en datasets similares, pudiendo explorar el código utilizado en ellos. El objetivo es que la persona pueda aplicar su propio criterio para decidir qué modelo conviene utilizar, considerando opciones que tal vez no habría tenido en cuenta.
Desde un menú se puede volver a cualquier análisis realizado, marcarlos como favoritos y también editarlos. Aún no quise complicar el sistema con creación de cuentas, así que la aplicación utiliza la memoria del navegador para guardar los datos localmente.
Prompt engineering
La aplicación interactúa con la IA en dos ocasiones. En un primer momento, con la descripción inicial del usuario, la IA genera una interpretación más detallada. Este es el prompt que se utiliza en ese caso:
A continuación, el usuario corrige la información, y con ello se hace una segunda llamada a la IA, lo que da lugar a la recomendación de modelos con base en el siguiente prompt:
Adicionalmente, se probee de ejemplos (prototipos de respuestas) y la lista con los “similar datasets” que deben ser seleccionados. De esta manera, la IA tiene el contexto suficiente para devolver una respuesta efectiva. La misma es procesada por el backend, que reconoce las keys de los JSON para armar una consecusión de párrafos y tablas.
Features que se vienen
Tenemos una serie de características que nos gustaría implementar muy pronto:
- Enciclopedia: Se podrán explorar las definiciones y teorías de aplicación de todos los modelos, con textos y gráficos bien detallados.
- Chat interactivo: Para cada análisis diferente, se abrirá un chat donde el usuario podrá seguir indagando sobre el problema en cuestión y profundizar más en sus posibles soluciones.
- Generación de datasets: La aplicación podrá generar datasets ficticios basados en la descripción del problema. Una herramienta muy útil para poner a prueba modelos y algoritmos.
- Generación de código: La aplicación podrá generar código para implementar los modelos sugeridos. Reconocemos que esta es una funcionalidad compleja y delicada, ya que existe el riesgo de que la IA alucine y que el usuario no tenga el conocimiento necesario para interpretar y manejar el código adecuadamente. Sin embargo, creemos que ofrecer una guía para el tratamiento de los datos puede convertirse, a largo plazo, en una de las funciones más valiosas de la aplicación.
- Comunidad colaborativa: Queremos fomentar el surgimiento de una comunidad donde los usuarios podrán compartir sus datasets y ayudarse mutuamente en el aprendizaje y resolución de problemas.
Nuevamente: este es un proyecto open–source
Queremos que esta aplicación se convierta en la mejor plataforma para aprender sobre machine learging y explorar diversos modelos. Por eso, si te gustó la idea y eres developer o tienes conocimientos sobre aprendizaje automático, ¡estás más que invitado a participar!
