Cos’è Kaggle?

Kaggle è una piattaforma online per competizioni di modelli predittivi e analitici fondata nel 2010. Diverse aziende ed enti di ricerca condividono i loro dati, espongono un problema e data scientist di tutto il mondo competono tra loro per produrre il miglior modello per quel particolare problema.

kaggle

Ad oggi Kaggle conta più di 500.000 utenti, anche denominati Kaggler, provenienti da quasi 200 paesi e specializzati nei più disparati campi (computer science, biologia, medicina, etc.). Tra questi ci sono anche elementi di spicco di importanti aziende informatiche, come il team IBM di Watson e di DeepMind di Google.

Dal 2010 ad oggi sono state lanciate più di 200 competizioni, tra cui spiccano:

  • il riconoscimento dei movimenti per Kinect di Microsoft
  • la ricerca del bosone di Higgs del CERN
  • Heritage Health Prize

Per chi fosse interessato a cimentarsi con algoritmi e programmazione per conto proprio, Kaggle dispone anche di una libreria di dataset sulle più disparate tematiche: politica, sport, scienza, videogame.

Tipologie di competizione

Le competizioni possono essere di tre tipi:

  1. Prize: vengono messi in palio dei premi in denaro per i primi 3 classificati.
  2. Job: le aziende che indicono una competizione mettono in palio un colloquio per specifiche posizioni di lavoro.
  3. Knowledge: sono delle particolari competizioni, adatte soprattutto per i nuovi Kaggler e per chi desidera fare pratica con algoritmi e dati.

Il funzionamento di una competizione Kaggle è abbastanza semplice: con l’avvio della gara vengono resi disponibili i dataset per implementare e testare i propri modelli e contestualmente viene fissata una deadline.
Per tutto il periodo della competizione i partecipanti (singoli o uniti in team) possono sottomettere sul server Kaggle i propri risultati, i quali vengono comparati con l’output di riferimento noto solo a chi ha indetto la gara e valutati con un punteggio.
Al termine della competizione vengono proclamati vincitori i Kaggler posizionatisi in testa alla classifica finale.

Per lo sviluppo del proprio modello si può utilizzare qualsiasi linguaggio di programmazione: R, SaS, SPSS, Julia, Java, Python.

Un esempio di competizione

A titolo di esempio vorrei raccontarvi brevemente di una competizione alla quale ho partecipato insieme a mio fratello.
La competizione in questione è la Santander Customer Satisfaction} (60.000 euro al primo classificato), svoltasi dal 02.03.2016 al 02.05.2016 e a cui hanno partecipato oltre 5.000 Kaggler.

competizione

Il tema della competizione era identificare i Clienti soddisfatti/insoddisfatti durante la loro esperienza con Santander.
I dati messi a disposizione dei partecipanti erano costituiti da:

  1. sample_submission.csv, un esempio di come doveva essere strutturato l’output per la valutazione
  2. train.csv, un insieme di dati con cui implementare il proprio modello
  3. test.csv, un insieme di dati su cui testare il proprio modello

dati

i dati forniti erano composti da campi anonimi, tutti di tipologia numerica. La colonna TARGET era la variabile da predire e poteva assumere il valore 1 per i Clienti insoddisfatti e il valore 0 per i Clienti soddisfatti.
L’obiettivo era predire la probabilità che ciascun Cliente nel test set fosse un Cliente insoddisfatto.

Il modello utilizzato.

Non avendo informazioni sui dati a disposizione (a causa dei campi resi anonimi), sono state condotte su questi alcune modifiche preliminari come la rimozione delle feature costanti e delle feature identiche che poco o nulla aggiungono alla definizione del modello o addirittura concorrono alla distorsione.

Una volta normalizzati i dati a disposizione, per la definizione del modello si è utilizzata l’implementazione dell’algoritmo XGBoost disponibile nel package xgboost di R.

XGBoost sta per Extreme Gradient Boosting ed è simile ma più efficiente del Gradient Boosting, un’algoritmo per effettuare regressione e classificazione. Ciò che lo rende veloce è la sua capacità di operare in parallelo su una singola macchina, rendendo xgboost almeno 10 volte più veloce di implementazioni Gradient Boosting esistenti. Supporta vari funzioni obiettivo, tra cui la regressione e la classificazione.

Il package R xgboost ha anche funzioni aggiuntive per fare la convalida incrociata e la ricerca di variabili importanti. Ci sono molti parametri che deve essere controllati per ottimizzare il modello (booster tree o booster lineare).

Per chi fosse interessato ad un’introduzione al package R XGBoost ecco un utile link.

Risultati.

Al termine della competizione il nostro modello ha ottenuto la 400-esima posizione in classifica su 5123, rientrando così nel Top 8% della classifica.


risultati1 risultati2

CC BY-NC-SA 4.0
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.