Connect (); 2018 problema speciale

Volume 33 numero 13

Machine Learning - accelerare le soluzioni di intelligenza artificiale con automatizzati di Machine Learning

Dal Krishna Anumalasetty; 2018 problema speciale

Machine learning (ML) è in corso usato in un'ampia gamma di applicazioni, da automobili autonomi e rilevamento delle frodi carta di credito per la manutenzione predittiva in produzione e versioni successive.

Ma si è verificato un problema. Creazione di soluzioni di Machine Learning è complessa e richiede al personale altamente qualificato con ricercatori in matematica o in altri campi quantitative. La richiesta per i data Scientist ha essere fornitura, inibitrici adozione di Machine Learning nelle aziende. Molte aziende hanno vasti archivi di dati, ma sono riusciti a impiegare analitica predittiva per migliorare i processi decisionali aziendali e raggiungere gli obiettivi prefissati.

La funzionalità di Machine Learning automatizzata in Azure Machine Learning è progettata per superare questi ostacoli e rendono più accessibile a ogni sviluppatore e ogni organizzazione per intelligenza artificiale. In questo articolo, spiegherò come automatizzati di Machine Learning può essere utilizzato per creare rapidamente una soluzione di previsione della domanda di energia.

Il ciclo di vita di Machine Learning

Esaminare il processo del ciclo di vita di data science, illustrato nella figura 1. Il ciclo di vita suddivide in quattro fasi: & i concetti fondamentali, modellazione, la distribuzione di business la comprensione, acquisizione dei dati. Ogni soluzione di Machine Learning deve iniziare con si sta lavorando per risolvere il problema di business, vale a dire, la fase di comprensione del Business. Successivamente, acquisire ed esplorare i dati, ovvero il passaggio di acquisizione dei dati e comprensione, ovvero per importare i dati non elaborati che potrebbero essere in varie origini dati in formati diversi. L'inserimento, l'esplorazione e deprovisioning duping sono alcune delle attività nell'acquisizione dei dati e conoscenza.

Processo del ciclo di vita di data Science
Ciclo di vita del Tdsp figura 1

La fase di modellazione prevede tre passaggi, a partire con il processo di progettazione di funzionalità. Qui è possibile trasformare i dati in nuove funzionalità e generare funzionalità completamente nuova. Le funzionalità sono predittori che influiscono sulla stima. Un modo semplice per comprendere le funzionalità deve eseguire l'esempio di stimare un prezzo di casa, che è influenzato dalle dimensioni e posizione di casa, il numero di camere da letto e ad altri fattori. Pertanto, se si genera un modello di Machine Learning per stimare un valore di casa, questi fattori sono le funzionalità.

Segue quindi il processo di training del modello (in fase di modellazione) in cui compilare modelli di Machine Learning tramite l'applicazione molti algoritmi diversi e gli iperparametri per il set di dati. Questo processo prevede la valutazione dei modelli diversi che per scegliere quella più adatta per l'applicazione corrente è stata creata. Da qui, di test e infine distribuire il modello in produzione, in cui viene usato per eseguire stime dai nuovi dati.

Una volta in fase di distribuzione, è necessario monitorare il modello per trasferito, ripetizione del training periodicamente quando trasferito raggiunge una determinata soglia o quando nuovi dati rendono chiaro che il modello non esegue alle aspettative.

A questo punto, vediamo come automatizzati di Machine Learning consente di compilare un modello di Machine Learning. Il primo passaggio consiste nell'installare il set di librerie Python di Azure Machine Learning. Sono incluse le librerie di Machine Learning automatiche e parte delle librerie di Azure Machine Learning e verrà usato negli script di Machine Learning.

Qualità di sviluppatore, se si ha familiarità con i linguaggi, ad esempio C# o Java, dovrebbe essere possibile ottenere rapidamente in Python in nessun momento. È possibile installare Azure Machine Learning SDK, che include le librerie di Machine Learning automatizzate nel computer in uso, tuttavia, per motivi di semplicità si userà Azure Notebooks, che è un servizio di Azure per ospitare i notebook di Jupyter. Notebook di Jupyter è un ambiente notebook interattivo diffuso tra i data Scientist per lo sviluppo di soluzioni di Machine Learning. Altre informazioni sull'uso di Jupyter notebook dalla colonna Artificially Intelligent di Frank La Vigne numero di febbraio 2018 di MSDN Magazine (msdn.com/magazine/mt829269).

Le librerie di Machine Learning automatiche sono liberi di utilizzare, preinstallati nel servizio Azure Notebooks, eliminando la necessità di un processo di installazione. Accedere al notebook di Azure con l'Account Microsoft. Se hai già una sottoscrizione di Azure, è possibile usare l'account di Azure Active Directory (Azure AD) (che potrebbe essere quello utilizzato per le credenziali aziendali se l'organizzazione è federata con Azure AD).

Usare l'ID sottoscrizione di Azure per configurare un'area di lavoro di Machine Learning che è possibile condividere e collaborare con i colleghi del team tramite il portale di Azure o tramite l'API, come illustrato di seguito:

ws = Workspace.create(name = "energy_ml_ws",
                      subscription_id = "<azure_subscription_id>",
                      resource_group = "energy_ml_rg",
                      location = "eastus",
                      create_resource_group = True,
                      exist_ok = True)

Previsione della domanda di energia

Con la creazione dell'area di lavoro completata, è possibile lavorare sul problema aziendale, ovvero una domanda di energia che funzionalità dati di serie temporali di esempio di previsione. Previsione serie temporale è l'attività di stimare valori futuri in una sequenza temporale di osservazioni. Si è verificato un problema comune e offre le applicazioni in molti settori. Ad esempio, le società di vendita al dettaglio necessario prevedere le vendite future dei prodotti in modo che è possibile organizzare le catene di approvvigionamento per soddisfare la domanda. Analogamente, le aziende di spedizione devono stimare la domanda dei propri servizi in modo da poterne pianificare i requisiti della forza lavoro e gli itinerari anticipatamente. In molti casi, l'impatto finanziario a causa di associato a previsioni inaccurate può essere significativo, eseguendo un'attività di business-critical di previsione.

Ciò è certamente vero per le utilità di energia, che devono mantenere un equilibrio tra l'energia consumata sulla griglia e quella fornita a esso. Acquistare una quantità eccessiva di alimentazione e l'operatore deve archiviare l'energia in eccesso, che è dispendiosa. Acquistare troppo poco e può provocare un blackout, lasciando i clienti al buio. Gli operatori della rete possano prendere decisioni a breve termine per gestire la fornitura di energia alla griglia e mantenere il carico bilanciato, ma una previsione accurata della domanda di energia è essenziale per gli operatori prendere queste decisioni in tutta sicurezza.

Acquisizione dei dati

Di seguito viene illustrato come è possibile usare Machine Learning per compilare una soluzione di previsione della domanda di energia. È disponibile un set di dati pubblico da New York Independent System Operator (NYISO), che opera la griglia di risparmio energia per lo stato di New York. Il set di dati ha su base oraria dei dati richiesta power per la città di New York in un periodo di cinque anni.

Il set di dati NYISO include una domanda di energia e timestamp in MWh a incrementi di un'ora dal 2012 al 2017. Per analizzare ed esplorare i dati, leggere prima di tutto i dati in archiviazione Blob di Azure in un dataframe di Pandas. Nei dataframe di pandas vengono utilizzati di frequente con la community di Machine Learning e offrono un modo semplice per modificare i dati. Ecco il codice per l'importazione:

import pandas as pd
demand = pd.read_csv(
  "https://antaignitedata.blob.core.windows.net/antaignitedata/nyc_demand.csv",
  parse_dates=['timeStamp'])

È possibile stampare le prime righe di dati richiamando il metodo head sul frame di dati, che visualizza le prime righe e produce una semplice tabella con i valori della domanda timestamp ed energia. Se tracciano il grafico della domanda di energia più di una settimana in luglio 2017, viene generato un grafico a linee che mostra i valori orari continuo mutamento nel corso di sette giorni. Per questo utilizzo matplotlib, una libreria che consente di tracciare con facilità grafici all'interno dei Notebook di Jupyter. Il codice è il seguente:

plt_df = demand.loc[(demand.timeStamp>'2016-07-01') & (demand.timeStamp<='2016-07-07')]
plt.plot(plt_df['timeStamp'], plt_df['demand'])
plt.title('New York City power demand over one week in July 2017')
plt.xticks(rotation=45)
plt.show()

Naturalmente, meteo ha un impatto diretto sul consumo di energia. In un giorno a caldo, uso di aria condizionata aumentare notevolmente la domanda di energia elettrica. Pertanto, un set di dati aggiuntivo contenente le condizioni meteo in città di New York ogni ora nello stesso periodo di tempo utilizzabile per migliorare una stima. Si è possibile accedere a dati meteo usando darksky.net. A questo punto, verrà letto il set di dati meteo in un frame di dati e aumentare il set di dati NYISO con i dati meteo dall'unione di due set di dati, utilizzando questo codice:

weather = pd.read_csv(
  "https://antaignitedata.blob.core.windows.net/antaignitedata/nyc_weather.csv",
  parse_dates=['timeStamp'])
df = pd.merge(demand, weather, on=['timeStamp'], how='outer')

Il set di dati unito risultante sarà simile alla tabella nel figura 2, in modo efficace l'aggiunta di informazioni meteorologiche, temperature e precipitazioni, ovvero al set di dati NYISO. Per visualizzare le prime righe di dati, richiamare il metodo head sul dataframe.

Set di dati di domanda energetica unito al set di dati meteo
Figura 2 Energy Demand Dataset unito al set di dati meteo

Modellazione

Si torna al passaggio di modellazione, che prevede tre discipline: progettazione, training del modello e valutazione dei modelli di funzioni. Si tratta in cui i data Scientist possono dedicare molto tempo ed è dove automatizzati di Machine Learning può aiutare davvero semplificare le cose.

Il set di dati di che utilizzo è dati delle serie temporali, che richiede la procedura generare le funzionalità. Funzionalità tipiche per i dati di serie temporale sono funzioni di data ora, le funzioni di ritardo e funzionalità della finestra. Per semplicità, non verranno esaminate le funzioni di ritardo o funzionalità della finestra. ML automatizzati genera automaticamente le funzionalità di tempo data, eliminando la necessità di generare manualmente questi. Esegue inoltre i dati di molte attività di pre-elaborazione. Ad esempio, Machine Learning automatizzati possono attribuire valori mancanti nel set di dati. Se osserva il set di dati ulteriormente scopriranno che mancano alcune righe del set di dati e mancano alcuni valori, nonché. Nel codice seguente, è possibile visualizzare che tale riga 49175 contiene un valore mancante, indicato da "nan", che è l'acronimo di "not a number":

df.iloc[49175].values

Output della riga è il seguente:

array([Timestamp('2017-08-11 01:00:00'), nan, 0.0, 69.26], dtype=object)

Successivamente, è necessario suddividere il set di dati in un set di dati di training e un set di dati di test. Il set di dati di training viene utilizzato per compilare il modello. Una volta eseguito il training, è necessario testare il modello usando il set di dati di test per valutare le prestazioni e per verificare che il modello è soddisfacente prima della distribuzione. La suddivisione può essere casuale, ma nel caso di dati sul consumo di energia in cui è presente la stagionalità, si desidera dividere il set di dati in modo strategico. È impostata una piccola parte del set di dati di training riservato come un set di dati di convalida. Set di dati di training viene utilizzato per il training del modello. Consente di generalizzare il modello in modo che il modello non è con overtraining con i dati di training set di dati di convalida. Ciò consente di assicurarsi che il modello vengono inoltre eseguite anche sui nuovi dati e non solo sui dati di training.

A questo punto, la colonna che si sta utilizzando per stimare è richiesta. Spostare i valori di richiesta in un proprio vettore "y", che viene chiamata la colonna di etichetta. Ho sto impostazione riservato come il set di dati di test più recenti di dall'1 luglio 2017, tutti i dati. Sono precedenti al 1 ° luglio 2017, tutti i dati sono dati di training. Qui il codice viene illustrato questo:

train, test = (df.loc[df['timeStamp']<'2016-07-01'],
  df.loc[df['timeStamp']>='2016-07-01'])

I dati che è stato letto in frame di dati hanno le caratteristiche e l'etichetta (la colonna sto cercando di stimare). È necessario spostare la colonna di etichetta in un proprio y vettore, come illustrato di seguito:

X = train.drop(['demand'], axis=1)
y = train['demand']
y = y.values

Riservare un set di dati di convalida all'interno del set di dati di training. Con i dati delle serie temporali, il set di dati di convalida è in genere per un periodo specifico. Ecco come viene eseguita la divisione:

split_index = int(X.shape[0] * 0.9)
X_train = X[0:split_index]
y_train = y[0:split_index]
X_validation = X[split_index+1:]
y_validation = y[split_index+1:]

La parte di progettazione funzionalità di modellazione è stata completata.

Training del modello

La scelta successiva da che un utente deve affrontare consiste nel decidere quale algoritmo funziona per il set di dati. La complessità può costituire un problema qui perché sono disponibili numerosi algoritmi da scegliere, tra cui macchine a vettori di supporto (SVM), lazo regressione, regressione ridge e altro ancora. Inoltre, ogni algoritmo prevede gli iperparametri che devono essere ottimizzati. Gli Iperparametri per ognuno degli algoritmi possono essere un set di infinito, ovvero la combinazione di algoritmi e iperparametri sono a sua volta infinito. Quindi, teoricamente è necessario creare un numero infinito di modelli per trovare quello più adatto.

Gli utenti combinano le funzionalità, gli strumenti di apprendimento (algoritmi) e gli iperparametri per compilare più modelli per un problema aziendale, in modo che in definitiva possibile trovarne uno che produce la precisione ottimale. Creazione di molti modelli e loro valutazione è un'attività manuale, lunga e noiosa che può richiedere diverse settimane o anche mesi. Per di più, è necessario mantenere le soluzioni e i modelli distribuiti. Evoluzione dei dati, è necessario eseguire periodicamente il modello di processo di compilazione. Creazione di un singolo modello include le attività di progettazione di funzionalità, selezione dell'algoritmo e ottimizzazione degli iperparametri. Per ottenere un buon modello di prestazioni, è necessario compilare e valutare diversi modelli ed eseguire questi compiti tediosi ripetutamente.

Per coloro che si sono verificati nell'analisi scientifica dei dati, Machine Learning automatizzata semplifica ed elimina l'elaborazione manuale eseguendo la selezione di funzionalità di ingegneria, algoritmo e degli iperparametri e ottimizzazione consente di migliorare la produttività e risparmiare tempo. Per la nuova data Scientist, l'astrazione di selezione dell'algoritmo e ottimizzazione degli iperparametri semplifica la complessità e consente di compilare rapidamente soluzioni di Machine Learning.

Come un utente desidera salvare tutti i modelli di Machine Learning che è stato creato, nonché la cronologia di tutti i processi di training, in modo che ho un record del modo in cui ho qui e potervi fare riferimento ad esso quando necessario. A tale scopo, è possibile creare una cartella di progetto in cui vengono memorizzati tutti gli elementi e un oggetto esperimento per associare tutti la cronologia di esecuzione dei processi di training di Machine Learning automatizzati. Innanzitutto, creo una cartella di progetto per archiviare tutti i file di progetto, come illustrato di seguito:

project_folder =
  './sample_projects/automl-energydemandforecasting'

Quindi, scelgo un nome per il contenitore della cronologia di esecuzione nell'area di lavoro, con il seguente codice:

experiment_name = 'energy_ml_exp'

Successivamente, sarà creare un oggetto esperimento e associarlo con l'area di lavoro. Il codice è il seguente:

experiment=Experiment(ws, experiment_name)

Da qui, Machine Learning automatizzati deve solo due passaggi per creare i modelli prima che configura l'oggetto AutoMLConfig ed eseguire l'esperimento. Figura 3Mostra la rappresentazione concettuale di ML automatizzati.

A questo punto, è possibile configurare le impostazioni di Machine Learning automatizzate e inviare un esperimento di Machine Learning automatizzato. Il codice è il seguente:

Figura 3 concettuale automatizzati di Machine Learning diagramma

automl_config_local = AutoMLConfig(task = 'regression',
                              debug_log = 'automl_errors.log',
                              primary_metric = 'spearman_correlation',
                              iterations = 150,
                              X = X_train,
                              y = y_train,
                              X_valid = X_validation,
                              y_valid = y_validation,
                              preprocess = True,
                              path=project_folder)

Si noti che le impostazioni di configurazione che impostato iterazioni = 150. Poiché il numero di iterazioni è impostato su 150, ML automatizzati genererà 150 diverse combinazioni di algoritmi e degli iperparametri, convergono in 150 modelli diversi. ML automatizzati stessa Usa un modello di Machine Learning che è stato eseguito il training con milioni di pipeline. Usa tecniche di fattorizzazione di matrice, automatizzati di Machine Learning genera gli algoritmi e le combinazioni di iperparametri in modo intelligente, causando la convergenza molto più veloce in un modello ottimale. Inoltre, la pre-elaborazione impostazione = True trigger automatizzati di Machine Learning per eseguire un pre-elaborazione di dati e le attività di progettazione di funzionalità. Ciò include la generazione delle funzionalità disponibili in data, l'immissione dei valori mancanti, conversione di valori categorici in una codifica a caldo e così via, che eliminano la necessità di un data scientist per eseguire queste operazioni manualmente.

A questo punto è possibile completare il secondo passaggio, che invia l'esperimento di Machine Learning automatizzato, come illustrato di seguito:

local_run = experiment.submit(automl_config_local, show_output=True)

A questo punto automatizzati di Machine Learning genera un set di combinazioni di algoritmo e degli iperparametri. Il training dei modelli viene eseguito nella macchina di virtuale di Azure gestita dal servizio Azure Notebooks. Automatizzati di Machine Learning ti permette di eseguire i processi di training del modello nel computer locale o nel Cloud di Azure per aumentare le prestazioni e scalabilità orizzontale in base alle esigenze per migliorare le prestazioni. È possibile eseguire le iterazioni in parallelo in un cluster. È possibile monitorare lo stato di avanzamento delle esecuzioni nel portale di Azure o nel Notebook di Jupyter mediante l'estensione del widget che viene fornito con il SDK. Automatizzati di Machine Learning restituisce i modelli generati in base a criteri e può eseguire il rendering di un gruppo di punteggi che mostra i modelli nell'ordine delle prestazioni.

È anche possibile esaminare un'ampia gamma di grafici per ognuno dei modelli e controllare metriche diverse per aiutare a prendere decisioni. Nei casi in cui la precisione è estremamente importante, è possibile ottimizzare ulteriormente il modello generato manualmente per migliorarne le prestazioni.

Tutti i modelli generati da Machine Learning automatizzati vengono archiviati nell'archivio permanente in Azure, come un oggetto serializzato di python in un formato denominato PKL.

Test e valutazione del modello.

Dopo automatizzati di Machine Learning ha generato un modello di alta qualità, è possibile usare, per eseguire stime sui dati di test che è stata riservare. In primo luogo, è necessario selezionare il modello migliore da tutti i modelli che sono stati generati, usando il codice seguente:

best_run, fitted_model = local_run.get_output()
print(best_run)
print(fitted_model)

Che genera il codice seguente, che descrive il modello migliore generato da Machine Learning automatizzato:

Run(Experiment: enery_ml_exp, Id: AutoML_dc619226-fbdb-41e6-872c-6c59ab2b5209_1,
  Type: None, Status: Completed) Pipeline(memory=None, steps=[('datatransformer',
  DataTransformer(logger=None, task=None)), ('sparsenormalizer',
  <automl.client.core.common.model_wrappers.SparseNormalizer object at
  0x7f7f87ee3828>), ('decisiontreeregressor',
  DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=0.2,
  max_leaf_node... min_weight_fraction_leaf=0.0, presort=False,
  random_state=None, splitter='best'))])

Si noti che se ho chiamato questi modelli, sono in realtà le pipeline che includono tutti la trasformazione di pre-elaborazione attraverso il quale è necessario passare i dati. A questo punto è possibile testare il modello tramite l'esecuzione di stime sui dati di test per produrre un confronto di inserire in formato grafico dei dati effettivi rispetto ai dati stimati. Usare il codice seguente:

x_test = test.drop(['demand'], axis=1)
y_test = test['demand']
y_pred_test = fitted_model.predict(x_test)
y_residual_test = y_test - y_pred_test
plt.plot(x_test['timeStamp'], y_test, label='Actual')
plt.plot(x_test['timeStamp'], y_pred_test, label="Predicted")
plt.xticks(rotation=90)
plt.title('Actual demand vs predicted for test data ')
plt.legend()
plt.show()

Con una piccola nuova progettazione di funzionalità e l'uso delle funzioni lag, questo modello può essere ulteriormente migliorato. In futuro, ci si aspettano ML automatizzati di evolversi per automatizzare più aree di progettazione di funzionalità, tra cui la generazione di funzioni lag.

Conclusioni

Automatizzati di Machine Learning ti permette di creare un modello di Machine Learning con pochi semplici passaggi. Siamo nelle prime fasi di creazione di modelli di Machine Learning vengono resi accessibili per gli sviluppatori di realmente democratizzare l'intelligenza artificiale. È possibile trovare molti altri esempi ed esercitazioni dell'uso automatizzati ML aka.ms/AutomatedMLDocs.


Krishna Anumalasettyha lavorato come program manager in Azure e i servizi cloud negli ultimi sette anni, con quattro di tali in Machine Learning e intelligenza artificiale. Anumalasetty è program manager che incubazione ML automatizzati come parte dello stack di intelligenza artificiale in Azure. Ha lavorato sull'abilitazione della funzionalità di eccellenza aziendali, come la protezione dei dati @REST crittografia, le funzionalità di rete virtuale, gli scenari ibridi con connettività da sito locale, integrazione di Azure Active Directory e altro ancora. Attualmente è impegnato in arricchimento le funzionalità di Machine Learning automatizzate con l'apprendimento avanzato.

Grazie per i seguenti esperti Microsoft per la revisione dell'articolo: Sujatha Sagiraju, Bharat Sandhu
Bharat Sandhu è Director del marketing per intelligenza artificiale di Azure & Analitica avanzata dei prodotti. Concentra l'attenzione su consentendo alle organizzazioni di sfruttare tutte le potenzialità dell'intelligenza artificiale per trasformare la propria attività. Prima del suo ruolo corrente, ha ricoperto ruoli dell'organizzazione vendite e lo sviluppo di business per le varie tecnologie emergenti presso Microsoft e National Instruments.  Bharat è laureato in Ingegneria informatica presso Texas A & M University e MBA dalla INSEAD.

Sujatha Sagiraju è un Group Program Manager del gruppo del Cloud di Azure e intelligenza artificiale ed è un esperto di Microsoft. L'esperienza è nella creazione di sistemi di grandi dimensioni distribuite su larga scala. Sua passione più recente è accelerazione e democratizzazione per intelligenza artificiale tramite automatizzati di Machine Learning.


Discutere di questo articolo nel forum di MSDN Magazine