Blog.

No Big Data? Handling small data | Consigli


Autore
Andrea Provino
Data
Tempo di lettura
4 minuti
Categoria
machine-learning

handle_small_data_machine_learning_tips_guida_consigli_small_data_piccoli_dati_data_science

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
  • dati tanti 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

Taggeddeep learningmachine learning


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum