Artículo
· 3 abr, 2020 Lectura de 4 min

Cómo cargar un modelo de ML a InterSystems IRIS (PMML)

¡Hola a todos! 

Hoy hablaremos de cómo cargar un modelo de Machine Learning en IRIS y cómo probarlo, a través de un artículo genial de Niyaz Khafizov. 

Nota: lo siguiente se realizó utilizando Ubuntu 18.04, Apache Zeppelin 0.8.0 y Python 3.6.5.

Introducción

Actualmente, muchas de las diferentes herramientas que están disponibles para data mining permiten desarrollar modelos predictivos y analizar los datos con gran facilidad. La plataforma de datos InterSystems IRIS proporciona un soporte sólido para analizar grandes cantidades de datos e incrementar la velocidad de las aplicaciones, al tiempo que ofrece interoperabilidad junto con modernas herramientas de data mining

En esta serie de artículos estamos explorando las capacidades de InterSystems IRIS para la minería de datos . En el primer artículo configuramos nuestra infraestructura y nos preparamos para empezar. En el segundo artículo construimos nuestro primer modelo predictivo para predecir las especies de flores utilizando instrumentos de Apache Spark y Apache Zeppelin. En este artículo, construiremos un modelo KMeans PMML y lo probaremos en InterSystems IRIS.

Intersystems IRIS proporciona excelentes funcionalidades para ejecutar PMML. Puedes subir tu modelo y probarlo con cualquier tipo de datos, IRIS mostrará su exactitud, precisión, F-score y muchas cosas más.

Comprobación de los requisitos

Primero, descarga jpmml (echa un vistazo a la tabla y selecciona la versión adecuada) y colócalo en cualquier directorio. Si utilizas Scala, esto será suficiente.

Si utilizas Python, ejecuta la siguiente línea de comando en el terminal

pip3 install --user --upgrade git+https://github.com/jpmml/pyspark2pmml.git

Después del mensaje de que la instalación se realizó con éxito, ve a Spark Dependencies y añade la dependencia al jpmml descargado:

Crear modelo KMeans

El builder de PMML utiliza pipelines, por eso modificamos un poco el código escrito en el artículo anterior. Ejectua el siguiente código en Zeppelin:

%pyspark
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.clustering import KMeans
from pyspark.ml import Pipeline
from pyspark.ml.feature import RFormula
from pyspark2pmml import PMMLBuilder

dataFrame=spark.read.format("com.intersystems.spark").\
option("url", "IRIS://localhost:51773/NEWSAMPLE").option("user", "dev").\
option("password", "123").\
option("dbtable", "DataMining.IrisDataset").load() # load iris dataset

(trainingData, testData) = dataFrame.randomSplit([0.7, 0.3]) # split the data into two sets
assembler = VectorAssembler(inputCols = ["PetalLength", "PetalWidth", "SepalLength", "SepalWidth"], outputCol="features") # add a new column with features

kmeans = KMeans().setK(3).setSeed(2000) # clustering algorithm that we use

pipeline = Pipeline(stages=[assembler, kmeans]) # First, passed data will run against assembler and after will run against kmeans.
modelKMeans = pipeline.fit(trainingData) # pass training data

pmmlBuilder = PMMLBuilder(sc, dataFrame, modelKMeans)
pmmlBuilder.buildFile("KMeans.pmml") # create pmml model

El código creará un modelo para predecir las especies utilizando PetalLength, PetalWidth, SepalLength, SepalLength y SepalWidth como características. Utilizaremos el formato PMML.

PMML es un formato para intercambiar modelos predictivos basado en XML. Proporciona una manera para que las aplicaciones analíticas describan e intercambien modelos predictivos generados por la minería de datos y los algoritmos de Machine Learning. Esto nos permite separar el desarrollo de los modelos, de su ejecución.

En el resultado verás una ruta hacia el modelo PMML.

Subir y probar el modelo PMML

Abre IRIS Portal Gestión -> Menu -> Manage Web Applications -> haz clic en tu namespace -> habilita Analytics -> Save.

Ahora, ve a Analytics -> Tools -> PMML Model Tester

Deberías ver algo como la imagen que se muestra a continuación:

Haz clic en New, escribe un nombre para la clase, sube el archivo PMML (la ruta estaba en el resultado), y haz clic en Import . Pega la siguiente consulta SQL en Custom data source :

SELECT PetalLength, PetalWidth, SepalLength, SepalWidth, Species,
 CASE Species
  WHEN 'Iris-setosa' THEN 0
  WHEN 'Iris-versicolor' THEN 2
  ELSE 1
 END
As prediction
FROM DataMining.IrisDataset

Usamos CASE aquí porque el agrupamiento KMedias devuelve conjuntos de números (0, 1, 2)  y si no reemplazamos las especies por números, las contará de manera incorrecta.

Mi resultado es el siguiente:

Aquí puedes ver el análisis detallado:

Si deseas obtener más información sobre qué son los falsos positivos, los falsos negativos..., consulta Precision and recall.

Conclusión

Hemos descubierto que el PMML Model Tester es una herramienta muy útil para probar modelos con cualquier tipo de datos. Proporciona análisis detallados, gráficos y la posibilidad de enviar consultas SQL. Esto te permitirá probar tu modelo sin que necesites de alguna otra herramienta adicional.

Enlaces

Artículo anterior

PySpark2PMML

JPMML

ML Pipelines

Documentación sobre Apache Spark documentation

Comentarios (0)1
Inicie sesión o regístrese para continuar