Una disciplina nuova

Machine Learning con Python

di

thumbnail

12

apr

2017

Un linguaggio di programmazione avvicinabile e aperto, ideale come collante per applicare algoritmi intelligenti alla ricerca di risposte.

La nuova frontiera è quella delle macchine che imparano. La buona notizia è che le tecnologie abilitanti in questo senso sono open e a disposizione. Ci sono anche ottimi libri come Machine Learning con Python.

L’autore del libro gode di grande autorità nel campo dell’apprendimento cibernetico ed è oltretutto grande esperto di Python. La nostra intervista era solo questione di tempo.

Apogeonline: Nel libro scrivi che ci sono tre tipi di machine learning. Ci sono anche tre tipi di formazione? Oppure, quando uno si specializza in machine learning, può lavorare su qualsiasi delle tre branche?

Sebastian Raschka: Non esiste una definizione formale, ma ritengo che possiamo ragionevolmente raggruppare il machine learning in tre diverse specialità: supervised, unsupervised e reinforcement learning. Per sfruttare al meglio le tecniche di machine learning nei propri progetti è preferibile avere almeno una qualche familiarità con tutte e tre le branche. Sono conoscenze che che aiutano a selezionare la classe di approcci e algoritmi che funziona meglio per lo scopo.

Parliamo comunque di un’area di sapere vasta e mi viene da dire che per un ricercatore sia in qualche modo necessario specializzarsi in un segmento delimitato di problematiche, se vuole tenersi aggiornato e contribuire al progresso del suo settore. Gli insegnanti stanno lavorando bene nel presentare la conoscenza agli studenti in modo accessibile. Resta vero che sapere tutto è probabilmente impossibile, così direi che alcuni docenti funzionano meglio sulla base della disciplina e altri sul settore specifico cui sono approdati per via del loro lavoro di ricerca. È una buona cosa perché un buon corso di machine learning non può tenere insieme le basi e le nozioni avanzate e differenti sezioni del campo richiedono insegnamenti, e insegnanti, diversi.

Michelangelo diceva che la scultura è già dentro il blocco di marmo e c’è solo da levare l’eccesso di materia. La conoscenza è già dentro i dati nello stesso modo? È sufficiente dire al software di levare quello che la nasconde o sta a noi programmare con l’acutezza necessaria per farla emergere da una massa informe?

Michelangelo ha detto una gran cosa! Sfortunatamente non credo che possiamo “semplicemente” mettere il software a esaminare i problemi, in quanto il software è progettato per occuparsi di un compito specifico. Prima di svolgere un compito, formuliamo una domanda; per trovare la risposta dobbiamo definire una metrica di “successo” e poi selezioniamo il software o gli strumenti che possono aiutarci con il compito. Forse un giorno avremo software – probabilmente governato da una intelligenza artificiale – capace di raccogliere, esplorare creativamente e costruire modelli per trovare la risposta alla nostra domanda, ma siamo ancora lontani dal vederlo.

Machine Learning con Python

Python è la porta di ingresso al mondo del machine learning.

 

In termini molto generali, la conoscenza erompe quasi inaspettata dal machine learning oppure sappiamo di puntare a quel genere di informazione e lavoriamo verso un obiettivo specifico? Esiste la serendipità nel machine learning?

Un motto dell’informatica si applica anche al machine learning: garbage in, garbage out. Se i dati non contengono informazione rilevante, neanche il migliore algoritmo di apprendimento ricaverà un modello utile. Sì, dobbiamo assicurarci che gli algoritmi abbiano accesso ai “giusti” dati. Detto questo, ritengo che ci sia anche un pizzico di serendipità. Nelle applicazioni per il mondo reale, non conosciamo la relazione tra i nostri dati e l’esito che desideriamo predire, oppure la struttura nascosta di un dataset. È il primo motivo per cui usiamo il machine learning. Selezioniamo inoltre gli algoritmi di apprendimento sulla base del nostro giudizio, che però può non vedere subito la giusta soluzione a un problema; è il motivo per cui il machine learning richiede molti passaggi di iterazione, rifinitura, ingegnerizzazione delle funzioni e altre forme di sperimentazione.

Il libro ha un approccio molto semplice ma richiede, inevitabilmente, almeno le conoscenze elementari di Python. Diciamo che parto da zero e desidero ottenere un livello base di conoscenza dell’argomento. Oltre a Python, qual è la prima cosa che mi serve?

Python è un linguaggio molto flessibile e versatile, molto facile da apprendere: è una delle molte ragioni della sua popolarità nella comunità scientifica e presso le aziende. Nelle applicazioni scientifiche possiamo comunque pensare a Python più come a un contenitore o a un collante, qualcosa che ci facilita l’interazione con algoritmi molto efficienti scritti in altri linguaggi come C, C++ e Fortran. Questi linguaggi di programmazione di basso livello, più vicini alla macchina che al programmatore, implementano gli algoritmi in modo eccellente; nelle applicazioni scientifiche, dove si sperimenta continuamente, la loro curva di apprendimento proibitiva pregiudica la produttività.

Per tornare alla domanda, credo che una conoscenza di base di Python sia sufficiente per il contesto del machine learning. Non è necessario essere esperti di Python o ingegneri del software di professione, per lavorare sul machine learning con Python, perché l’attenzione maggiore viene posta sulle librerie e le interfacce di programmazione (API) specifiche per il compito. Naturalmente una maggiore conoscenza di Python è sempre di aiuto, ma per prendere confidenza con il linguaggio è questione di pochi giorni e poi dopo dipende da quanto tempo e attenzione si dedicano.

Python si può programmare su qualsiasi piattaforma, perfino uno smartphone. È realistico pensare di sfruttare un apparecchio mobile nel contesto del machine learning? Magari per correggere un errore al volo, dare il tocco finale a un programma, interrogare un dataset?

È senz’altro possibile, anche se devo ammettere di non avere mai provato Python su un apparecchio da tasca. Riesco a immaginare situazioni in cui potrebbe tornarmi utile, ma digitare e rivedere su uno schermo piccolo con una tastiera minima mi renderebbe incredibilmente sottoproduttivo. Domani potrebbe cambiare, ma oggi preferisco rimandare al momento in cui ho per le mani un buon computer desktop o portatile.

Ci sono regole, abitudini, buone pratiche per costruire i dataset? È più utile passare del tempo a ripulire il dataset prima di lavorarci oppure a elaborare una postproduzione ingegnosa che si occupi di farlo al nostro posto?

I dataset sono talmente differenti che è difficile dare buone raccomandazioni generali. Ritengo che la lettura di come si è svolta l’acquisizione dei dati (se disponibile) e l’analisi esplorativa con l’aiuto di grafici e diagrammi siano utili; le pratico ogni volta che sia possibile. Personalmente eviterei il ricorso a strumenti intelligenti di elaborazione a meno di avere una grande familiarità con il loro funzionamento e le loro limitzioni, visto che ogni dataset vuole un trattamento ad hoc.

Hai mai usato il machine learning nella vita privata? Che tipo di obiettivi potremmo perseguire, almeno in linea di principio?

Certo! sono un grande appassionato di calcio e ho applicato il machine learning alla costruzione di modelli per predire gli esiti dell’equivalente inglese del Fantacalcio. È stato un progetto divertente che mi ha permesso di imparare molto sulla pre-elaborazione dei dati e sul web scraping. I miei modelli non erano perfetti ma, nella media, certamente più precisi delle mie previsioni sulla sola base dell’istinto.

Che cosa ti rende più orgoglioso, di questo libro?

Orgoglio forse non è il termine giusto, ma quello che mi dà una felicità particolare è la somma dei feedback che ho ricevuto finora. Molti lettori mi hanno scritto per dirmi come il libro li abbia aiutati a capire le fondamenta dal machine learning e a mettere a frutto questa conoscenza nella soluzione di problemi reali. Sono davvero contento di sapere che questo libro, questa risorsa sia diventata utile per un pubblico così ampio, che comprende tra le altre categorie studenti, docenti, data scientist e ingegneri del software.




Sebastian Raschka, (@rasbt), dottorando alla Michigan State University, sviluppa modelli computazionali applicati al campo della biologia. È stato valutato da Analytics Vidhya come lo scienziato più influente nell’ambito della data science su GitHub. Vanta un’esperienza pluriennale di programmazione in Python e ha tenuto diversi seminari sulle applicazioni pratiche della scienza dei dati e sull’apprendimento automatico. Nel tempo libero lavora a modelli computazionali per predire risultati sportivi.

In Rete: https://sebastianraschka.com

Letto 3.067 volte | Tag: , ,

Lascia il tuo commento