El concepto de deployment o implementación en la ciencia de datos se refiere a la aplicacion de un modelo predictivo usando datos nuevos.
En general, la construcción de un modelo no suele ser el final del proyecto. Incluso si el prosito del modelo solo fuera aumentar el conocimiento sobre los datos, los conocimientos adquiridops necesitan ser organizados y luego presentados de una forma tal que el cliente los pueda utilizar.
Dependiendo de los requerimientos, la fase de implementacion puede ser tan simple como generar un reporte o tan compleja como implementar un proceso de ciencia automatizado. En muchos casos, será el cliente y no el analista el que lleve a cabo los pasos de implementación. Por ejemplo una empresa de tarjetas de crédito puede querer implementar un modelo entrenado o un conjunto de modelos (ej. redes neruales, meta-aprendizajes) para identificar rapidamente aquellas transacciones que tienen una alta probabilidad de ser fraudulentas. Sin embargo, incluso si el analista no sea quien lleve a cabo el esfuerzo de implementar, es importante que el cliente conozca y comprenda desde el inicio cuales son las acciones que se van a realizar para poder hacer uso cierto de los modelos creados.
Método de implementación de modelos
En general, hay cuatro formas de implementar modelos en data science.
- Herramientas de data science (o la nube)
- Lenguajes de programacion (Python, Java, etc)
- Scripts de Bases de datos (SQL, etc)
- PMML (Lenguaje de Modelado Predictivo / Predictive Model Markup Language)
Un ejemplo de una herramienta de mineria de datos como Orange para implementar un modelo de un árbol de toma de decisiones.
Otro ejemplo usando un lenguaje de programacion (Python) para implementar un modelo de regresión.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
def fit(X, Y): def mean(Xs): return sum(Xs) / len(Xs) m_X = mean(X) m_Y = mean(Y) def std(Xs, m): normalizer = len(Xs) - 1 return math.sqrt(sum((pow(x - m, 2) for x in Xs)) / normalizer) # assert np.round(Series(X).std(), 6) == np.round(std(X, m_X), 6) def pearson_r(Xs, Ys): sum_xy = 0 sum_sq_v_x = 0 sum_sq_v_y = 0 for (x, y) in zip(Xs, Ys): var_x = x - m_X var_y = y - m_Y sum_xy += var_x * var_y sum_sq_v_x += pow(var_x, 2) sum_sq_v_y += pow(var_y, 2) return sum_xy / math.sqrt(sum_sq_v_x * sum_sq_v_y) # assert np.round(Series(X).corr(Series(Y)), 6) == np.round(pearson_r(X, Y), 6) def line(x): return b * x + A r = pearson_r(X, Y) b = r * (std(Y, m_Y) / std(X, m_X)) A = m_Y - b * m_X return line |
Ejemplo de modelo de regresión utilizando SQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
SELECT slope, ybar - xbar * slope AS intercept FROM ( SELECT SUM((x - xbar) * (y - ybar)) / SUM(x - xbar) * (x - xbar)) AS slope, MAX(ybar) AS ybar, MAX(xbar) AS xbar FROM ( SELECT AVG(y) OVER(rows between unbounded preceding and unbounded following) AS ybar, y, AVG(x) OVER(rows between unbounded preceding and unbounded following) AS xbar, x FROM the_data ) ); |
PMML
Es un lenguaje basado en XML utilizando para definir modelos de estadísticos de ciencia de datos con el objetivo de compartir estos modelos entre diferentes aplicaciones compatibles. Define un estandar no solo para representar modelos de ciencia de datos, sino también para el manejo y transformación de datos (pre y post procesamiento). A PMML lo desarrolla la empresa DMG que evita asi temas de propiedad intelectual e incompatibilidades entre difernetes modelos de implementación. El lenguaje soporta los siguientes métodos de ciencia de datos:
- Regresión
- Redes Neurales
- Support Vector Machines
- Árboles de decisión
- Naïve Bayes
- Clustering
- Secuencias
- Sets de Reglas
- Reglas de asociación
- Series temporales
- Modelos de texto
Procesos PMML
- Pre Procesamiento
- Diccionario de datos: Permite la especificación explicita de valores válidos, inválidos y faltantes.
- Esquema de minería: Se utiliza para definir el tratamiento apropiado que se debe aplicar a los valores faltantes o inválidos.
- Transformaciones: Permite la distretización, normalización y mapeo de variables, incluyendo la gestión de valores por defecto o faltantes.
- Funciones built-in: Expresiones aritméticas, gestion tanto de fecha y hora como de strings. Adicionalmente, se utiliza para implementar operaciones lógicas y booleanas del tipo IF-THEN-ELSE.
- Modelos
- El PMML permite que varias técnicas de modelado predictivo esten expresadas completamente.
- Post Procesamiento
- El escalado de la salida de los modelos que pueden funcionar como targets / objetivos de elementos PMML.
Componentes de PMML
Cabecera: Contiene información general sobre el documento PMML, tales como informacion de derechos de autor del modelo, descripción e informción sobre la aplicacion utilizada para generar el modelo tales como el nombre y la versión. También contiene un atributo timestamp que se puede utilizar para espefificar la fecha de creación del modelo.
Diccionario de datos: contiene definiciones para todos los campos utilizados por el modelo. Es aqui donde se define cada campo como continuo, categórico u ordinal. Dependiendo de su definición, se definen entonces rangos de valores además de su tipo de dato (por ejemplo string, o double).
Transformación de datos: Las transformaciones permiten el mapeo de datos de usuario en un formato mas deseable para ser utilizado por el modelo de datos. PMML define varios tipos de transformaciones de datos simples.
- Normalización: mapea valores a números, la entrada puede ser continua o discreta.
- Discretización: mapea valores continuos a discreto.
- Mapeo de valores: mapea valores discretos a discretos.
- Funciones: dereiva un valor aplicandole una funcion a uno o más parámetros.
- Agregación: se utiliza para sumarizar o recolectar grupos de valores.
Modelo: Contiene la definición del modelo de ciencia de datos. Por ejemplo una red neural del tipo feedfoward se representa en PMML por un elemento “NeuralNetwork” que contiene atributos tales como:
- Nombre del Modelo (modelName)
- Nombre de la Función (functionName)
- Nombre del algoritmo (algorithName)
- Funcion de activación (activationFunction)
- Cantidad de Capas (numberOfLayers)
Esquema de Minería: Lista todos los campos utilizados en el modelo. Puede ser un subconjunto de los campos definidos en el diccionario de datos. Contiene información específica sobre cada campo tales como:
- Nombre (name): debe referirse al campo en el diccionario.
- Tipo de uso (usageType): define la forma en que se utilizará el campo en el modelo. Valores típicos son “activo”, “predecido” o “suplementario”. Los campos predecidos son aquellos cuyos valores son predecidos por el modelo.
- Tratamiento de outliers (outliers): define el tratamiento que tendran los campos outliers (excepciones). PMML permite tratarlos como valores faltantes, extremos (basandose en la definicion de valores altos y bajos del campo en particular) o tambien no modificarlos.
- Politica de reemplazo de valores faltantes (missingValueReplacement): si se especifica este atributo, se reemplaza el valor faltante con los valores indicados.
- Tratamiento de valores faltantes (missingValueTreatment): indica cómo se van a inferir los valores faltantes (ej como valor, mediana, o promedio)
Targets: permite el post-procesamiento de valores predecidos en el formato de escalar si la salida del modelo es continua. Los targets tambien se pueden utilizar como tareas de clasificación. En este caso el atributo “priorProbability” indica una probabilidad por defecto para la categoria target correspondiente. Se utiliza si la lógica de la prediccion no produce un resultado. Esto puede suceder, por ejemplo, si falta un valor de entrada y no hay otro método para tratar esos valores faltantes.