H2O - Aplicação de amostra em execução
Clique no link Fluxo de Atraso das Companhias Aéreas na lista de amostras, conforme mostrado na imagem abaixo -
Depois de confirmar, o novo bloco de notas será carregado.
Limpando todas as saídas
Antes de explicarmos as instruções de código no notebook, vamos limpar todas as saídas e, em seguida, executar o notebook gradualmente. Para limpar todas as saídas, selecione a seguinte opção de menu -
Flow / Clear All Cell Contents
Isso é mostrado na imagem a seguir -
Assim que todas as saídas forem apagadas, executaremos cada célula do notebook individualmente e examinaremos sua saída.
Executando a primeira célula
Clique na primeira célula. Uma bandeira vermelha aparece à esquerda indicando que a célula está selecionada. Isso é mostrado na imagem abaixo -
O conteúdo desta célula é apenas o comentário do programa escrito na linguagem MarkDown (MD). O conteúdo descreve o que o aplicativo carregado faz. Para executar a célula, clique no ícone Executar conforme mostrado na imagem abaixo -
Você não verá nenhuma saída abaixo da célula, pois não há código executável na célula atual. O cursor agora se move automaticamente para a próxima célula, que está pronta para ser executada.
Importando Dados
A próxima célula contém a seguinte instrução Python -
importFiles ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
A declaração importa o arquivo allyears2k.csv do Amazon AWS para o sistema. Quando você executa a célula, ela importa o arquivo e fornece a seguinte saída.
Configurando o analisador de dados
Agora, precisamos analisar os dados e torná-los adequados para nosso algoritmo de ML. Isso é feito usando o seguinte comando -
setupParse paths: [ "https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv" ]
Após a execução da instrução acima, uma caixa de diálogo de configuração de instalação é exibida. A caixa de diálogo permite várias configurações para analisar o arquivo. Isso é mostrado na imagem abaixo -
Nesta caixa de diálogo, você pode selecionar o analisador desejado na lista suspensa fornecida e definir outros parâmetros, como o separador de campo, etc.
Análise de dados
A próxima instrução, que realmente analisa o arquivo de dados usando a configuração acima, é longa e é mostrada aqui -
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
Observe que os parâmetros que você configurou na caixa de configuração estão listados no código acima. Agora, execute esta célula. Depois de um tempo, a análise é concluída e você verá a seguinte saída -
Examinando Dataframe
Após o processamento, ele gera um dataframe, que pode ser examinado usando a seguinte instrução -
getFrameSummary "allyears2k.hex"
Após a execução da instrução acima, você verá a seguinte saída -
Agora, seus dados estão prontos para serem alimentados em um algoritmo de aprendizado de máquina.
A próxima declaração é um comentário do programa que diz que usaremos o modelo de regressão e especifica a regularização predefinida e os valores lambda.
Construindo o modelo
A seguir, vem a afirmação mais importante, que é construir o próprio modelo. Isso é especificado na seguinte declaração -
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
}
Usamos glm, que é um conjunto de modelo linear generalizado com tipo de família definido como binomial. Você pode ver isso destacado na declaração acima. No nosso caso, a saída esperada é binária e é por isso que usamos o tipo binomial. Você pode examinar os outros parâmetros sozinho; por exemplo, observe alfa e lambda que especificamos anteriormente. Consulte a documentação do modelo GLM para obter a explicação de todos os parâmetros.
Agora, execute esta declaração. Após a execução, a seguinte saída será gerada -
Certamente, o tempo de execução seria diferente em sua máquina. Agora, vem a parte mais interessante deste código de amostra.
Análise de saída
Simplesmente produzimos o modelo que construímos usando a seguinte instrução -
getModel "glm_model"
Observe que glm_model é o ID do modelo que especificamos como parâmetro model_id ao construir o modelo na instrução anterior. Isso nos dá uma grande saída detalhando os resultados com vários parâmetros variáveis. Uma saída parcial do relatório é mostrada na captura de tela abaixo -
Como você pode ver na saída, diz que este é o resultado da execução do algoritmo de Modelagem Linear Generalizada em seu conjunto de dados.
Logo acima do HISTÓRICO DE PONTUAÇÃO, você verá a tag MODEL PARAMETERS, expanda-a e verá a lista de todos os parâmetros que são usados durante a construção do modelo. Isso é mostrado na imagem abaixo.
Da mesma forma, cada tag fornece uma saída detalhada de um tipo específico. Expanda as várias tags você mesmo para estudar os resultados de diferentes tipos.
Construindo outro modelo
A seguir, construiremos um modelo de Deep Learning em nosso dataframe. A próxima instrução no código de amostra é apenas um comentário do programa. A declaração a seguir é na verdade um comando de construção de modelo. É como mostrado aqui -
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
}
Como você pode ver no código acima, especificamos deeplearning para construir o modelo com vários parâmetros definidos para os valores apropriados, conforme especificado na documentação do modelo de deeplearning. Quando você executa esta instrução, levará mais tempo do que a construção do modelo do GLM. Você verá a seguinte saída quando a construção do modelo for concluída, embora com tempos diferentes.
Examinando a saída do modelo de aprendizado profundo
Isso gera o tipo de saída, que pode ser examinada usando a instrução a seguir, como no caso anterior.
getModel "deeplearning_model"
Consideraremos a saída da curva ROC conforme mostrado abaixo para referência rápida.
Como no caso anterior, expanda as várias guias e estude os diferentes resultados.
Salvando o modelo
Depois de estudar a saída de diferentes modelos, você decide usar um deles em seu ambiente de produção. H20 permite que você salve este modelo como um POJO (Plain Old Java Object).
Expanda a última tag PREVIEW POJO na saída e você verá o código Java para seu modelo ajustado. Use isso em seu ambiente de produção.
A seguir, aprenderemos sobre um recurso muito interessante do H2O. Aprenderemos como usar o AutoML para testar e classificar vários algoritmos com base em seu desempenho.