Kaggle: ne vale la pena? E cosa si impara davvero?
La mia esperienza diretta, da appassionato, competitor, ma non "addict"
Original in Italian; automatic translation into English available here.
Intro
Non si può essere davvero appassionati di dati, machine learning, AI e affini senza aver almeno una vaga idea di cosa sia Kaggle.
Sto parlando della piattaforma lanciata nel 2010 da Anthony Goldbloom, Ben Hamner e Jeremy Howard (lo stesso di fast.ai), acquistata da Google nel 2017 e che nel corso di questi 14 anni ha dato un contributo fondamentale allo sviluppo della data science e dell’AI.
Se all’estero è una piattaforma largamente riconosciuta, in Italia abbiamo un problema: sono pochi a conoscerla e ad essere andati oltre la superficie… e ancora meno quelli che ci hanno dedicato un ammontare di ore cospicuo!
Personalmente mi sono imbattuto in Kaggle - non ricordo neanche come - e mi sono registrato alla fine del 2015, con l’obiettivo di usare una competizione Kaggle come project work di un master che stavo facendo ai tempi. Da lì ci ho dedicato svariate centinaia di ore1, ottenendo bei risultati che mi hanno dato l’opportunità di parlarne in diversi eventi europei.
Ciclicamente ricevo domande sull’argomento e oggi mi sento di rispondere ad alcune tra le più ricorrenti:
È utile per chi studia e chi lavora?
Cosa si impara davvero su Kaggle?
Alla fine… vale la pena di dedicare un (bel) po’ di tempo su questa piattaforma?
Vi darò il punto di vista da persona che ama la piattaforma, ma che non ha sviluppato la kaggle-addiction di alcuni (passatemi il termine) e che ha preso un percorso professionale tecnico-manageriale, non squisitamente da nerd del machine learning.
Davvero Kaggle è così importante?
Qualcuno che ha sentito nominare Kaggle potrebbe pensare che ho un po’ esagerato a dire che ha dato un “contributo fondamentale” nel mondo dell’AI.
Però forse non tutti sanno che sono oltre 16 milioni gli utenti registrati su questa piattaforma e che ne fanno un uso variegato, per molte finalità diverse, ma tutte relative al mondo di dati e algoritmi.
E quando si parla dei premi erogati da Kaggle ai data scientist in tutto il mondo, non parliamo di cifre simboliche: sono quasi 20.000.000$ (sì, venti milioni di dollari), montepremi totale delle oltre 300 competizioni con premi in denaro.
Non bisogna essere esperti di teoria dei giochi per capire che, quando ci sono in palio soldi veri e in quantità, si crea un forte incentivo per tirare fuori il meglio dagli algoritmi e dalla tecnologia corrente. Infatti tante librerie oggi di successo e usate da milioni di persone sono state lanciate proprio su Kaggle, ad esempio:
Xgboost (di Tianqi Chen), che personalmente ho iniziato ad usare nel 2015
Keras (di Francois Chollet), che ha rappresentato un passaggio fondamentale nell’evoluzione del Deep Learning
Tante altre che hanno preso piede a fronte di risultati di rilievo su Kaggle.
Un “bigino” su cos’è Kaggle
Il modo migliore per capire cos’è Kaggle è il menù a sinistra, subito visibile nell’homepage.
In principio erano le competizioni, tuttora il cuore pulsante di Kaggle.
Se ne potrebbe parlare per ore, ma l’idea di base è semplice. Tutto parte da un’azienda che, a partire dal proprio patrimonio informativo interno, pubblica un primo dataset su cui costruire un modello predittivo (tipicamente di machine learning supervisionato2), ed un secondo dataset su cui i partecipanti devono applicare quel modello e fornire una previsione.
Su questo secondo dataset, l’azienda in realtà conosce già il risultato corretto! Secondo una metrica di valutazione definita a priori, può quindi fare una classifica oggettiva di tutti i modelli sviluppati e assegnare i premi pattuiti ai migliori partecipanti (tipicamente tra 10K€ e 100K€, ma ci sono stati casi oltre 1M€). La competizione dura solitamente 90 giorni e diversi accorgimenti intelligenti3 (che non hanno subito modifiche di rilievo lungo 14 anni!) permettono di favorire soluzioni che abbiano ottime capacità di generalizzazione.
Mi focalizzerò proprio sulle competizioni, ma ci sono in realtà altre 5 componenti:
Un ambiente per condividere dataset pubblici (favoloso e sempre più ricco di dati interessanti)
Una nuovissima sezione per condividere modelli preallenati (utili specie per Deep Learning e Generative AI)
Un’infinità di codice rilasciato dai partecipanti, che può girare su macchine powered by Google in maniera gratuita (con anche GPU, seppur con qualche limite di tempo)
Un forum di discussione, sulle competizioni e non solo
Una piattaforma di learning, abbastanza basic ma utile, concreta e anche qui gratuita.
Quanto è utile Kaggle? Cosa si impara davvero… e cosa no
Personalmente, penso che partecipare ad una competizione Kaggle sia utilissimo. E non ho nulla contro le competizioni playground (quelle su cui ci si può esercitare senza realmente competere), ma penso che l’ideale sia entrare in una vera competizione con premi in denaro.
Non fraintendetemi: il motivo non è (solo) il denaro! Anche perché le probabilità di vincere qualcosa sono risicate: si tratta di essere tipicamente nella Top 3 su qualche migliaio di partecipanti, tra cui alcuni veri e propri professionisti.
Sono tanti gli aspetti interessanti che derivano dal partecipare ad una competizione Kaggle: ne elencherò alcuni, con un voto da 1 a 10 legato a quanto Kaggle sia utile per quel determinato tema.
Crearsi un portfolio di veri progetti di AI/ML: 8
Ogni competizione Kaggle ha un’azienda disposta a pagare premi reali (a volte anche importanti a livello economico) e soprattutto a condividere, seppur con un certo livello di anonimizzazione, i propri dati interni.
Questo dovrebbe bastare a spiegare che le competizioni Kaggle sono su argomenti reali e ben circostanziati! E di fatto, si spazia in ogni direzione: sia a livello dati (tabulari, immagini, video, audio, testo), sia a livello di dominio (mondo digitale, industrie manifatturiere, banche e assicurazioni, GDO, enti di ricerca e tanto altro).
Insomma, facendo un po’ di competizioni Kaggle si vedono problemi reali, in cui l’uso intelligente di dati e algoritmi può essere risolutivo!
Conoscere lo stato dell’arte degli algoritmi di AI/ML che davvero funzionano: 9
Qualche mese fa ho scritto di SMOTE, algoritmo con 26.000 citazioni e che non ha mai funzionato su Kaggle. Ecco, Kaggle serve regolarmente a far salire gli hype giustificati e a smontare quelli ingiustificati.
Se oggi prendo una competizione con 100.000$ in palio, state sicuri che nel mondo ci sarà qualcuno che utilizzerà i migliori algoritmi esistenti4, non curandosi delle mode che non funzionano!
Imparare a scrivere codice pulito e ben organizzato: 5
Se c’è una cosa che non si impara su Kaggle, è il clean coding. Dirò di più: si possono ottenere ottimi risultati anche scrivendo del codice terribile, dal punto di vista del software engineering.
Qualcosa è cambiato con le code competitions… ma di base, le abilità di un kaggler a livello di coding sono scorrelate dalle sue performance.
Capire i concetti di overfitting, di validazione e generalizzazione in scenari complessi: 10 e lode
Nel mondo reale, capire cosa vuol dire overfitting e cosa vuol dire creare un modello che generalizzi bene (su dati nuovi e dati futuri) è fondamentale: è ciò che distingue un modello che funziona bene in teoria da uno che funziona bene in pratica.
Posso dire senza esitazione che Kaggle è il posto in cui si impara tutto ciò. Anche perché ottenere un bel risultato su Kaggle dipende precisamente dall’aver capito bene tutte le sfaccettature del concetto di generalizzazione.
Non conosco corsi dedicati all’argomento e personalmente trovo incredibile come data scientist anche senior abbiano conoscenze veramente minimali su questo fronte!
Imparare il feature engineering, con accorgimenti e trucchetti vari che non trovate sui manuali universitari e sui libroni di statistica: 10
Avete letto il mio articolo su Adversarial Validation e quello su una serie di accorgimenti furbi per scrivere algoritmi che funzionano davvero?
Se sì, avete capito cosa intendo!
Comprendere i dati e il problema a livello di business, oltre il solo machine learning: 7
Già, un bel 7! Lo posso dire per esperienza: cercare di capire qualcosa in più del problema, al di là degli algoritmi, è stato per me fondamentale in tante competizioni in cui sono arrivato nel primo 1% dei partecipanti.
Certo, questo è più facile nel caso in cui le feature siano esplicite e dove, per motivi legati alla competizione in sé, l’anonimizzazione e l’offuscamento delle variabili non è stato estremo.
Ma in tante competizioni fare dei ragionamenti sul problema sottostante non solo è possibile: è obbligatorio per ottenere risultati importanti!
Entrare nel merito di architetture, MLOps e tutto ciò che trasforma un algoritmo standalone in qualcosa production-ready: 2
Se già il clean coding non è una priorità per i kagglers, figuriamoci tutto ciò che trasforma un algoritmo ad hoc in un prodotto fatto e finito, che deve essere gestito a tutti gli effetti come un software. Siamo completamente out of scope.
In generale, su Kaggle si sviluppano competenze analitiche e modellistiche, a scapito degli aspetti più ingegneristici.
Imparare il tuning degli algoritmi: 8
Chiudo con il mondo del tuning degli algoritmi: diffidate da chi ritiene che Kaggle sia tutto HPO (hyper parameter optimization) e potenza di calcolo!
Nella pratica, chi vince le competizioni lo fa con soluzioni originali e creative, a cui ovviamente si aggiunge una debita ottimizzazione degli algoritmi. Ma ripeto: conta di più l’approccio originale e creativo, rispetto all’HPO! Basta andarsi a leggere qualche write-up, il riassunto che i vincitori scrivono tipicamente sui forum a competizione conclusa.
Le critiche più comuni, condivisibili o meno
Una delle cose che trovo più divertenti, nonché la dimostrazione del successo di Kaggle, è la presenza di fazioni opposte, con scontri tra strenui sostenitori e accaniti haters!
Francamente, i primi non abbondano: io stesso, pur avendo speso parecchio tempo sulla piattaforma ed essendo grato per l’impatto che ha avuto sul mio percorso personale e professionale, non faccio fatica a vedere anche alcuni limiti.
Invece leggo spesso delle critiche un po’ miopi per chi conosce veramente la piattaforma, lanciate con veemenza più che altro da chi ha avuto meno successo di quanto ipotizzava di avere… come nel classico “la volpe e l’uva”!
La più comune è che Kaggle sarebbe molto lontano dal mondo reale della data science, visto che vengono forniti dataset puliti e pronti all’uso. Ora, sicuramente Kaggle è un contesto particolare, ma posso dire senza esitazione che la qualità dei dati su Kaggle è variabile: da ottima a… terribile. Addirittura alcune competizioni sono state resettate, dopo alcuni giorni dall’avvio, a causa di problemi nei dati riscontrati dagli organizzatori. Non mancano dati sporchi, mancanti, anomalie, leak… insomma, come nel mondo reale.
Anche molte competizioni sono davvero simili a quanto si può vedere nel day-by-day di un data scientist, ma condivido che in Kaggle ci sono una serie di certezze che spesso mancano nelle aziende: una chiara e oggettiva metrica di successo, una deadline inamovibile nota a priori ed un perimetro di dati utilizzabili prefissato.
L’altra critica comune è che la vittoria è spesso questione di frazioni infinitesime di punto percentuale su una determinata metrica. Molto spesso è effettivamente così (anche se non sempre)… ma francamente, questo vale per competizioni di qualsiasi natura: anche chi vince i 100 metri piani lo fa per qualche centesimo di secondo. Ma è sicuramente molto più veloce della maggior parte di chi proprio non corre mai!
Ne vale la pena?
“Tutto molto bello”, ma il problema delle competizioni Kaggle è che richiedono tempo! Da qualche ora per capire la competizione e i dati, a qualche decina per ottenere risultati decorosi, a non meno di 100 (mia personalissima valutazione) per poter ambire ad una posizione di rilievo (diciamo top 1%). Cento ore da spendere sicuramente, ma zero garanzie di successo, sia chiaro!
Quindi ne vale la pena? Secondo me entrano in gioco tanti fattori.
Il primo è sicuramente l’apprendimento, e ne ho parlato in lungo e in largo finora. Che siate appassionati di dati, studenti o lavoratori, a mio avviso già questo giustifica almeno di andare al vedo, di spendere qualche ora su una competizione vera.
Poi c’è la collaborazione. Kaggle dimostra che si possono ottenere risultati eccellenti sia da soli che in team. Personalmente ho spesso preferito lavorare in autonomia (col vantaggio di tenere il mio ritmo ed essere “obbligato” ad occuparmi di qualsiasi aspetto della competizione), ma in due casi ho lavorato in team: esperienza super, con compagni di squadra da cui ho potuto imparare molto!
Un altro aspetto da considerare è legato al valore sul mercato del lavoro. In un mondo di autoproclamati esperti come quello dell’AI attuale, aver ottenuto risultati di rilievo su Kaggle è qualcosa di oggettivo e molto concreto. Su questo, aiuta il fatto che i partecipanti di Kaggle siano in una classifica5 e vengano divisi in 5 fasce, a seconda dei risultati ottenuti - e la prima fascia conta solo 300 data scientist! Sia ben chiaro: non è obbligatorio essere attivi su Kaggle, non è necessario e nemmeno sufficiente per dimostrare di conoscere a fondo una materia così vasta come la data science e l’AI… ma stiamo parlando di una piattaforma competitiva in cui emergere non è facile.
Conclusioni
Condensare in un articolo tutto quello che penso di Kaggle è impossibile!
Per me ha avuto un ruolo importante: a parte i risultati nelle singole competizioni, mi ha dato l’occasione di fare un po’ di public speaking fuori dall’Italia e ha avuto un peso nel mio percorso professionale. Penso sia stato utile in fase di selezione e colloquio (spiegare una competizione Kaggle è qualcosa di originale e coinvolgente… se chi ascolta sa apprezzare!) e sicuramente ho sfruttato sul lavoro l’esperienza su Kaggle, in diverse occasioni.
Ma soprattutto, Kaggle mi ha dato una bella comprensione di tante tematiche del Machine Learning e dell’AI che vedevo solo come concetti astratti, facendomi migliorare sotto tanti punti di vista.
Ultimo, ma non ultimo, c’è l’aspetto community: ho avuto modo di conoscere diversi appassionati in Italia e stringere qualche amicizia, ma siamo ancora pochi! E siamo clamorosamente sottorappresentati nei top tiers, rispetto a quasi tutti i paesi europei, come ben visibile su questa mappa.
Se ti interessa il tema, ho due suggerimenti:
Entrare nel meetup Kaggle Days Milano, specialmente se sei nel capoluogo lombardo, ma anche se vuoi semplicemente seguire gli streaming degli eventi
Contattarmi se vuoi presentare qualcosa di Kaggle-related al prossimo Py4AI, che si terrà a Pavia il 16 di marzo (grande evento e ottima occasione)… o anche solo per capirne qualcosa di più
Spero di averti incuriosito almeno un po'!
Che non sono neanche così tante rispetto a quante se ne potrebbero dedicare ;)
Ad esempio, un elenco anonimo di clienti con tante caratteristiche (features) ed una variabile da predire (target), ad esempio se quel cliente ha comprato un prodotto oppure no (target binario, in questo esempio).
A cominciare dalla divisione del test set in due, una parte dedicata alla public leaderboard e una alla private leaderboard (quest’ultima usata per erogare i premi).
Ovviamente se prendo una competizione di NLP di 3 anni fa e uso algoritmi di oggi, potrei stravincere facilmente
Dove i punti sono legati ai risultati ottenuti, ma decadono nel tempo: i risultati che ho ottenuto 6-7 anni fa valgono praticamente zero.