Grande lavoro di Scienza Applicata (dei Dati)

Grande lavoro di Scienza Applicata (dei Dati)' can be condensed to 'Grande lavoro di Scienza Applicata'.

Cosa aiuta a risolvere problemi reali dall’inizio alla fine, dai requisiti aziendali alla presentazione convincente dei risultati

Il lavoro avanzato di data science nell’industria è talvolta conosciuto anche come “scienza applicata”, il che riflette il fatto che riguarda più che solo i dati e che molti ex accademici lavorano nel campo. Trovo che la “scienza applicata” abbia aspettative diverse rispetto alla scienza della ricerca. Quindi ho scritto ciò che, secondo la mia esperienza, aiuta a produrre un ottimo lavoro di scienza applicata. Lo uso come “definizione di completamento” per il lavoro di data science, ma molti punti beneficeranno anche analisti, ingegneri e altri ruoli tecnici.

L’obiettivo: cosa è un lavoro di scienza applicata di successo?

I grandi scienziati applicati risolvono preziosi problemi reali dall’inizio alla fine, trovando usi intelligenti dei dati e dei modelli. A volte, il primo passo per questo è scoprire il problema aziendale più impattante che probabilmente permetterà soluzioni scientifiche fattibili; a volte, il problema aziendale è ben compreso e il lavoro scientifico inizia dalla formulazione di un ben definito problema tecnico.

In entrambi i casi, il lavoro scientifico di successo parte dalla comprensione di un problema del mondo reale. Gli scienziati devono comprendere sufficientemente bene le complesse sfide aziendali da poterle tradurre in formulazioni tecniche che possano essere risolte in un tempo finito. Tagliano l’ambiguità e creano adeguate assunzioni strutturali per consentire soluzioni.

Il lavoro scientifico di successo trova quindi soluzioni tecnicamente appropriate e pragmatiche: ciò può significare deep learning all’avanguardia, ma il lavoro scientifico molto avanzato può anche consistere in qualche intelligente interrogazione SQL. I grandi scienziati sanno come scegliere lo strumento giusto per il lavoro.

I grandi scienziati capiscono che è facile bloccarsi su approcci tecnici sbagliati. Per evitarlo, strutturano il loro lavoro in modo incrementale: sono in grado di suddividere un problema complesso in sotto-problemi più piccoli; convalidano gli approcci individuali attraverso la produzione di risultati intermedi e cercano attivamente feedback dai colleghi.

Il grande lavoro scientifico incorpora il feedback, poiché i buoni bias induttivi accelerano notevolmente l’apprendimento. Ma i grandi scienziati sanno anche riconoscere una domanda empirica quando la vedono e insistono nel rispondere utilizzando i dati.

Un grande lavoro scientifico significa documentare i passaggi necessari per riprodurre una soluzione e presentare i risultati in modo appropriato per il pubblico. E include anche assicurarsi che i risultati siano utilizzati, che si tratti di un cambiamento nel software, di una decisione strategica o di un articolo pubblicato. Solo allora il prezioso problema del mondo reale è stato risolto dall’inizio alla fine.

Sintesi: 4 principi

I seguenti quattro principi sono alla base di queste raccomandazioni per il lavoro di scienza applicata nell’industria:

  1. Responsabilità: Il nostro compito è risolvere problemi ambigui dall’inizio alla fine.
  2. Curiosità efficiente: Ci piace imparare. Idealmente in modo più efficiente rispetto a un’esperimentazione forzata.
  3. Misura due volte, taglia una volta: Nel lavoro esplorativo, la pianificazione esplicita impedisce di perdersi.
  4. Risultati iterativi: Il feedback frequente riduce l’ambiguità.

Il percorso: cosa rende il lavoro scientifico più di successo?

Le seguenti sezioni offrono suggerimenti concreti che, secondo la mia esperienza, migliorano il lavoro scientifico, strutturati lungo il processo scientifico.

1. Il ruolo della scienza applicata

Il lavoro di scienza applicata è intrinsecamente sociale. Per produrre un ottimo lavoro, gli scienziati applicati devono lavorare bene in team.

Lavorare con le persone

Gran parte del lavoro scientifico richiede la collaborazione con gli altri; comprendere il lavoro precedente, trovare insiemi di dati rilevanti, chiedere spiegazioni, comunicare i progressi ai tuoi stakeholder, convincere i tuoi compagni di squadra a sostenere il tuo progetto. Alla fine sei responsabile della consegna di un risultato: gestire la collaborazione fa parte del lavoro. Ciò può significare che devi convincere un compagno di squadra a rivedere la tua richiesta di pull, e può significare che devi trovare un modo per dare priorità alle tue esigenze di ingegneria dei dati nel backlog di un altro team. Quando questo processo si blocca, puoi far avanzare la situazione e il tuo responsabile può aiutare a chiarire le priorità, ma sei tu a essere responsabile di farlo.

Seguire fino alla fine

Come parte del lavoro scientifico, i team spesso generano idee durante le sessioni di gruppo o individuali. Queste sessioni possono essere estremamente utili e contribuire a produrre un lavoro di qualità molto superiore a quello che un singolo individuo potrebbe fare da solo. Ma se le sessioni di brainstorming non sono direttamente collegate al lavoro successivo, spesso sono una perdita di tempo. Dovrai evitare quest’ultima situazione: ciò significa fare un follow-up in modo proattivo sulle idee e i compiti discussi. Se il team ha concordato che qualcosa dovrebbe essere fatto, fallo (e comunica i risultati). Se è troppo da fare immediatamente, scrivi un ticket per le idee (e comunica il ticket). Spesso è molto utile nelle sessioni di brainstorming chiedere in modo proattivo quali sono i risultati concreti e chi è responsabile dei prossimi passi, e chiunque può farlo e condividere le sue note con il team.

Trasparenza e fiducia

Non tutto va come previsto e la natura del lavoro scientifico è che la maggior parte degli esperimenti fallisce. È normale che i piani non funzionino come sperato. Questo rende il lavoro scientifico un’attività ad alta variabilità: anche se puoi prevedere con precisione il “valore atteso” del tuo lavoro, è probabile che ci siano delle sorprese.

Quando qualcosa non va come previsto, sii completamente trasparente. In particolare, informa immediatamente il tuo team quando qualcosa non va per il verso giusto. Questo permette una coordinazione più efficiente delle roadmap e dei deliverable. In cambio, aspettati fiducia: gli esperimenti falliti fanno parte del nostro lavoro quotidiano.

Il risultato più fastidioso degli esperimenti è il risultato “inconclusivo”: un esperimento non è propriamente fallito, ma non è neanche riuscito. Anche quelli fanno parte del lavoro scientifico e meritano di essere presentati e condivisi: possiamo ipotizzare perché il problema scientifico non può essere risolto? Se dovessimo ricominciare da capo, cosa faremmo in modo diverso?

Quando si lavora in team, è normale non capire tutto durante una presentazione, una conversazione o un ticket. Tuttavia, è un problema “acconsentire” senza comprendere appieno: quando gli altri assumono che hai capito qualcosa che in realtà non hai capito, ciò può portare a malintesi e divergenze nei risultati del lavoro. Come scienziati, la nostra domanda preferita dovrebbe essere “perché”: quando qualcosa non è chiaro, continua a fare domande fino a quando non ti senti di aver raggiunto una comprensione reciproca. Se hai dei dubbi, riformulare qualcosa con parole tue è uno strumento potente per verificare se hai davvero capito la cosa giusta.

2. Comprendere il problema aziendale

Comprendere correttamente i problemi aziendali è spesso più “confuso” rispetto alla ricerca scientifica pura: i concetti non sono ben definiti, le quantità non sono misurabili, gli obiettivi degli stakeholder sono in conflitto. Ma fraintendere il problema da risolvere porta a delusioni e diminuisce il valore del lavoro scientifico applicato: nessuna sofisticazione scientifica può poi salvarci.

Fai domande finché non comprendi completamente il problema aziendale. In alcuni casi, le tue domande potrebbero portare a una precisazione o addirittura a un cambiamento nella formulazione del problema aziendale.

Quando formuliamo un problema aziendale in termini tecnici, spesso dobbiamo fare alcune ipotesi di base: dobbiamo scegliere una definizione specifica di un certo concetto, ignorare i casi limite, decidere quali possibili effetti collaterali sono fuori dallo scope. Prendi nota di queste ipotesi in modo da poterle riesaminare in seguito.

Come risultato delle ipotesi fatte, potresti finire per risolvere il problema sbagliato perché un’ipotesi plausibile si è rivelata inesatta. Il modo più efficace per prevenire ciò è lavorare in modo incrementale e verificare frequentemente che gli incrementi si stiano muovendo nella giusta direzione. Portando questo all’estremo, la creazione di una soluzione provvisoria (ad esempio, un foglio di calcolo rapido) può spesso aiutare a generare un feedback aziendale prezioso.

Prima di iniziare un lavoro di modellazione approfondita, verifica nuovamente che il tuo approccio risolverà il problema aziendale corretto. Ma non dimenticare di verificare ripetutamente anche lungo il percorso. In caso di dubbio, opta per iterazioni frequenti e più piccole.

3. Le roadmap di ricerca sono alberi di ipotesi

Una volta che inizi ad analizzare dati e modelli, è facile perdersi. Scrivere una chiara roadmap di ricerca aiuta a evitarlo. Gli scienziati esperti seguono spesso in modo consapevole o inconscio una struttura chiara di ipotesi nel loro lavoro, suddividendo un problema ambiguo in sottoproblemi risolvibili in sequenza. Consiglio di scrivere una bozza completa della struttura delle ipotesi e di ottenere un feedback su di essa, prima di scrivere la prima riga di codice.

L’importante è scrivere una qualche forma di piano e orientarsi in esso mano a mano che si fa progresso. Un formato che ho trovato utile sono le mappe mentali o i punti elenco che impongono esplicitamente una struttura ad albero delle ipotesi. Questo è un “algoritmo” approssimativo per crearne uno:

  1. Fai una sessione di brainstorming su diversi approcci al tuo problema; non dimenticare di cercare soluzioni esistenti da altri team, in open source e in materiale pubblicato. Scrivile come “candidati”. L’idea qui è di avere una visione completa: raccogli molte idee sommarie.
  2. Stima approssimativamente lo sforzo necessario per “validare” un approccio: questo non è lo sforzo necessario per risolvere il problema utilizzando un determinato approccio, ma lo sforzo necessario per scoprire se un approccio funzionerà molto probabilmente o meno.
  3. Ordina gli approcci in base allo sforzo di convalida stimato.
  4. Iniziando dall’approccio con il minor sforzo di convalida, fai una sessione di brainstorming su come convalidare l’approccio e risolvere il tuo (sotto-)problema utilizzandolo. Continua in modo ricorsivo lungo il tuo albero (cioè, per ogni sottoproblema, torna al punto 1). Ripeti questo per i livelli dell’albero se necessario.

Utilizzando questo metodo, idealmente si arriva ad avere un piano ben strutturato e prioritizzato su cosa provare per primo, e cosa fare quando un’idea funziona (seguire quel percorso) e quando non funziona (continuare a lavorare sul prossimo percorso sotto quello attuale). Le “foglie” del tuo albero dovrebbero idealmente essere domande relativamente facili da testare e rispondibili con dati. La struttura del tuo piano dovrebbe anche rendere più facile descrivere i progressi e ottenere feedback sui risultati intermedi.

4. Il lavoro incrementale beneficia di un’ottima intuizione

Il consiglio più sfuggente di tutti: i grandi scienziati hanno un’intuizione straordinaria su quali approcci potrebbero funzionare e quali non meritano nemmeno una considerazione più approfondita. Questo talvolta porta all’impressione che certe persone “riescano a far funzionare tutto” – spesso è più accurato dire che queste persone sanno cosa non provare e che passano la maggior parte del loro tempo su idee produttive fin dall’inizio. Naturalmente, costruire questo livello di intuizione è difficile e richiede una carriera lunga. Una buona intuizione significa che dedichi la maggior parte del tuo tempo a ipotesi produttive – questo è importante perché l’universo delle ipotesi e delle idee potenziali da seguire è enorme e l’intuizione riduce lo spazio di ricerca nel tuo albero delle ipotesi.

L’intuizione è sociale

Quando trovi qualcuno di cui ti fidi l’intuizione, chiedigli consigli su quali approcci seguire. Chiedi loro di giustificare quei consigli. Cerca di capire come ragionano sulla corrispondenza problema-soluzione, al di là della domanda tecnica immediata.

Sviluppare l’intuizione beneficia soprattutto dell’apprendimento interattivo: considera giornate di pair-programming con i tuoi colleghi e spiegatevi reciprocamente i concetti. Cerca di incontrarti di persona e non solo a distanza: almeno io non ho ancora trovato un sostituto completo per una lavagna o due e per essere nella stessa stanza.

Le solide basi aiutano

Investi nella comprensione dei fondamenti: dovresti costruire modelli mentali su come funzionano le cose. Questi modelli devono essere “abbastanza corretti”, ma anche sufficientemente semplici da poter essere applicati a situazioni reali. Dovresti essere in grado di passare dalla “pensiero della scatola nera” a livello di architettura e di comprendere il funzionamento interno delle scatole nere quando si tratta di dettagli. Per rendere tutto più concreto: quando si tratta di dati di immagini o testo, l’idea di utilizzare “embedding” è una buona intuizione che ti permette di costruire rapidamente un’architettura mentale di modelli potenziali. Ma per giudicare accuratamente la fattibilità di tali approcci, dovresti capire appieno come vengono addestrati gli embedding e quale sia la codifica delle informazioni risultante.

Curiosità

Sii curioso riguardo a problemi simili, ma diversi. Pensa a come sono simili e come sono diversi. Pensa a come le soluzioni al tuo problema possono o non possono essere applicabili a questi problemi simili. Alcuni esempi: la sperimentazione su prodotti sostituibili è collegata alla sperimentazione su reti sociali (“effetti indiretti”). Il prezzo della moda è collegato al prezzo dei voli (“beni deperibili”). L’abbinamento di prodotti/entità è collegato all’applicazione dei diritti d’autore nella musica (“passaggi di abbinamento grossolani e precisi”).

Rifletti sul tuo lavoro precedente: quando hai dovuto provare qualcosa perché non avevi una forte intuizione, cosa puoi imparare dal tuo esperimento? Ci sono verità generali da imparare dall’esperimento che possono aiutarti a migliorare la tua intuizione?

Cerca attivamente critiche ai tuoi approcci: che sia come parte di una “Revisione della road map della ricerca” o come parte della riflessione su un progetto concluso, opinioni divergenti possono aiutarti a affinare le tue intuizioni e scoprire punti ciechi.

5. Risolvi il problema in codice pulito

Il codice pulito è una sfida particolare quando applicato al lavoro esplorativo/sperimentale tipico della scienza applicata. Ma è altrettanto importante: il codice pulito evita errori, in parte perché forza l’igiene, in parte perché i lettori del tuo codice saranno in grado di individuare più facilmente gli errori e in parte perché rende più facile per te iterare sulle idee quando i primi esperimenti inevitabilmente falliscono. I nomi delle variabili sono molto più importanti di quanto suggeriscano la maggior parte dei corsi universitari. L’incapsulamento in funzioni, classi e moduli può aiutare a navigare tra diversi livelli di dettagli e astrazione.

Tuttavia, una “produttività prematura” può anche rallentarti: fino a quando la soluzione non è chiara, dovrebbe essere facile sostituire parti del tuo approccio.

Scrivi codice tenendo conto del lettore

Quando scrivi notebook di analisi, fallo per un lettore, non solo per te stesso. Spiega cosa stai facendo. Usa buoni nomi di variabili. Pulisci i grafici. Le celle di markup sono state inventate per un motivo.

Pensa al codice DRY (non ripetere te stesso). Questo è particolarmente difficile quando si fa un lavoro esplorativo tipico della scienza applicata. Quando ti accorgi di copiare/incollare il codice da indagini precedenti, è probabilmente il momento di rifattorizzare.

Quando si effettua un lavoro esplorativo con un lettore in mente, può essere esaminato come una richiesta di pull request, proprio come qualsiasi altro pezzo di codice. Infatti, tutti i passaggi necessari per ottenere una risposta analitica finale dovrebbero essere revisionati da un secondo paio di occhi. Fai un favore ai tuoi revisori e rimuovi (o contrassegna chiaramente) il codice esplorativo prima di inviarlo per una revisione.

Documentazione

Organizzare e aggiornare una base di conoscenza centrale è uno dei problemi più diffusi nelle organizzazioni tecnologiche che conosco. Non conosco soluzioni semplici. Ma so che gli investimenti in una buona documentazione ripagano nel lungo periodo. Per la conoscenza centrale, dovrebbe esserci una (e una sola!) fonte centrale. Questo documento dovrebbe essere la fonte della verità: se il codice non fa quello che dice la documentazione, il codice è sbagliato (non la documentazione). Questo richiede un aggiornamento frequente e facile della documentazione: una documentazione scritta male, ma corretta e completa, è infinitamente migliore di una documentazione ben scritta, ma obsoleta. Investire nella documentazione è un lavoro promuovibile e credo nel suo impatto.

6. Presenta, non solo mostra, i risultati

Le presentazioni sono un’opportunità per fare un passo indietro dal tuo lavoro e riflettere su cosa significa nel grande schema delle cose. Questo è vero per una presentazione finale dei risultati, ma forse ancora di più per le presentazioni dei risultati intermedi.

Ogni volta che presenti i risultati, pensa alle aspettative del tuo pubblico. Per ogni punto che fai (per ogni diapositiva; per ogni sezione in un testo), dovresti rispondere implicitamente a “quindi cosa?” per il pubblico. Diverse persone avranno diverse aspettative qui: un dirigente senior potrebbe essere più interessato a una narrazione diretta che cattura l’essenza delle tue scoperte e può essere facilmente condivisa con altri dirigenti senior. Il tuo responsabile potrebbe essere più interessato a capire come verrà risolto un determinato problema e quando. Un collega potrebbe essere più interessato a ciò che può imparare dal tuo approccio per il proprio lavoro. Un portatore di interesse o un cliente vorranno sapere quali nuove decisioni o azioni il tuo lavoro permette loro di prendere.

Trovo che molti scienziati siano tentati di seguire il loro processo di scoperta nella loro presentazione, partendo dal primo esperimento. Sconsiglio vivamente questo, perché spesso porta a perdere l’attenzione delle persone prima ancora di arrivare alla parte interessante: invece, inizia con la domanda di business originale che stai cercando di rispondere e con la tua migliore risposta alla domanda originale. Descrivi quindi il tuo approccio generale e spiega perché pensi che la tua risposta sia la migliore che puoi dare. Prevedi quali domande solleva la tua presentazione e prepara delle risposte per esse. E soprattutto, rispondi alla domanda “quindi cosa?” per ogni punto che fai.

Gli esperimenti interessanti che alla fine non hanno contribuito alla tua risposta dovrebbero essere inseriti in un allegato: potrebbero essere utili per una discussione approfondita, ma non sono necessari per la presentazione principale.

Corollario: la preparazione dei materiali per le presentazioni spesso sembra un lavoro impegnativo. Ho scoperto che, al contrario, la produzione frequente di risultati intermedi presentabili aiuta a mantenere la concentrazione e la chiarezza mentale, perché ti costringi a fare alcuni passi indietro. La produzione di grafici e narrazioni chiari per la presentazione è estremamente utile per rimanere concentrati sull’obiettivo finale e giungere a conclusioni chiare; ma l’ottimizzazione del layout delle diapositive non lo è. Pertanto, per i risultati intermedi, la forma segue la funzione. È importante avere messaggi chiari e di facile comprensione comunicati in modo chiaro. Non è importante che il design sia perfetto. Ad esempio, è perfettamente accettabile disegnare a mano una figura su carta e presentarne una foto.

Visualizzazione chiara

Tutti i grafici dovrebbero essere autoesplicativi e avere un messaggio chiaro. Consiglio vivamente di seguire alcune cose semplici anche nei grafici che crei solo per te stesso.

  1. Etichetta gli assi con descrizioni autoesplicative: usa parole, non solo lettere.
  2. Usa titoli di grafico chiari che spieghino cosa viene mostrato e il messaggio principale (di nuovo, “quindi cosa?”).
  3. Riduci i dati che mostri al necessario: ad esempio, i dati possono contenere una categoria “Dummy”, che chiaramente non è intesa a essere utile. Non lasciare che questo intaschi lo spazio visivo nei tuoi grafici.
  4. Quando mostri molte serie di dati differenziate solo dal colore, assicurati che la legenda del colore sia chiaramente differenziata (punti bonus per la compatibilità con i daltonici).
  5. La visualizzazione aiuta a comprendere i pattern nei dati. Se un grafico mostra semplicemente una nuvola caotica di punti, probabilmente può essere rimosso (a meno che tu non voglia dimostrare quel particolare punto).
  6. Le scale logaritmiche possono spesso aiutare a pulire i grafici dei dati (positivi) di conteggio.

Risultati numerici chiari

Ogni volta che presenti risultati numerici (ad esempio, in tabelle):

  1. Ottimizza e presenta una metrica di successo appropriata. Molti scienziati applicati dedicano troppo poco tempo a questo: conosci la differenza di quando utilizzare RMSE/MAPE/MAE, scale logaritmiche, F1 rispetto a ROC rispetto all’Area sotto la curva Precisione-Richiamo.
  2. Quasi tutti i problemi del mondo reale riguardano metriche di successo ponderate, tuttavia la maggior parte dei corsi di apprendimento automatico ne tratta a malapena l’argomento: ad esempio, una metrica di successo per la previsione delle vendite potrebbe dover essere ponderata in base ai prezzi, al valore dell’inventario o alle dimensioni del pacchetto, a seconda del caso d’uso.
  3. Se il successo significa stimare i controfattuali (“cosa succederebbe se” analisi), rendilo esplicito e trova un ragionamento chiaro su come la tua metrica di successo cattura tali controfattuali. Gli esperimenti (naturali) sono una scelta popolare.
  4. Fornisci benchmark ragionevoli per qualsiasi numero che presenti. Spesso, identificare il benchmark “giusto” richiede un pensiero approfondito, ma ne vale sempre la pena. Hai addestrato un modello di apprendimento automatico sofisticato? Di quanto è migliore rispetto alla regressione lineare? Hai creato una previsione per la prossima settimana? Di quanto è migliore rispetto all’ipotesi che la prossima settimana sia uguale a questa settimana? Stai presentando i risultati di un test A/B? Di quanto è l’aumento rispetto al nostro fatturato mensile, o rispetto all’ultimo miglioramento?

Grazie per aver letto fino a qui! Mi piacerebbe sentire il tuo feedback: cosa ti ha colpito? In cosa differisce la tua esperienza? E cos’altro aiuta a risolvere problemi reali di valore dall’inizio alla fine?

Foto di NASA su Unsplash