Dipendenze dati

I dati sono importanti per gli sviluppatori di machine learning quanto il codice è per i programmatori tradizionali. Questa lezione si concentra sul tipo di domande che dovresti porre ai tuoi dati.

Dipendenze dati

  • I dati di input (funzionalità) determinano il comportamento del sistema ML.
    • Scriviamo i test delle unità per le librerie software, ma per quanto riguarda i dati?
  • È necessaria attenzione nella scelta degli indicatori di input.
    • Hai ancora più interesse che per decidere quali librerie software affidarsi?
  • Affidabilità
    • Cosa succede quando l'indicatore non è disponibile? Lo sapevi?
  • Affidabilità
    • Cosa succede quando l'indicatore non è disponibile? Lo sapevi?
  • Controllo delle versioni
    • Il sistema che calcola questo segnale cambia? Quanto spesso? Cosa succederebbe?
  • Affidabilità
    • Cosa succede quando l'indicatore non è disponibile? Lo sapevi?
  • Controllo delle versioni
    • Il sistema che calcola questo segnale cambia? Quanto spesso? Cosa succederebbe?
  • Necessità
    • L'utilità dell'indicatore giustifica il costo dell'inclusione?
  • Correlazioni
    • I miei indicatori di input sono talmente legati da richiedere strategie aggiuntive da anticipare?
  • Correlazioni
    • I miei indicatori di input sono talmente legati da richiedere strategie aggiuntive da anticipare?
  • Feedback Loop
    • Quali dei miei indicatori di input potrebbero essere interessati dagli output del modello?

Riepilogo della lezione video

Il comportamento di un sistema di machine learning dipende dal comportamento e dalle qualità delle sue funzionalità di input. Man mano che cambiano i dati di input per queste funzionalità, cambia anche il tuo modello. A volte questa modifica è desiderata, ma a volte no.

Nello sviluppo di software tradizionale, ti concentri più sul codice che sui dati. Nello sviluppo del machine learning, sebbene la programmazione sia ancora parte del lavoro, devi concentrarti per includere i dati. Ad esempio, nei progetti di sviluppo software tradizionali è una best practice scrivere i test delle unità per convalidare il codice. Nei progetti ML, devi anche testare, verificare e monitorare continuamente i dati di input.

Ad esempio, devi monitorare continuamente il modello per rimuovere le funzionalità inutilizzate (o poco utilizzate). Immaginate una determinata funzionalità che ha contribuito in modo scarso o nullo al modello. Se i dati di input per questa funzionalità cambiano bruscamente, anche il comportamento del modello potrebbe cambiare in modo brusco.

Affidabilità

Alcune domande da fare sull'affidabilità dei dati di input:

  • L'indicatore sarà sempre disponibile o proviene da una fonte inaffidabile? Ad esempio:
    • Il segnale proviene da un server che si arresta in modo anomalo in caso di carico elevato?
    • Il segnale proviene da persone che vanno in vacanza ogni agosto?

Controllo delle versioni

Alcune domande da porre sul controllo delle versioni:

  • Il sistema di elaborazione di questi dati cambia? In questo caso:
    • Quanto spesso?
    • Come fai a sapere quando cambia il sistema?

A volte i dati provengono da un processo a monte. Se questo processo cambia improvvisamente, il modello può risentirne.

Valuta la possibilità di creare una tua copia dei dati ricevuti dal processo di upstream. Quindi, vai alla versione successiva dei dati a monte solo quando hai la certezza che sia sicuro farlo.

Necessità

La seguente domanda potrebbe ricordarti di regolare:

  • L'utilità della funzionalità giustifica il costo dell'inclusione?

È sempre allettante aggiungere altre funzionalità al modello. Ad esempio, supponi di trovare una nuova funzionalità la cui aggiunta rende il modello leggermente più preciso. Una maggiore precisione suona meglio di una precisione minore. Tuttavia, ora hai appena aumentato il tuo carico di lavoro. Questa funzionalità aggiuntiva potrebbe ridursi in modo imprevisto, quindi devi monitorarla. Rifletti attentamente prima di aggiungere funzionalità che portino a piccole vittorie a breve termine.

Correlazioni

Alcune funzionalità sono correlate (positivamente o negativamente) ad altre. Poniti la seguente domanda:

  • Alcune funzionalità sono talmente collegate che hai bisogno di strategie aggiuntive per stuzzicarle?

Feedback Loop

A volte un modello può influire sui propri dati di addestramento. Ad esempio, i risultati di alcuni modelli, a loro volta, aggiungono direttamente o indirettamente caratteristiche allo stesso modello.

A volte un modello può influire su un altro modello. Ad esempio, considera due modelli per prevedere i prezzi delle azioni:

  • Il modello A, che è un modello predittivo errato.
  • Modello B.

Siccome il modello A presenta dei bug, decide per errore di acquistare un titolo di borsa X. Questi acquisti aumentano il prezzo delle azioni X. Il modello B utilizza il prezzo delle azioni X come funzionalità di input, quindi il modello B può facilmente arrivare ad alcune false convinzioni sul valore delle azioni X. Di conseguenza, il modello B potrebbe acquistare o vendere azioni del titolo X in base al comportamento del bug del modello A. Il comportamento del modello B può, a sua volta, influenzare la modello A, causando potenzialmente una mania dei tulipani o una diapositiva nel titolo della Società X.