In che modo possiamo gestire gli small data in modo efficiente? Possiamo ottenere dei buoni rislutati senza i big data? Mmmm…
Gli ingredienti per ogni ricetta di machine learning che si rispetti sono tre:
- algoritmi
- potenza di calcolo
datitanti dati
Ora, in una società come la nostra costantemente connessa e frenetica, produrre dati non è un problema.
3.7 milioni di ricerche Google, 38 miloni di messaggi WhatsApp, 174,000 scrolling su Instagram… e sono passati solo 60 secondi.
La sfida più ardua semmai è accedervi.
Ahimé noi A2DS (Ambsiziosi Aspiranti Data Scientist) non abbiamo modo di ottenere i mistici Big Data.
Possiamo quindi generare dei modelli di machine learning efficaci, usando piccoli Dataset,?
Vieni con me, e scoprilo!
Small Data: tips and tricks
Parliamoci chiaro.
Le aziende, specie quelle in Italia, producono pochi dati, il più delle volte di scarsa qualità.
Pensare di fornire loro un modello di machine learning stile startup americana è fuori discussione. Ecco quindi il primo punto:
#1: sii consapevole che il tuo modello non generalizzerà bene
Stai costruendo un modello pensato per operare su una specifica realtà, allenandolo su dati limitati e con poche eccezioni.
Pensare che possa essere preso e usato in altri contesti è pura utopia.
Questo è un punto su cui devi essere crystal clear col tuo manager o cliente.
In questo modo le aspetattive saranno allineate con quelle che sono le reali prestazioni del modello, e ci saranno meno frustrazioni e arrabbiature.
#2: una buona infrastruttura dati fa la differenza
Il machine learning brilla negli molti CEO.
Io e te sappiamo però che senza i giusti dati non c’è algoritmo che tenga.
Così, spesso potrebbe essere necessario modificare un’infrastuttura dati per generarne di nuovi.
A questo punto un occhio di riguardo ai sistemi di labelling automatico potrebeb farti risparmiare parecchio tempo nelle succesive fasi di sviluppo
#3: data augmentation, quando i dati non bastano… creane di nuovi!
Aumentare le dimensioni del dataset è possibile, purché ciò avvenga con cognizione di causa.
Ovviamente non vogliamo risolvere un problema di small data aggiungendo semplicemente una decina di dati casuali… Anche se…
Esistono tools come l’Albumentation o il Mixup che rielaborano le immagini modificandone certi valori come l’inclinazione, il ribaltamento lungo un asse e via dicendo, per ottenere nuove utili informazioni.
Se la tua applicazione è diversa dalla computer vision, poresti provare a drogare i dati con del rumore di fondo gaussiano.
#4: synthetic data, ossia genera nuovi dati con le simulazioni
Sei a corto di opzioni? Considera l’eventualità di generare tu stesso dei dati attraverso delle simulazioni, coprendo dei casi limite assenti nel tuo dataset.
Questa soluzione viene adotatta dai modelli di reinforcemente learning che simulano ambienti 3D in cui riprodurre gesti e comportamenti del mondo reale.
#5: lucky splits, una questione di train and test split
Una common practice è dividere il dataset randomicamente in due subset di training e testing.
Quando hai pochi dati, potrebbe essere rischioso.
Il tuo modello potrebbe potenzialmente ottenere una performance alta, generalizzando apprantemente bene, nel dataset di testing.
Quello che in realtà succede è che la mancanza di dati esclude situazioni limite o difficili, falsando la valutazione del modello.
#6: transfer learning
Se eseguito bene, il transfer learning produce ottimi risultati senza consumare troppo risorse.
E’ particolarmente utile nelle reti neruali multi layer, quindi siamo prevalentemente nel campo della computer vision.
In altre parole è una tecnica che sfrutta modelli già allenati, magari da aziende come Google e Facebook, usando i layer base e implementando solamente quelli più specializzati.
#7: ensemble of weak learners, un’ultima spiaggia.
Alcune volte dobbiamo accettare la dura verità.
I dati che abbiamo non sono sufficienti a realizzare qualcosa di decente.
Col cavolo!
In queste ardue situazioni, possiamo usare un’ultima risorsa.
Esistono algoritmi come Support Vector Machine, che rappresentanto una buona scelta da fare qualora la dimensione del dataset fosse limitata mentre quella dei datapoint alta.
Lontano dalle soluzioni advanced e con pochi iperparametri da settare, questi algoritmi sono una sorta di coltellino svizzero: versatili e affidabili, ma limitati.
Per oggi il post, termina qui. Per approfondire, ecco il post originale.
Io e te ci vediamo alla prossima!
Un fresco abbraccio, Andrea
1 Comment
[…] visto una possibile soluzione in passato, ora però vogliamo trasmettere tutta la nostra fame […]