H2O - Aplicación de muestra en ejecución
Haga clic en el enlace Airlines Delay Flow en la lista de muestras como se muestra en la captura de pantalla a continuación:
Después de confirmar, se cargará el nuevo cuaderno.
Borrar todas las salidas
Antes de explicar las declaraciones de código en el cuaderno, borremos todas las salidas y luego ejecutemos el cuaderno gradualmente. Para borrar todas las salidas, seleccione la siguiente opción de menú:
Flow / Clear All Cell Contents
Esto se muestra en la siguiente captura de pantalla:
Una vez que se borran todas las salidas, ejecutaremos cada celda en el portátil individualmente y examinaremos su salida.
Ejecutando la primera celda
Haga clic en la primera celda. Aparece una bandera roja a la izquierda que indica que la celda está seleccionada. Esto es como se muestra en la captura de pantalla a continuación:
El contenido de esta celda es solo el comentario del programa escrito en lenguaje MarkDown (MD). El contenido describe lo que hace la aplicación cargada. Para ejecutar la celda, haga clic en el icono Ejecutar como se muestra en la captura de pantalla a continuación:
No verá ningún resultado debajo de la celda, ya que no hay un código ejecutable en la celda actual. El cursor ahora se mueve automáticamente a la siguiente celda, que está lista para ejecutarse.
Importación de datos
La siguiente celda contiene la siguiente declaración de Python:
importFiles ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
La declaración importa el archivo allyears2k.csv de Amazon AWS al sistema. Cuando ejecuta la celda, importa el archivo y le da el siguiente resultado.
Configuración del analizador de datos
Ahora, necesitamos analizar los datos y adaptarlos a nuestro algoritmo ML. Esto se hace usando el siguiente comando:
setupParse paths: [ "https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv" ]
Tras la ejecución de la declaración anterior, aparece un cuadro de diálogo de configuración de instalación. El cuadro de diálogo le permite varias configuraciones para analizar el archivo. Esto es como se muestra en la captura de pantalla a continuación:
En este cuadro de diálogo, puede seleccionar el analizador deseado de la lista desplegable dada y establecer otros parámetros, como el separador de campo, etc.
Análisis de datos
La siguiente declaración, que en realidad analiza el archivo de datos utilizando la configuración anterior, es larga y se muestra aquí:
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 los parámetros que ha configurado en el cuadro de configuración se enumeran en el código anterior. Ahora, ejecute esta celda. Después de un tiempo, el análisis se completa y verá el siguiente resultado:
Examinando el marco de datos
Después del procesamiento, genera un marco de datos, que se puede examinar utilizando la siguiente declaración:
getFrameSummary "allyears2k.hex"
Tras la ejecución de la declaración anterior, verá el siguiente resultado:
Ahora, sus datos están listos para ingresar en un algoritmo de aprendizaje automático.
La siguiente declaración es un comentario de programa que dice que usaremos el modelo de regresión y especifica la regularización preestablecida y los valores lambda.
Construyendo el modelo
A continuación, viene la declaración más importante y es la construcción del modelo en sí. Esto se especifica en la siguiente declaración:
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 es un conjunto de modelos lineales generalizados con el tipo de familia establecido en binomial. Puede ver estos resaltados en la declaración anterior. En nuestro caso, la salida esperada es binaria y es por eso que usamos el tipo binomial. Puede examinar los otros parámetros usted mismo; por ejemplo, mire alfa y lambda que habíamos especificado anteriormente. Consulte la documentación del modelo GLM para obtener una explicación de todos los parámetros.
Ahora, ejecute esta declaración. Tras la ejecución, se generará la siguiente salida:
Ciertamente, el tiempo de ejecución sería diferente en su máquina. Ahora, viene la parte más interesante de este código de muestra.
Examinar la salida
Simplemente generamos el modelo que hemos construido usando la siguiente declaración:
getModel "glm_model"
Tenga en cuenta que glm_model es el ID del modelo que especificamos como parámetro model_id al crear el modelo en la declaración anterior. Esto nos da una salida enorme que detalla los resultados con varios parámetros variables. En la captura de pantalla siguiente se muestra una salida parcial del informe:
Como puede ver en el resultado, dice que este es el resultado de ejecutar el algoritmo de modelado lineal generalizado en su conjunto de datos.
Justo encima del HISTORIAL DE PUNTUACIÓN, verá la etiqueta PARÁMETROS DEL MODELO, amplíela y verá la lista de todos los parámetros que se utilizan al crear el modelo. Esto se muestra en la captura de pantalla siguiente.
Asimismo, cada etiqueta proporciona una salida detallada de un tipo específico. Expanda las distintas etiquetas usted mismo para estudiar los resultados de diferentes tipos.
Construyendo otro modelo
A continuación, crearemos un modelo de aprendizaje profundo en nuestro marco de datos. La siguiente declaración en el código de muestra es solo un comentario de programa. La siguiente declaración es en realidad un comando de construcción de modelos. Es como se muestra aquí:
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 puede ver en el código anterior, especificamos el aprendizaje profundo para construir el modelo con varios parámetros establecidos en los valores apropiados como se especifica en la documentación del modelo de aprendizaje profundo. Cuando ejecute esta declaración, llevará más tiempo que la construcción del modelo GLM. Verá el siguiente resultado cuando se complete la construcción del modelo, aunque con diferentes tiempos.
Examinar la salida del modelo de aprendizaje profundo
Esto genera el tipo de salida, que se puede examinar utilizando la siguiente declaración como en el caso anterior.
getModel "deeplearning_model"
Consideraremos la salida de la curva ROC como se muestra a continuación para una referencia rápida.
Como en el caso anterior, expanda las distintas pestañas y estudie los diferentes resultados.
Guardar el modelo
Después de haber estudiado el resultado de diferentes modelos, decide utilizar uno de ellos en su entorno de producción. H20 le permite guardar este modelo como un POJO (Plain Old Java Object).
Expanda la última etiqueta PREVIEW POJO en la salida y verá el código Java para su modelo ajustado. Utilice esto en su entorno de producción.
A continuación, aprenderemos sobre una característica muy interesante de H2O. Aprenderemos a usar AutoML para probar y clasificar varios algoritmos en función de su rendimiento.