H2O - Esecuzione di un'applicazione di esempio

Fare clic sul collegamento Flusso di ritardo delle compagnie aeree nell'elenco dei campioni come mostrato nello screenshot qui sotto -

Dopo aver confermato, verrà caricato il nuovo notebook.

Cancellazione di tutte le uscite

Prima di spiegare le istruzioni del codice nel notebook, cancelliamo tutti gli output e quindi eseguiamo il notebook gradualmente. Per cancellare tutte le uscite, selezionare la seguente opzione di menu:

Flow / Clear All Cell Contents

Questo è mostrato nella seguente schermata:

Una volta cancellati tutti gli output, eseguiremo individualmente ogni cella del notebook e ne esamineremo l'output.

Esecuzione della prima cella

Fare clic sulla prima cella. A sinistra appare una bandiera rossa che indica che la cella è selezionata. Questo è come mostrato nello screenshot qui sotto -

Il contenuto di questa cella è solo il commento del programma scritto in linguaggio MarkDown (MD). Il contenuto descrive ciò che fa l'applicazione caricata. Per eseguire la cella, fare clic sull'icona Esegui come mostrato nello screenshot qui sotto -

Non vedrai alcun output sotto la cella poiché non c'è codice eseguibile nella cella corrente. Il cursore ora si sposta automaticamente alla cella successiva, che è pronta per essere eseguita.

Importazione di dati

La cella successiva contiene la seguente istruzione Python:

importFiles ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]

L'istruzione importa il file allyears2k.csv da Amazon AWS nel sistema. Quando esegui la cella, importa il file e ti dà il seguente output.

Configurazione del parser dei dati

Ora, dobbiamo analizzare i dati e renderli adatti al nostro algoritmo ML. Questo viene fatto usando il seguente comando:

setupParse paths: [ "https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv" ]

All'esecuzione dell'istruzione precedente, viene visualizzata una finestra di dialogo di configurazione dell'installazione. La finestra di dialogo consente diverse impostazioni per l'analisi del file. Questo è come mostrato nello screenshot qui sotto -

In questa finestra di dialogo, è possibile selezionare il parser desiderato dall'elenco a discesa fornito e impostare altri parametri come il separatore di campo, ecc.

Analisi dei dati

L'istruzione successiva, che analizza effettivamente il file di dati utilizzando la configurazione precedente, è lunga ed è come mostrato qui -

parseFiles
paths: ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
destination_frame: "allyears2k.hex"
parse_type: "CSV"
separator: 44
number_columns: 31
single_quotes: false
column_names: ["Year","Month","DayofMonth","DayOfWeek","DepTime","CRSDepTime",
   "ArrTime","CRSArrTime","UniqueCarrier","FlightNum","TailNum",
   "ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
   "Origin","Dest","Distance","TaxiIn","TaxiOut","Cancelled","CancellationCode",
   "Diverted","CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
   "LateAircraftDelay","IsArrDelayed","IsDepDelayed"]
column_types: ["Enum","Enum","Enum","Enum","Numeric","Numeric","Numeric"
   ,"Numeric","Enum","Enum","Enum","Numeric","Numeric","Numeric","Numeric",
   "Numeric","Enum","Enum","Numeric","Numeric","Numeric","Enum","Enum",
   "Numeric","Numeric","Numeric","Numeric","Numeric","Numeric","Enum","Enum"]
delete_on_done: true
check_header: 1
chunk_size: 4194304

Osservare che i parametri impostati nella casella di configurazione sono elencati nel codice sopra. Ora, avvia questa cella. Dopo un po ', l'analisi viene completata e vedrai il seguente output:

Esame del dataframe

Dopo l'elaborazione, genera un dataframe, che può essere esaminato utilizzando la seguente dichiarazione:

getFrameSummary "allyears2k.hex"

Dopo l'esecuzione dell'istruzione precedente, vedrai il seguente output:

Ora i tuoi dati sono pronti per essere inseriti in un algoritmo di Machine Learning.

L'istruzione successiva è un commento del programma che dice che utilizzeremo il modello di regressione e specifica la regolarizzazione preimpostata ei valori lambda.

Costruire il modello

Successivamente, arriva l'affermazione più importante e cioè la costruzione del modello stesso. Ciò è specificato nella seguente dichiarazione:

buildModel 'glm', {
   "model_id":"glm_model","training_frame":"allyears2k.hex",
   "ignored_columns":[
      "DayofMonth","DepTime","CRSDepTime","ArrTime","CRSArrTime","TailNum",
      "ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
      "TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted","CarrierDelay",
      "WeatherDelay","NASDelay","SecurityDelay","LateAircraftDelay","IsArrDelayed"],
   "ignore_const_cols":true,"response_column":"IsDepDelayed","family":"binomial",
   "solver":"IRLSM","alpha":[0.5],"lambda":[0.00001],"lambda_search":false,
   "standardize":true,"non_negative":false,"score_each_iteration":false,
   "max_iterations":-1,"link":"family_default","intercept":true,
   "objective_epsilon":0.00001,"beta_epsilon":0.0001,"gradient_epsilon":0.0001,
   "prior":-1,"max_active_predictors":-1
}

Usiamo glm, che è una suite di modelli lineari generalizzati con il tipo di famiglia impostato su binomiale. Puoi vederli evidenziati nella dichiarazione sopra. Nel nostro caso, l'output atteso è binario ed è per questo che utilizziamo il tipo binomiale. Puoi esaminare gli altri parametri da solo; ad esempio, guarda alfa e lambda che avevamo specificato in precedenza. Fare riferimento alla documentazione del modello GLM per la spiegazione di tutti i parametri.

Ora, esegui questa dichiarazione. Al momento dell'esecuzione, verrà generato il seguente output:

Certamente, il tempo di esecuzione sarebbe diverso sulla tua macchina. Ora arriva la parte più interessante di questo codice di esempio.

Esame dell'output

Produciamo semplicemente il modello che abbiamo costruito usando la seguente dichiarazione:

getModel "glm_model"

Nota glm_model è l'ID del modello specificato come parametro model_id durante la creazione del modello nell'istruzione precedente. Questo ci dà un enorme output che dettaglia i risultati con diversi parametri variabili. Un output parziale del report è mostrato nello screenshot qui sotto:

Come puoi vedere nell'output, si dice che questo è il risultato dell'esecuzione dell'algoritmo di modellazione lineare generalizzata sul tuo set di dati.

Proprio sopra lo SCORING HISTORY, vedi il tag MODEL PARAMETERS, espandilo e vedrai l'elenco di tutti i parametri che vengono utilizzati durante la costruzione del modello. Questo è mostrato nello screenshot qui sotto.

Allo stesso modo, ogni tag fornisce un output dettagliato di un tipo specifico. Espandi tu stesso i vari tag per studiare gli output di diverso tipo.

Costruire un altro modello

Successivamente, costruiremo un modello di Deep Learning sul nostro dataframe. L'istruzione successiva nel codice di esempio è solo un commento di programma. La seguente dichiarazione è in realtà un comando di creazione del modello. È come mostrato qui -

buildModel 'deeplearning', {
   "model_id":"deeplearning_model","training_frame":"allyear
   s2k.hex","ignored_columns":[
      "DepTime","CRSDepTime","ArrTime","CRSArrTime","FlightNum","TailNum",
      "ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
      "TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted",
      "CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
      "LateAircraftDelay","IsArrDelayed"],
   "ignore_const_cols":true,"res   ponse_column":"IsDepDelayed",
   "activation":"Rectifier","hidden":[200,200],"epochs":"100",
   "variable_importances":false,"balance_classes":false,
   "checkpoint":"","use_all_factor_levels":true,
   "train_samples_per_iteration":-2,"adaptive_rate":true,
   "input_dropout_ratio":0,"l1":0,"l2":0,"loss":"Automatic","score_interval":5,
   "score_training_samples":10000,"score_duty_cycle":0.1,"autoencoder":false,
   "overwrite_with_best_model":true,"target_ratio_comm_to_comp":0.02,
   "seed":6765686131094811000,"rho":0.99,"epsilon":1e-8,"max_w2":"Infinity",
   "initial_weight_distribution":"UniformAdaptive","classification_stop":0,
   "diagnostics":true,"fast_mode":true,"force_load_balance":true,
   "single_node_mode":false,"shuffle_training_data":false,"missing_values_handling":
   "MeanImputation","quiet_mode":false,"sparse":false,"col_major":false,
   "average_activation":0,"sparsity_beta":0,"max_categorical_features":2147483647,
   "reproducible":false,"export_weights_and_biases":false
}

Come puoi vedere nel codice sopra, specifichiamo deeplearning per la costruzione del modello con diversi parametri impostati sui valori appropriati come specificato nella documentazione del modello deeplearning. Quando si esegue questa istruzione, ci vorrà più tempo rispetto alla creazione del modello GLM. Vedrai il seguente output quando la costruzione del modello sarà completata, anche se con tempi diversi.

Esame dell'output del modello di deep learning

Questo genera il tipo di output, che può essere esaminato utilizzando la seguente istruzione come nel caso precedente.

getModel "deeplearning_model"

Considereremo l'output della curva ROC come mostrato di seguito per una rapida consultazione.

Come nel caso precedente, espandere le varie schede e studiare i diversi output.

Salvataggio del modello

Dopo aver studiato l'output di diversi modelli, si decide di utilizzare uno di quelli nel proprio ambiente di produzione. H20 ti consente di salvare questo modello come POJO (Plain Old Java Object).

Espandi l'ultimo tag PREVIEW POJO nell'output e vedrai il codice Java per il tuo modello ottimizzato. Usalo nel tuo ambiente di produzione.

Successivamente, impareremo una caratteristica molto interessante di H2O. Impareremo come utilizzare AutoML per testare e classificare vari algoritmi in base alle loro prestazioni.