Vai al contenuto principale

Bard vs ChatGPT per la Data Science

Bard è l’ultimo LLM per la generazione di testi, creato da Google. In questo articolo scopri come Bard si confronta con l’attuale soluzione di riferimento per la Data Science, ChatGPT.
Richie Cotton
Richie Cotton

Crea il tuo account gratuito

Pratica and corso your progress.

Continua con GoogleContinuando, accetti la nostra Termini di utilizzo, i nostri Informativa sulla privacy e il fatto che i tuoi dati sono archiviati negli USA.

Il large language model Bard di Google è migliorato dal lancio nel 2023, aggiungendo di recente risposte "in tempo reale" simili ad altri modelli. 

L’attuale leader in questo ambito è ChatGPT di OpenAI, e volevo capire come si sarebbe comportato Bard al confronto. Google ha inventato i modelli transformer che alimentano queste AI generative e ha enormi risorse per provare a riconquistare la leadership. Dall’altro lato, OpenAI ha il vantaggio di diversi anni di feedback degli utenti sui suoi modelli GPT-2, GPT-3, GPT-3.5 e GPT-4.

Di recente, DataCamp ha rilasciato un Cheat Sheet di ChatGPT per la Data Science con oltre 60 esempi di utilizzi reali di ChatGPT per la data science. Nel cheat sheet, ChatGPT si comporta bene in tutti i compiti.

Anche se Google dichiara esplicitamente che Bard non è ancora ottimizzato per i compiti di programmazione, in questo articolo testeremo alcune attività di data science per mostrare dove Bard funziona bene—e dove no—per vedere se la corona è passata di mano. Puoi trovare un confronto più generale tra ChatGPT e Google Bard in un articolo separato. 

Workflow di programmazione

Dove Bard si comporta bene?

L’ottimizzazione del codice è un compito comune ma insidioso. Spesso esistono molte possibili strade per rendere il codice più efficiente o veloce, e di solito non c’è una sola risposta corretta. Una buona risposta a una richiesta di ottimizzazione del codice dovrebbe proporre varie soluzioni. Il task chiede a Bard di ottimizzare del codice SQL.

image19.jpg

Qui Bard propone 10 opzioni. Tutte sensate, anche se alcune sono variazioni sul tema (cinque modi per creare un indice) e tutte incentrate sulla gestione del database piuttosto che sul miglioramento della query.

Scrivere unit test è un compito importante che a pochi piace, quindi farlo fare all’AI può essere una benedizione. Ovviamente, deve scrivere test validi! In questo esempio, si chiede a Bard di scrivere test per una funzione che calcola i fattoriali.

image24.jpg

Il codice è ben strutturato e la maggior parte dei test è sensata. Un aspetto potenzialmente problematico è che il test per gli input stringa chiede alla funzione di restituire valori numerici. Un programmatore umano probabilmente scriverebbe test che generano un errore quando si inserisce una stringa, dato che il fattoriale di un testo non ha senso. Il prompt non specificava come dovesse comportarsi la funzione con un input stringa, quindi questo problema si potrebbe risolvere con un prompt più dettagliato; in ogni caso, considererei questa risposta buona ma non perfetta.

Dove Bard si comporta male?

Forse il caso d’uso più diffuso di ChatGPT per la data science è spiegare gli errori nel codice. Per questo mi aspettavo che Bard eccellesse in un compito in cui gli veniva chiesto di spiegare un semplice errore di sintassi in del codice R.

image15.jpg

Purtroppo, Bard si è rifiutato di rispondere (e ha fornito una risposta simile quando gli è stato chiesto di spiegare errori Python e SQL). È deludente. Tuttavia, il lato positivo è che rifiutare di rispondere è il miglior modo possibile di fallire. Un grosso problema dei modelli di AI è quando sparano con sicurezza risposte sbagliate che possono trarti in inganno. Bene Google per aver dotato Bard di cautela.

Bard ha dato una risposta simile quando gli è stato chiesto di spiegare del codice Python.

image21.jpg

Verdetto: vince ChatGPT

Sebbene alcune risposte di Bard alle domande di programmazione fossero discrete, presenta lacune evidenti nella spiegazione del codice e degli errori, rendendolo inadatto ad aiutarti a capire il tuo codice.

Workflow di analisi dei dati

Dove Bard si comporta bene?

Usare il linguaggio naturale (cioè frasi umane) per scrivere query SQL è un caso d’uso estremamente importante perché permette a utenti business meno tecnici di accedere ai dati nei database. Qui si chiede a Bard di scrivere una semplice query che aggrega i dettagli dei clienti.

image22.jpg

Il codice e le spiegazioni sono corretti e fa anche un passo in più ordinando le righe dal tipo di email più comune al meno comune, il che è utile per chi dovrà guardare i risultati.

Le common table expression (CTE) sono l’equivalente SQL delle variabili in Python o R: consentono di costruire query più lunghe per fasi. Riscrivere query complesse che contengono sottoquery annidate è un trucco utile per rendere il codice più leggibile. Nel seguente esempio, volevo che Bard spostasse la sottoquery (il codice interno che inizia con SELECT) in una common table expression.

image6.jpg

Qui Bard ha frainteso completamente il problema e ha spostato tutto in una CTE. Tuttavia, Bard ha un asso nella manica: ogni volta che gli chiedi di generare una risposta, in realtà ne crea tre e ti lascia scegliere. In questo caso, la terza è corretta. 

image27.jpg

Un altro caso d’uso interessante per l’analisi dei dati è la pulizia dei dati. Non è un compito divertente per gli umani, quindi è utile se l’AI può farlo per te. Tuttavia, spesso ci sono più modi per pulire i dati, piuttosto che una singola soluzione. 

image17.jpg

In questo caso, il codice è corretto ma ha due particolarità degne di nota. Primo, presume che customer_id sia nell’indice del DataFrame. Anche se alcuni utenti pandas lo considerano il modo migliore per memorizzare i dati, il prompt diceva che customer_id era una colonna. Secondo, la combinazione .replace()/.isnull() è più macchinosa rispetto a .fillna(). Anche qui, l’approccio di Bard delle "tre soluzioni" lo salva: la seconda soluzione affronta entrambe le mie obiezioni.

image3.jpg

Dove Bard si comporta male?

Come azienda educativa, in DataCamp abbiamo un bisogno quasi illimitato di nuovi dataset su cui far esercitare gli utenti. Questo significa che la capacità dell’AI di generare dataset istantaneamente è una funzionalità rivoluzionaria. Per tutti gli altri, poter generare rapidamente dataset su cui testare il proprio codice di analisi è un grande vantaggio. ChatGPT lo fa molto bene, ma vediamo come si comporta Bard.

image5.jpg

Anche qui, rifiuta di rispondere. Come negli esempi di programmazione, apprezzo l’autocontrollo mostrato dall’AI, ma sono un po’ deluso che non riesca a completare il compito.

Dato che gran parte dell’analisi dei dati è manipolazione dei dati, sarebbe fantastico se l’AI potesse scrivere il codice al posto tuo. Il seguente esempio è leggermente insidioso perché richiede all’AI di capire che l’anno va calcolato dalla data di assunzione.

image10.jpg

Purtroppo, questa sottigliezza non è stata colta e il codice è sbagliato. In effetti, tutte e tre le soluzioni generate sono sbagliate. È anche un brutto caso di errore: l’AI è sicura di sé, ma sbaglia.

Verdetto: vince ChatGPT

Mi piace che Bard fornisca tre soluzioni, così hai più possibilità di ottenere qualcosa di adatto. Tuttavia, l’incapacità di generare dataset ed eseguire manipolazioni dei dati (anche solo un po’ insidiose) è un blocco.

Workflow di visualizzazione dei dati

Dove Bard si comporta bene?

Ho provato un semplice compito di "creare uno scatter plot" con una variante: cambiare il tema di colore del grafico. Il sito d’informazione FiveThirtyEight pubblica il proprio tema di colori, disponibile nel popolare pacchetto Matplotlib.

image4.jpg

Il codice è corretto, anche se ha una particolarità: mcolors è importato ma mai usato.

Dove Bard si comporta male?

Un altro compito di plotting piuttosto lineare è tracciare un grafico a linee con più linee. Il dataset usato è chiamato gapminder, ed è comunemente usato a scopo dimostrativo. 

image14.jpg

Qui il codice è quasi corretto ma include un problema simile al precedente: Bard non è sicuro se country debba essere una colonna o un indice (anche se è specificato nel prompt). Il sottoinsieme di righe nella riga plt.plot() presume che country sia nell’indice, il che è incoerente con la riga precedente.

Ho chiesto a Bard di svolgere lo stesso compito usando il pacchetto ggplot2 di R. 

image12.jpg

Bard qui rifiuta cortesemente. Sono un po’ sorpreso, dato che ggplot2 è il pacchetto di grafici più popolare in R da oltre un decennio e sono disponibili moltissimi esempi di codice.

Verdetto: vince ChatGPT

Potrei perdonare la confusione di Bard sugli indici di pandas, ma l’incapacità di disegnare un semplice grafico con ggplot2 lo rende inadatto agli utenti R.

Workflow di machine learning

Dove Bard si comporta bene?

Ho provato alcuni compiti e, sfortunatamente, tutti sono risultati problematici. È un grosso campanello d’allarme per Bard, dato che il machine learning in Python è estremamente popolare.

Dove Bard si comporta male?

Forse il punto di partenza più ovvio per il machine learning è addestrare un modello e fare previsioni in Python. 

image7.jpg

Il codice è per lo più valido, ma c’è un problema con la creazione dei set di training e test. È buona pratica selezionare casualmente le righe da inserire in un set o nell’altro, ma Bard prende semplicemente le ultime mille righe per il set di test (mettendo tutto il resto nel training). Andrebbe bene solo se i film nel dataset fossero ordinati casualmente.

Un’altra grande area d’interesse è l’interpretabilità dei modelli. Gli alberi decisionali sono abbastanza facili da spiegare usando i valori Shap, e c’è un workflow piuttosto standard per farlo. 

image26.jpg

Purtroppo, il codice include una chiamata a shap.explain(), una funzione che non esiste. Questo tipo di problema è abbastanza facile da individuare perché provando a eseguire il codice fallirà. Tuttavia, generare codice non funzionante è una perdita di tempo.

Volevo anche provare un compito di machine learning più concettuale. Gran parte dell’arte del machine learning sta nell’usare la conoscenza del dominio per creare feature significative da dare in pasto ai modelli. Trovare idee per le feature può essere complicato, quindi è un ambito in cui l’AI può essere molto utile. 

image11.jpg

Qui la risposta non è terribile, visto che propone due idee utili per le feature (genere e budget). Tuttavia, le altre due idee erano semplicemente quelle specificate nel prompt, e la seconda lista non era richiesta. Inoltre, fa riferimento a "tecniche di data engineering" anziché a "tecniche di machine learning", il che è scorretto.

Verdetto: vince ChatGPT

Qui Bard si è comportato molto male; non c’è paragone.

Workflow di analisi delle serie storiche

Dove Bard si comporta bene?

Sfortunatamente, non sono riuscito a convincere Bard a completare alcun compito sulle serie storiche.

Dove Bard si comporta male?

Ho provato compiti di manipolazione dei dati per serie storiche che prevedevano il passaggio da dati giornalieri a settimanali e mensili. 

image25.jpg

Bard ha rifiutato.

Poi ho provato a fargli eseguire un test di stazionarietà. 

image8.jpg

Di nuovo, Bard ha rifiutato. Come prima, sono contento della prudenza incorporata nell’AI di Bard per ridurre il numero di risposte errate generate.

Verdetto: vince ChatGPT

Sembra che l’analisi delle serie storiche non sia ancora nelle corde di Bard.

Workflow di elaborazione del linguaggio naturale

Dove Bard si comporta bene?

Si potrebbe immaginare che i large language model funzionino bene con il linguaggio. L’analisi del sentiment (determinare se un testo ha una connotazione positiva o negativa) è importante per quantificare le recensioni dei prodotti sui siti di shopping ed è considerata una base della text analysis. Questo compito è stato reso leggermente più insidioso includendo un’emoji e un’espressione gergale. 

image1.jpg

La prima risposta di Bard è OK, ma si è perso il fatto che ogni riga del prompt andasse considerata separatamente. (A onor del vero, non era esplicito, anche se un umano l’avrebbe probabilmente intuito.) La terza risposta di Bard ha colto questo dettaglio. 

image20.jpg

In entrambi i casi, emoji e gergo sono stati interpretati correttamente.

Dove Bard si comporta male?

La traduzione di testo da una lingua umana a un’altra è il caso d’uso originale dei modelli transformer. Ho chiesto a Bard di fornire una risposta in francese. 

image9.jpg

Sfortunatamente, Bard ha fornito una spiegazione in inglese del machine learning e la traduzione della frase "machine learning" in francese, invece di fornire l’intera risposta in francese.

Verdetto: vince ChatGPT

Il fallimento nella traduzione mi ha molto sorpreso.

Compiti concettuali e orientati alla carriera

Dove Bard si comporta bene?

Spiegare idee tecniche derivanti dalla tua analisi a persone senza background nei dati è una delle parti più difficili della data science. Ho chiesto a Bard di spiegare l’A/B test a un dirigente. 

image2.jpg

La spiegazione è piuttosto buona. C’è un’assunzione un po’ discutibile che il nuovo font abbia portato a un tasso di conversione più alto (dipende da come è stato impostato il test; potrebbe semplicemente essere un tasso diverso). Le altre due risposte hanno colto questa sottigliezza, quindi non toglierò punti qui.

Un altro compito utile per l’AI è riassumere lavori più lunghi. Qui ho chiesto a Bard di riassumere l’articolo originale sui modelli transformer (scritto da dipendenti Google). 

image18.jpg

È un buon riassunto, facile da leggere. Una particolarità è che include alcuni link a post di blog sull’articolo invece che all’articolo originale.

Per chi sogna una carriera nei dati, ottenere idee su come arrivare al lavoro dei sogni è un consiglio professionale vitale. Ho chiesto a Bard di proporre idee per progetti. È un altro compito creativo in cui non esiste una sola risposta giusta. 

image13.jpg

Infine, scrivere introduzioni per lavori più lunghi è uno di quei compiti un po’ noiosi che preferirei delegare all’AI. 

image23.jpg

Di nuovo, con un contesto minimo, l’AI fornisce un testo ben scritto.

Dove Bard si comporta male?

In questo caso, Bard si è comportato bene in tutti i compiti proposti.

Verdetto: è un pareggio

Anche se è difficile quantificare se ChatGPT o Bard siano migliori per questi compiti creativi, sono contento di aver trovato un ambito in cui Bard ha fornito costantemente output di alta qualità.

Riepilogo

Ci sono lacune notevoli nelle conoscenze di Bard sui workflow di data science: l’incapacità di spiegare gli errori del codice e le pessime prestazioni nei compiti di machine learning in Python sono grossi problemi.

Mi piace che tu riceva tre risposte tra cui scegliere la migliore, e mi piace che sia abbastanza prudente da conoscere i propri limiti. Rifiutarsi di rispondere a una domanda è molto meglio che dare una risposta sbagliata.

In definitiva, per ora ChatGPT regna sovrano, ma non vedo l’ora di vedere i progressi di Bard. La concorrenza nel campo dell’AI generativa può solo fare bene al mondo.

Fai un passo in più

Se vuoi approfondire come usare l’AI generativa per la data science, dai un’occhiata a queste risorse: 

Richie Cotton

Autore

Richie Cotton

Richie aiuta persone e organizzazioni a migliorare nell'uso dei dati e dell'IA. È un data scientist da prima che si chiamasse data science, e ha scritto due libri e creato molti corsi su DataCamp sull’argomento. È host del podcast DataFramed e gestisce il programma di webinar di DataCamp.

Chatta con AI Richie su ogni episodio di DataFramed - tutti i campioni dei dati sono i benvenuti!

Argomenti

Correlato