Aprendizaje automático para datos de partículas

Cómo se puede usar un modelo de aprendizaje profundo H2O para realizar una clasificación supervisada con Python

Este artículo presenta el Aprendizaje profundo con H2O el paquete de aprendizaje de código abierto de la máquina por H2O.ai y muestra cómo se puede usar un modelo H2O Deep Learning para resolver un problema de clasificación supervisada, es decir, usar el experimento ATLAS para identificar el bosón de Higgs .

No tenemos conocimiento de la física de partículas, pero aún así queremos aplicar los métodos avanzados de aprendizaje automático para ver si podemos predecir con precisión los eventos de colisión de partículas como señales de Boson de Higgs o ruido de fondo (b).

Tenga en cuenta que aplicar métodos de aprendizaje automático a un dominio con el que no está familiarizado, es decir, puede convertirse en un científico de datos competente sin experiencia en el dominio. Son cosas diferentes. Con eso en mente, comencemos.

Instalación H2O

La ​​instalación de H2O en Python es bastante sencilla. Seguí las instrucciones en los documentos oficiales de H2O: Descargando e instalando H2O . ¡Funciona como un encanto!

Inicializa H2O y carga los datos

El conjunto de datos se puede encontrar aquí. Y cargamos el módulo H2O Python.

  • Poner en marcha una nube H2O de 1 nodo en mi máquina local.
  • Permitir que use todos los núcleos de la CPU y hasta 2 GB de memoria.
  • Limpieza en caso de que el clúster estuviera ya se está ejecutando.
  • Cree un modelo de red neuronal profunda utilizando las CPU en un H2OFrame.
 importe h2o 
 h2o.init (max_mem_size = 2) 
 h2o.remove_all () 
% matplotlib en línea 
 ] importar matplotlib.pyplot as plt 
 importar números como np 
 importar pandas como pd 
 desde h2o.estimators.deeplearning importar H2ODeepLearning Estimator

Una vez que se haya realizado la inicialización, podríamos cargar nuestro conjunto de datos al H2O cluster. Los datos se importan en marcos H2O, que funcionan de manera similar a los marcos de datos pandas. En nuestro caso, el cluster se está ejecutando en nuestras computadoras portátiles.

 higgs = h2o.import_file (& # 039; higgs_boston_train.csv & # 039;)

Podríamos echar un vistazo rápido al conjunto de datos.

 higgs. describe ()

describe () proporciona mucha información.

  • Número de filas y columnas en el conjunto de datos.
  • Estadísticas de resumen sobre el conjunto de datos, como tipo de datos, valor mínimo, valor medio, máximo valor, desviación estándar, número de ceros en la columna, número de valores faltantes en la columna y las 10 filas superiores del conjunto de datos.
Figura 1

Preprocesamiento de datos

Dividimos los datos en el de las siguientes formas:

  • 60% para entrenamiento
  • 20% para validación (ajuste de parámetros hiperactivos)
  • 20% para pruebas finales, se retendrá hasta el final
  • Los predictores son todas las columnas excepto “EventId” y “Etiqueta”.
  • La columna de respuesta es la última columna “Etiqueta”.
 tren, válido, prueba = higgs.split_frame ([0.6, 0.2]semilla = 2019) 
 higgs_X = higgs.col_names [1: -1]
 higgs_y = higgs.col_names [-1]

Modelos de aprendizaje profundo

Modelo 1

  • Ejecutamos nuestro primer modelo de aprendizaje profundo en el conjunto de datos del bosón de Higgs.
  • Debemos predecir la columna “Etiqueta”, una característica categórica con 2 niveles.
  • El modelo de Aprendizaje Profundo tendrá la tarea de realizar una clasificación binaria.
  • El modelo de Aprendizaje Profundo usa todos los predictores del conjunto de datos, excepto “EventId”, y todos ellos son numéricos.
  • El primer modelo de Aprendizaje Profundo será solo una época para familiarizarse con la construcción del modelo.
 higgs_model_v1 = H2ODeepLearning Estimator (model_id = & # 039; higgs_v1 & # 039 ;, epochs = 1, variable_importances = True) 
 higgs_model_v1.train (higgs_X, higgs_y, training_frame = train, validation_frame = valid) 
 print (higgs_model_v1)

Imprimimos el modelo para investigar más:

Figura 2

mucha información, pero los hemos visto todos en el pasado. [19659010] Métricas de error en el conjunto de entrenamiento como pérdida de registro, media por error de clase, AUC, Gini, MSE, RMSE

  • Matriz de confusión para el umbral máximo de F1
  • Valores de umbral para diferentes métricas
  • Tabla de ganancias / elevación [19659047] El conjunto de validación también se imprimió:

 

Figura 3

Los resultados del conjunto de capacitación y el conjunto de validación fueron bastante cercanos.

Por lo tanto, utilizando nuestro modelo de aprendizaje profundo más simple, obtenemos aproximadamente 0.994 auc en el conjunto de validación y 0.995 auc en conjunto de entrenamiento. Y la pérdida de registro es 0.09 en el conjunto de validación y 0.085 en el conjunto de entrenamiento.

Importancias variables

Al crear modelos de clasificación en H2O, podremos ver la tabla de importancia variable en orden descendente de importancia en Python, así:

 var_df = pd.DataFrame (higgs_model_v1.varimp (), columnas = ['Variable', 'Relative Importance', 'Scaled Importance', 'Percentage']) 
 var_df.head (10)
Figura 4

Historia de puntaje ]

Para ver el historial de puntuación, podemos usar el método score_history para recuperar los datos como un marco de datos de pandas y luego trazar el error de clasificación.

 higgs_v1_df = higgs_model_v1.score_history () 
 plt.plot ( higgs_v1_df ['training_classification_error']label = "training_classification_error") 
 plt.plot (higgs_v1_df ['validation_classification_error']label = "validation_classification_error") 
 plt.title ("Higgs Deep Learner") "19gsp» ;
Figura 5
 pred = higgs_model_v1.predict (prueba [1:-1]). As_data_frame (use_pandas = True) 
 tes t_actual = test.as_data_frame (use_pandas = True) ['Label']
 (test_actual == pred ['predict']). mean ()
Figure 6

La precisión que obtuvimos con este sencillo modelo de aprendizaje profundo ya es 0.967.

] Modelo 2

Para mejorar los resultados. Ahora ejecutamos otra red más pequeña y dejamos que se detenga automáticamente una vez que la tasa de clasificación errónea converja (específicamente si la media móvil de la longitud 2 no mejora al menos un 1% para 2 eventos de puntuación consecutivos). También muestreamos el conjunto de validación en 10,000 filas para una puntuación más rápida.

higgs_model_v2 = H2ODeepLearning Estimator (model_id = & # 039; higgs_v2 & # 039 ;, hidden = 10000stestssoestssopssssopsssopssssoestssopsssopsssopsssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopssopss. = & # 039; error de clasificación & # 039 ;, 
 stopping_tolerance = 0.01) 
 higgs_model_v2.train (higgs_X, higgs_y, training_frame =) Para ver el historial de puntuación, trazamos el error de clasificación para nuestro segundo modelo.
 higgs_v2_df = higgs_model_v2.score_history () 
 plt.plot (higgs_v2_df ['training_classification_error']label = "training_classification_error") 
 plt. plot (higgs_v2_df ['validation_classification_error']label = "validation_classification_error") 
 plt.title ("Higgs Deep Learner (Early Stop)") 
 plt.legend ();
Figure 7

¡Mucho mejor!

Y la precisión también se mejoró.

 pred = higgs_model_v2.predict (prueba [1:-1]). As_data_frame (use_pandas = True) 
 test_actual = test.as_data_frame (use_pandas = True) ['Label']
 (test_actual == pred ['predict']) mean ()
Figure 8

para obtener el gráfico de importancias variables del segundo modelo.

 higgs_model_v2.varimp_plot ();
Figura 9

AutoML: Aprendizaje automático automático

Por último, pero no menos importante, intentémoslo AutoM de H2O L. Se puede usar AutoML de H2O para automatizar el flujo de trabajo de aprendizaje automático, que incluye entrenamiento automático y ajuste de muchos modelos, luego imprimimos para ver qué modelos serán los modelos con mejor desempeño en la tabla de posiciones de AutoML.

 desde h2o.automl import H2OAutoML
 aml = H2OAutoML (max_models = 10, max_runtime_secs = 100, seed = 1) 
 aml.train (higgs_X, higgs_y, training_frame = train, validation_frame = validado)
Figura 10

AutoML ha construido 5 modelos que incluyen GLM (Modelo lineal generalizado), DRF (Bosque aleatorio distribuido) y XRT (Árboles extremadamente aleatorios) y dos modelos de conjunto apilados (el 2º y 3º) y el mejor modelo es XRT.

Resulta que mis orgullosos modelos de aprendizaje profundo ni siquiera están en la tabla de posiciones.

El cuaderno Jupyter se puede encontrar en Github . Disfrute el resto de la semana.

Referencia: H2O Deep Learning Doc


Aprendizaje automático para datos de partículas cuando no es un físico se publicó originalmente en Hacia la ciencia de datos en Medio, donde las personas continúan la conversación resaltando y respondiendo a esta historia.

Dejá un comentario