Curso
El modelo de lenguaje de gran tamaño de Google, Bard, ha mejorado desde su lanzamiento en 2023 y recientemente ha añadido respuestas en "tiempo real" similares a otros modelos.
El líder actual en este ámbito es ChatGPT de OpenAI, y quería saber cómo se mediría Bard. Google inventó los modelos transformer que impulsan estas IAs generativas y cuenta con enormes recursos para intentar recuperar el liderazgo. Por otro lado, OpenAI tiene la ventaja de varios años de feedback de usuarios con sus modelos GPT-2, GPT-3, GPT-3.5 y GPT-4.
Hace poco, DataCamp publicó una chuleta de ChatGPT para ciencia de datos con más de 60 ejemplos de usos reales de ChatGPT en ciencia de datos. En la chuleta, ChatGPT rinde bien en todas las tareas.
Aunque Google menciona explícitamente que Bard aún no está optimizado para tareas de programación, en este artículo probaremos varias tareas de ciencia de datos para mostrar dónde Bard cumple—y dónde no—para ver si ha cambiado el trono de manos. Puedes encontrar una comparación más general de ChatGPT vs Google Bard en otro artículo.
Curso de Introducción al ChatGPT
Empieza con ChatGPT
Flujos de trabajo de programación
¿Dónde rinde bien Bard?
Optimizar código es una tarea común pero delicada. Suele haber muchas formas de hacer el código más eficiente o rápido, y rara vez existe una única respuesta correcta. Una buena respuesta a una petición de optimización debería proponer varias soluciones. La tarea pedía a Bard optimizar código SQL.

Bard ofrece 10 opciones. Todas son sensatas, aunque algunas son variaciones sobre lo mismo (cinco tipos de creación de índices) y se centran en la gestión de la base de datos más que en mejorar la consulta.
Escribir tests unitarios es importante y a poca gente le entusiasma, así que que la IA lo haga por ti puede ser una bendición. Claro que tiene que escribir buenos tests. En este ejemplo, se pide a Bard que escriba tests para una función que calcula factoriales.

El código está bien estructurado y la mayoría de los tests tienen sentido. Una posible pega es que la prueba para entradas de tipo cadena pide que la función devuelva valores numéricos. Un programador humano probablemente escribiría tests que lanzasen un error cuando la entrada fuese una cadena, ya que el factorial de un texto no tiene sentido. El prompt no especificaba qué comportamiento debía tener una entrada de tipo cadena; con un prompt más detallado se podría corregir. Aun así, consideraría esta respuesta buena, aunque no perfecta.
¿Dónde rinde mal Bard?
Quizá el caso de uso más extendido de ChatGPT en ciencia de datos es explicar errores de código. Por eso esperaba que Bard bordase una tarea en la que tenía que explicar un error de sintaxis sencillo en código R.

Por desgracia, Bard rechazó responder (y dio una respuesta similar cuando se le pidió explicar errores de Python y SQL). Es decepcionante. Sin embargo, el lado positivo es que negarse a contestar es la mejor forma de fallar. Un gran problema de los modelos de IA es cuando sueltan con seguridad respuestas erróneas que pueden inducirte a error. Bien por Google por inculcar prudencia en Bard.
Bard dio una respuesta similar al pedirle que explicase un código en Python.

Veredicto: gana ChatGPT
Aunque algunas respuestas de Bard a preguntas de programación fueron decentes, tiene lagunas muy evidentes en torno a la explicación de código y de errores, lo que lo hace poco adecuado para ayudarte a aprender de tu código.
Flujos de trabajo de análisis de datos
¿Dónde rinde bien Bard?
Usar lenguaje natural (es decir, frases humanas) para escribir consultas SQL es un caso de uso importantísimo porque permite a perfiles de negocio menos técnicos acceder a los datos de las bases. Aquí se pide a Bard que escriba una consulta simple que agregue detalles de clientes.

El código y las explicaciones son correctos, y además ordena las filas de tipo de email más común a menos común, algo útil para quien tenga que revisar los resultados.
Las common table expressions (CTE) son el equivalente en SQL a las variables en Python o R: te permiten construir consultas largas por etapas. Reescribir consultas complejas con subconsultas anidadas es un truco útil para hacer tu código más legible. En el siguiente ejemplo, quería que Bard moviese la subconsulta (el código interno que empieza con SELECT) a una CTE.

Aquí Bard entendió mal el problema y pasó todo a una CTE. Sin embargo, Bard tiene un as en la manga: cuando le pides una respuesta, en realidad genera tres y te deja elegir. En este caso, la tercera es correcta.

Otra tarea interesante de análisis de datos es la limpieza. No es divertida para humanos, así que ayuda que la IA la haga por ti. Sin embargo, suele haber varias formas de limpiar los datos, no una única solución.

En este caso, el código es correcto pero tiene dos particularidades. Primero, asume que customer_id está en el índice del DataFrame. Aunque algunos usuarios de pandas consideran que es la mejor forma de almacenar datos, el prompt decía que customer_id era una columna. Segundo, la combinación .replace()/.isnull() es más tosca que usar .fillna(). De nuevo, el enfoque de "tres soluciones" de Bard le salva: la segunda solución resuelve ambas quejas.

¿Dónde rinde mal Bard?
Como empresa de educación, en DataCamp tenemos una necesidad casi infinita de nuevos conjuntos de datos para que los usuarios practiquen análisis. Que la IA pueda generarlos al instante sería un cambio de juego. Para el resto, poder generar datasets rápidamente para probar su código también es una gran ventaja. ChatGPT lo hace muy bien, veamos Bard.

De nuevo, se niega a contestar. Como en los ejemplos de programación, me impresiona la contención de la IA, pero decepciona que no pueda completar la tarea.
Dado que gran parte del análisis de datos es manipulación de datos, sería genial que la IA pudiese escribir tu código. El siguiente ejemplo es algo delicado porque requiere entender que el año debe calcularse a partir de la fecha de incorporación.

Por desgracia, no captó ese matiz y el código está mal. De hecho, las tres soluciones generadas son incorrectas. Es una mala forma de fallar: la IA responde con mucha seguridad, pero está equivocada.
Veredicto: gana ChatGPT
Me encanta que Bard ofrezca tres soluciones para aumentar las probabilidades de acertar. Sin embargo, su incapacidad para generar datasets y realizar manipulaciones (un poco) complejas es un bloqueo.
Flujos de trabajo de visualización de datos
¿Dónde rinde bien Bard?
Probé una tarea sencilla de "crear un diagrama de dispersión" con un giro: cambiar la paleta de colores del gráfico. El medio FiveThirtyEight publica su propio tema de colores, disponible en el popular paquete Matplotlib.

El código es correcto, aunque tiene una peculiaridad: se importa mcolors pero no se utiliza.
¿Dónde rinde mal Bard?
Otra tarea bastante directa es dibujar un gráfico de líneas con varias series. El dataset usado es gapminder, habitual en demostraciones.

Aquí el código es casi correcto, pero aparece el mismo problema: Bard duda si country debe ser columna o índice (aunque se indica en el prompt). El filtrado de filas en la línea plt.plot() asume que country está en el índice, lo cual es incoherente con la línea anterior.
Pedí a Bard que hiciera lo mismo usando ggplot2 de R.

Bard se negó amablemente. Me sorprende un poco, ya que ggplot2 es el paquete de gráficos más popular en R desde hace más de una década y hay muchísimos ejemplos disponibles.
Veredicto: gana ChatGPT
Podría pasar por alto la confusión de Bard con los índices de pandas, pero no poder dibujar un gráfico sencillo con ggplot2 lo hace inviable para usuarios de R.
Flujos de trabajo de aprendizaje automático
¿Dónde rinde bien Bard?
Probé varias tareas y, por desgracia, todas dieron problemas. Es una gran señal de alarma para Bard, ya que el machine learning en Python es tremendamente popular.
¿Dónde rinde mal Bard?
Quizá lo más obvio para empezar en machine learning es entrenar un modelo y hacer predicciones en Python.

El código es en su mayor parte correcto, pero hay un problema al crear los conjuntos de entrenamiento y prueba. Es buena práctica seleccionar filas aleatorias para cada conjunto, pero Bard toma las últimas mil filas para el conjunto de prueba (y el resto para entrenamiento). Solo sería aceptable si las películas en el dataset estuviesen en orden aleatorio.
Otra área clave es la explicabilidad de modelos. Los árboles de decisión se explican con relativa facilidad usando valores Shap y existe un flujo de trabajo bastante estándar para ello.

Por desgracia, el código incluye una llamada a shap.explain(), una función que no existe. Este tipo de problema se detecta fácil al ejecutar el código, pero generar código que no funciona te hace perder tiempo.
También quise probar una tarea más conceptual. Gran parte del arte del machine learning consiste en usar conocimiento del dominio para crear variables significativas que alimentar a los modelos. Idear características puede ser difícil, por lo que es un área donde la IA puede ayudar mucho.

Aquí la respuesta no es terrible, ya que propone dos características útiles (género y presupuesto). Sin embargo, las otras dos ideas eran las ya especificadas en el prompt, y la segunda lista no se pidió. Además, habla de "técnicas de ingeniería de datos" en lugar de "técnicas de machine learning", lo cual no es correcto.
Veredicto: gana ChatGPT
Bard lo hizo muy mal aquí; no hay color.
Flujos de trabajo de series temporales
¿Dónde rinde bien Bard?
Por desgracia, no conseguí que Bard completase ninguna tarea de series temporales.
¿Dónde rinde mal Bard?
Probé tareas de manipulación para convertir datos diarios en semanales y mensuales.

Bard se negó.
Después intenté que realizase una prueba de estacionariedad.

De nuevo, Bard se negó. Como antes, celebro la contención incorporada para reducir respuestas erróneas.
Veredicto: gana ChatGPT
Parece que el análisis de series temporales aún no es lo suyo.
Flujos de trabajo de procesamiento del lenguaje natural
¿Dónde rinde bien Bard?
Cabría pensar que los grandes modelos de lenguaje se desenvuelven bien con el lenguaje. El análisis de sentimiento (determinar si un texto tiene tono positivo o negativo) es clave para cuantificar reseñas de productos y se considera básico en análisis de texto. Esta tarea tenía un pequeño giro: incluía un emoji y una expresión coloquial.

La primera respuesta de Bard está bien, pero pasó por alto que cada línea del prompt debía considerarse por separado. (En justicia, no se dijo explícitamente, aunque una persona quizá lo habría supuesto.) La tercera respuesta sí captó ese detalle.

En ambos casos, interpretó correctamente el emoji y la jerga.
¿Dónde rinde mal Bard?
Traducir texto entre idiomas humanos fue el caso de uso original de los transformers. Pedí a Bard que respondiese en francés.

Por desgracia, Bard dio una explicación en inglés sobre machine learning y la traducción de la expresión "machine learning" al francés, en lugar de ofrecer toda la salida en francés.
Veredicto: gana ChatGPT
Este fallo de traducción me sorprendió mucho.
Tareas conceptuales y de carrera profesional
¿Dónde rinde bien Bard?
Explicar ideas técnicas de tu análisis a personas sin background en datos es una de las partes más difíciles de la ciencia de datos. Pedí a Bard que explicase las pruebas A/B a una persona directiva.

La explicación es bastante buena. Hace una suposición un tanto dudosa de que la nueva tipografía resulta en una tasa de conversión mayor (depende de cómo se haya diseñado el test; podría ser simplemente diferente). Las otras dos respuestas sí captaron este matiz, así que no le restaré puntos.
Otra tarea útil para la IA es resumir trabajos largos. Aquí pedí a Bard que resumiese el artículo original sobre los transformers (escrito por empleados de Google).

Es un buen resumen, fácil de leer. Una particularidad es que incluye enlaces a artículos de blog sobre el paper en lugar de al paper original.
Para quienes quieren una carrera en datos, obtener ideas de proyectos para conseguir el trabajo soñado es un consejo vital. Pedí a Bard que propusiera ideas de proyectos. Es otra tarea creativa sin una única respuesta correcta.

Por último, redactar introducciones para piezas largas es una de esas tareas algo pesadas que prefiero delegar en la IA.

De nuevo, con un contexto mínimo, la IA ofrece un texto bien escrito.
¿Dónde rinde mal Bard?
En este caso, Bard rindió bien en todas las tareas que le propuse.
Veredicto: empate
Aunque es difícil cuantificar si ChatGPT o Bard es mejor para estas tareas creativas, me alegra haber encontrado un área en la que Bard ofreció resultados de alta calidad de forma constante.
Resumen
Hay lagunas notables en el conocimiento de Bard sobre flujos de trabajo de ciencia de datos: no poder explicar errores de código y rendir mal en tareas de machine learning en Python son problemas serios.
Me encanta poder elegir entre tres respuestas, y también que sea lo bastante prudente como para reconocer sus límites. Negarse a responder es muy preferible a dar una respuesta errónea.
En definitiva, por ahora ChatGPT sigue reinando, pero estoy deseando ver cómo mejora Bard. La competencia en el espacio de la IA generativa solo puede beneficiar al mundo.
Lleva tus habilidades al siguiente nivel
Si quieres aprender más sobre cómo usar IA generativa para ciencia de datos, echa un vistazo a estos recursos:
- Aprende a usar ChatGPT con eficacia en el curso Introduction to ChatGPT.
- Consulta nuestra guía para usar ChatGPT en proyectos de ciencia de datos.
- Descarga esta práctica chuleta de prompts de ChatGPT para ciencia de datos.
- Escucha este episodio del pódcast sobre cómo ChatGPT y GPT-3 están ampliando los flujos de trabajo para entender cómo puede beneficiar a tu empresa.
- Aprende más sobre qué es GPT-4 y por qué importa.
Curso de Introducción al ChatGPT
Empieza con ChatGPT
Richie ayuda a particulares y organizaciones a mejorar en el uso de los datos y la IA. Es científico de datos desde antes de que se llamara ciencia de datos, y ha escrito dos libros y creado muchos cursos DataCamp sobre el tema. Es presentador del podcast DataFramed, y dirige el programa de seminarios web de DataCamp.

