[Cognitive Services] Extendiendo Face API SDK para LargeFaceList

Hasta hace casi un par de años, la Face API de Microsoft Azure Cognitive Services ofrecía como únicas opciones para persistir rostros, las APIs de FaceList y PersonGroup. Esta situación cambió cuando se introdujeron LargeFaceList y LargePersonGroup

Continue reading “[Cognitive Services] Extendiendo Face API SDK para LargeFaceList”

[Azure Machine Learning] La dicotomía Varianza-sesgo (Bias-Variance)

En el aprendizaje automático supervisado, un algoritmo aprende un modelo a partir de los datos de entrenamiento. El objetivo de cualquier algoritmo de aprendizaje automático supervisado es estimar lo mejor posible una función que pueda mapear las variables de salida según un conjunto de datos de entrada. El error de predicción para cualquier algoritmo de aprendizaje automático se puede dividir en tres partes:

  • Error de sesgo
  • Error de varianza
  • Error irreducible

El error irreducible no puede reducirse independientemente del algoritmo utilizado. Es el error introducido desde el encuadre elegido del problema y puede ser causado por factores como variables desconocidas que influyen en el mapeo de las variables de entrada a la variable de salida.

Error de sesgo

Los sesgos son los supuestos o simplificaciones que se hacen por un modelo para hacer que la función sea más fácil de aprender. En general, los algoritmos lineales tienen un alto sesgo por lo que son rápidos de aprender y más fáciles de entender, pero en general son menos flexibles. A su vez, tienen un rendimiento predictivo más bajo en problemas complejos.

  • Bajo sesgo: sugiere menos suposiciones sobre la forma de la función.
  • Alto sesgo: sugiere más suposiciones sobre la forma de la función.

Los ejemplos de algoritmos de aprendizaje automático de bajo sesgo incluyen: Decision Trees, k-Nearest Neighbors y Support Vector Machines. Los ejemplos de algoritmos de aprendizaje automático de alto sesgo incluyen: Linear Regression, Linear Discriminant Analysis and Logistic Regression.

Error de varianza

La varianza es la cantidad estimada de cambio de la función si se utilizaran datos de entrenamiento diferentes. Idealmente, no debería cambiar demasiado de un conjunto de datos de entrenamiento al siguiente, lo que significa que el algoritmo es bueno. Los algoritmos de aprendizaje automático que tienen una gran varianza están fuertemente influenciados por las especificaciones de los datos de entrenamiento.

En general, los algoritmos de aprendizaje automático no lineales, que son los que tienen mucha flexibilidad para ajustar los datos, tienen una alta probabilidad de poseer una gran variación. Los ejemplos de algoritmos de aprendizaje automático de baja varianza incluyen: Linear Regression, Linear Discriminant Analysis and Logistic Regression. Los ejemplos de algoritmos de aprendizaje automático de alta varianza incluyen: Decision Trees, k-Nearest Neighbors and Support Vector Machines.

El dilema

El objetivo de cualquier algoritmo de aprendizaje automático supervisado es lograr un sesgo bajo y una varianza baja. A su vez, el algoritmo debe lograr un buen rendimiento de predicción. Considerando los algoritmos mencionados anteriormente como ejemplos podemos concluir en lo siguiente:

  • Los algoritmos de aprendizaje automático lineales a menudo tienen un sesgo alto pero una varianza baja.
  • Los algoritmos de aprendizaje automático no lineales a menudo tienen un sesgo bajo pero una varianza alta.

Hay una estricta relación entre la complejidad del algoritmo y la dicotomía varianza-sesgo. Esto se puede entender mucho mejor si apreciamos correctamente la relación entre la complejidad de los algoritmos de aprendizaje y los errores que se pueden encontrar en los datos de entrenamiento y datos de validación.

La parametrización de los algoritmos de aprendizaje automático es a menudo una batalla para equilibrar el sesgo y la varianza. A continuación, se muestran dos ejemplos de configuración para algoritmos específicos:

  • El algoritmo k-nn (k-nearest neighbors) tiene un sesgo bajo y una varianza alta, pero el intercambio puede modificarse aumentando el valor de k, lo que aumenta el número de vecinos que contribuyen a la predicción y, a su vez, aumenta el sesgo del modelo.
  • El algoritmo SVM (Support Vector Machine) tiene un sesgo bajo y una varianza alta, pero se puede cambiar aumentando el parámetro que influye en el número de violaciones del margen permitido en los datos de entrenamiento, lo que aumenta el sesgo pero disminuye la varianza.

No hay escapatoria a la relación entre sesgo y variación en el aprendizaje automático:

  • Aumentar el sesgo disminuirá la varianza.
  • Aumentar la varianza disminuirá el sesgo.

Existe una relación de intercambio entre estas dos preocupaciones, el sesgo y la varianza proporcionan las herramientas para comprender el comportamiento de los algoritmos de aprendizaje automático en la búsqueda del mejor rendimiento predictivo.

[Azure Machine Learning] Sobreajuste y subajuste (Overfitting and Underfitting)

Se le llama inducción al aprendizaje de conceptos generales a partir de ejemplos específicos. Esto es contrario a la deducción que busca aprender conceptos específicos a partir de reglas generales.

Considerando lo anterior, podemos deducir que una inducción eficiente es clave para el desarrollo de modelos predictivos en el aprendizaje automático supervisado.

Generalización en Machine Learning

La capacidad de generalización nos indica qué tan bien los conceptos aprendidos por un modelo de aprendizaje automático se aplican a ejemplos específicos que el modelo no vio cuando estaba aprendiendo. El objetivo de un buen modelo de aprendizaje automático es generalizar bien los datos de entrenamiento. Esto nos permite hacer predicciones en el futuro sobre los datos que el modelo nunca ha visto. Sobreajuste y subajuste son terminologías empleados en el aprendizaje automático para hacer referencia a qué tan bien un modelo generaliza nuevos datos ya que el ajuste excesivo y el ajuste insuficiente son las dos causas principales del rendimiento deficiente de los algoritmos de aprendizaje automático.

Sobreajuste

El sobreajuste hace referencia a un modelo que se sobre-entrena considerando cada mínimo detalle de los datos de entrenamiento. Esto significa que el ruido o las fluctuaciones aleatorias en los datos de entrenamiento son recogidos y aprendidos como conceptos por el modelo. El problema es que estos conceptos no se aplican a nuevos datos y tienen un impacto negativo en la capacidad de los modelos para generalizar.

Este sobre-entrenamiento suele darse con mayor probabilidad en modelos no lineales, por ello muchos de estos algoritmos de aprendizaje automático también incluyen parámetros o técnicas para limitar y restringir la cantidad de detalles que aprende. Algunos ejemplos de algoritmos no lineales son los siguientes:
  • Decision Trees
  • Naive Bayes
  • Support Vector Machines
  • Neural Networks

Sobreajuste y subajuste en problemas de clasificación

Subajuste

El subajuste hace referencia a un modelo que no puede modelar los datos de entrenamiento ni generalizar a nuevos datos. Un modelo de aprendizaje automático insuficiente no es un modelo adecuado. Las estrategias para mitigar un ajuste insuficiente son variadas y dependen del contexto.

Como puede deducirse, el subajuste suele darse con mayor probabilidad en modelos lineales, como por ejemplo:
  • Logistic Regression
  • Linear Discriminant Analysis
  • Perceptron

Sobreajuste y subajuste en problemas de regresión

¿Cómo detectarlos?

Tanto el sobreajuste como el subajuste perjudican el rendimiento de un modelo. Lo bueno es que existen algunas técnicas que se pueden utilizar para evaluar los algoritmos de aprendizaje automático:

  • Retención de conjunto de datos de validación.
  • Validación cruzada dejando uno fuera (Leave-one-out cross-validation or LOOCV).
  • Validación cruzada basada en remuestreo por grupos o pliegos (K-fold cross-validation)
  • Bootstrapping o remuestreo de Bradley Efron

La técnica de remuestreo más popular es la validación cruzada de k-fold, el cual permite entrenar y probar el modelo k-veces con diferentes subconjuntos de datos de entrenamiento y construir una estimación más objetiva del rendimiento de un modelo de aprendizaje automático cuando trabaja con datos invisibles.

En el caso del bootstrapping, la idea básica es dado un conjunto datos de entrenamiento extraer de esta tabla aleatoriamente y con reemplazo nuevas tablas de datos, cada una de la cuales deberá tener el mismo tamaño que la tabla original. Entonces modelo se estima en cada una de estas nuevas tablas (boostraps) y luego las predicciones se hacen para la tabla original de datos o conjunto de entranamiento.

[Azure Machine Learning] Criterios para la selección de algoritmos de aprendizaje

Puede que existan algunas consideraciones que debamos tener en cuenta para seleccionar el “mejor” algoritmo, pero la verdad es de que no hay forma de saberlo hasta que empecemos a evaluar y comparar modelos construidos con diferentes de ellos.

Para que logremos construir un buen modelo predictivo, no es suficiente con hacer una lista de comprobación de lo que tenemos a la mano, es menester ir construyendo hasta obtener un modelo que nos ofrezca un equilibrio entre la precisión (“precision”) y la exhaustividad (“recall”), que son conceptos que ahondaremos más adelante. Dejando lo anterior claro empecemos con algunos criterios:

Naturaleza del problema

Como tratamos en una anterior publicación. Este primer considerando nos invita a identificar correctamente que tipo de problema estamos intentando resolver para limitar el rango de posibles algoritmos a utilizar.

Número y estructura de las características de entrada

Existen algoritmos que trabajan mejor con más características (columnas) que otros, algoritmos que necesitan una gran cantidad de datos (filas) para poder trabajar adecuadamente y algoritmos que incluso se traban cuando existen una gran cantidad de características.

Fuente: https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

Complejidad del modelo

Los algoritmos de aprendizaje más simples hacen uso de líneas para ajustar los datos: los algoritmos de regresión lineal suponen que las tendencias de datos siguen una línea recta y los algoritmos de clasificación lineal suponen que las clases pueden estar separadas mediante una línea recta. Estas suposiciones no son tan malas para algunos problemas, pero en otros podrían causar un sub-ajuste (underfitting).

Límite de clase no lineal: la dependencia de un algoritmo de clasificación lineal se traduciría en baja precisión.

Datos con tendencia no lineal: el uso de un método de regresión lineal generaría errores mucho mayores que los necesarios.

En general, mientras más complejo es un algoritmo de aprendizaje, mayor precisión se puede obtener, pero mucha precisión sobre los datos de entrenamiento también podría causar un sobre-ajuste (overfitting).

Velocidad de entrenamiento

El tiempo de entrenamiento requerido para construir un modelo predictivo es muy variado, algunos algoritmos son más sensibles a la cantidad de puntos de datos que otros, mientras que otros soportan muchos hiperparámetros y son más complejos. Si el tiempo es limitado, esto puede determinar la elección del algoritmo.

Uso de memoria o recursos de computo

Dependiendo a la complejidad, la cantidad de datos suministrados y diversos factores, cada algoritmo usará una diferente cantidad de recursos. Esto podría ser decisivo para la elección de un algoritmo, incluso si trabajamos en Azure Machine Learning hay que tener en cuenta los posibles límites que podrían existir en cuanto al servicio y el tipo de suscripción vigente.

Número de hiperparámetros

Los hiperparámetros son números que afectan al comportamiento del algoritmo, como la tolerancia a errores o la cantidad de iteraciones, o bien opciones de variantes de comportamiento del algoritmo. Mientras más hiperparámetros tenga un algoritmo, mayor exploración de prueba y error deberemos hacer para asegurarnos de encontrar la mejor combinación.

La ventaja es que tener muchos parámetros normalmente indica que un algoritmo tiene mayor flexibilidad. A menudo, puede lograr una precisión muy alta siempre y cuando se encuentre la combinación correcta de configuraciones de parámetros.

Fuente: https://docs.microsoft.com/en-us/azure/machine-learning/studio/algorithm-choice

[Azure Machine Learning] Escenarios supervisados vs. no supervisados en Azure ML

Una vez que contamos con las fuentes de datos necesarias y los datos se encuentran limpios, ya es momento de empezar a planificar la construcción del modelo predictivo que mejor represente nuestros datos.

Fuente: Microsoft

Existen muchos algoritmos para la construcción de modelos predictivos en el ecosistema del aprendizaje automático y antes de elegir uno hay que tener bien en claro que tipo de problema de aprendizaje automático necesitamos resolver.

Aprendizaje supervisado

En el aprendizaje supervisado, cada dato de interés se encuentra etiquetado y dependiendo al tipo de variable que deseemos predecir, nos encontraremos con problemas de regresión (cuando el dato de interés tiene un valor continuo) o clasificación (cuando el dato de interés tiene un valor discreto). El objetivo del aprendizaje supervisado es estudiar muchos ejemplos etiquetados y, luego, poder realizar predicciones sobre datos de interés futuros.

Clasificación

Identificar si un cáncer es benigno o maligno en base a una fotografía es un ejemplo de clasificación binaria, y un sistema de reconocimiento de letras es un ejemplo de clasificación multiclase. Vale mencionar que también podemos usar algoritmos de clasificación multiclase como si fueran de clasificación binaria.

Los algoritmos de detección de anomalías son un caso especial de clasificación. Debido a que los casos anómalos suelen representar menos de un 1% de la muestra total, no podemos entrenar un clasificador binario para identificar qué es una anomalía. Entonces, un detector de anomalías se entrena para identificar características comunes de los datos para que luego básicamente se comporte como un clasificador binario entre dos clases: muestras anómalas y muestras no anómalas (los datos que comparten características comunes).

Regresión

La predicción de precios de venta de departamentos o el stock son ejemplos de regresión.

Aprendizaje no supervisado

Los puntos de datos no tienen etiquetas asociadas a ellos. En cambio, el objetivo de un algoritmo de aprendizaje no supervisado es organizar los datos de alguna manera o de describir su estructura. Esto puede significar agruparlos o encontrar diferentes formas de ver datos complejos para que parezcan más simples.

Agrupación

Resumen

Usamos métodos de aprendizaje supervisado cuando tenemos información sobre el valor que deseamos predecir y métodos de aprendizaje no supervisado cuando no.

La mayoría de los fundamentos teóricos de los algoritmos de aprendizaje automático disponibles en el ecosistema son públicos y se encuentran bien documentados. Microsoft Azure Machine Learning Studio nos ofrece algunas implementaciones de los principales algoritmos de aprendizaje automático existentes, pero vale mencionar que no son todos los que existen.

Fuente: https://machinelearningmastery.com

Nota: Actualmente no tengo ni idea de cuantos algoritmos de aprendizaje puedan existir 😂!

[Azure Machine Learning] Ingeniería y selección de características

“Los datos de entrenamiento constan de una matriz compuesta de ejemplos (registros u observaciones almacenados en filas), cada uno de los cuales cuenta con un conjunto de características (variables o campos almacenados en columnas). Se espera que las características especificadas en el diseño experimental caractericen los patrones de los datos. A pesar de que muchos de los campos de datos sin procesar se pueden incluir directamente en el conjunto de características seleccionado que se usa para entrenar un modelo, a menudo se da el caso de que se requiere construir características adicionales (diseñadas) a partir de las características existentes en los datos sin procesar para generar un conjunto de datos de entrenamiento mejorado.” – Ingeniería de características en ciencia de datos

En resumen, la ingeniería de características consiste en actualizar o crear características pertinentemente a partir de los datos que tengamos sin procesar para mejorar la eficacia predictiva del algoritmo de aprendizaje.

Y vale mencionar que esta tarea debe desarrollarse con mucho cuidado ya que dependiendo del tipo de solución/modelo que estemos construyendo podría incluso convenir o perjudicar un mismo procedimiento.

Actualización de metadatos

Si el tipo de dato o variable establecido automáticamente para las columnas de nuestro conjunto de datos no es el adecuado, lo que tenemos que hacer es emplear el módulo Edit Metadata para corregirlo.

Combinación de conjuntos de datos (por columnas)

Si los datos vienen desde múltiples fuentes y los conjuntos de datos están relacionados por alguna columna, Azure Machine Learning Studio nos ofrece un par de alternativas para crear un único conjunto de datos:

Join Data Con este módulo podemos combinar dos conjuntos de datos usando JOIN de una forma muy similar a como se hace en SQL.

Apply SQL Transformation Con este módulo podemos combinar hasta tres conjuntos de datos usando SQLite.

Agrupación de valores de características (por filas)

Si lo que necesitamos es organizar valores de características en grupos podríamos emplear los módulos:

Group Categorical Values Este módulo combina varios valores de características categóricas en un solo nuevo nivel según se lo configure.

Group Data into Bins Este módulo permite agrupar valores continuos en “contenedores” o categorías a través de diferentes métodos.

Transformación de valores o construcción de características

Según las circunstancias, necesitaremos manipular los valores para que puedan ser procesados sin que generen inconvenientes. Azure Machine Learning Studio ofrece muchas opciones y en esta ocasión veremos solo un par:

Normalize Data El objetivo de la normalización es cambiar los valores continuos en el conjunto de datos para usar una escala común, sin distorsionar las diferencias en los rangos de valores o perder información. Por ejemplo, supongamos que un conjunto de datos de entrada contiene una columna con valores que van de 0 a 1, y otra columna con valores que van de 10,000 a 100,000. La gran diferencia en la escala de los números podría causar problemas cuando se intenten combinar los valores como características durante el modelado.

Feature Hashing Este módulo convierte los valores arbitrarias de texto en índices. En lugar de asociar cada característica de texto (palabras/frases) a un índice determinado, este método funciona mediante la aplicación de una función de hash a las características y el uso de sus valores de hash como índices directamente.

Apply SQL Transformation Este módulo nos permite generar nuevas columnas apoyándonos de las funciones SQLite disponibles.

Generación de características basadas en recuentos

Generación de características de discretización

Desplegando características desde una sola columna

Selección o reducción automática de características

Azure Machine Learning nos puede ayudar a determinar que características en un conjunto de datos tienen la mayor capacidad predictiva.

Filter Based Feature Selection Este módulo aplica pruebas estadísticas a las variables contenidas en el conjunto de datos y califica las mejores columnas en base a cual podría contener las más altas capacidades predictivas.

Principal Component Analysis El análisis de componentes principales es una técnica que se utiliza para enfatizar la variación y resaltar patrones fuertes en un conjunto de datos. De esta manera se puede reducir el número de columnas en un conjunto de datos y a menudo también se utiliza para facilitar la exploración y visualización de datos.

[Azure Machine Learning] Limpieza y saneamiento de datos

En todo experimento, si no se reciben buenos insumos, los resultados podrían ser imprecisos o completamente erróneos. Por ello, es de suma importancia deshacerse de aquellos datos inadecuados.

En la siguiente lista veremos algunos de los módulos que tenemos a nuestra disposición para la limpieza o ajuste de datos. Vale mencionar que solo exploraremos una parte de todos los módulos de transformación de datos que nos facilita Azure Machine Learning Studio.

Para empezar con la limpieza de datos, opcionalmente podríamos apoyarnos del módulo Summarize data para identificar datos relevantes a esta tarea.

Identificar y abordar los datos faltantes o nulos

Ya sea través de los, antes discutidos, resúmenes univariados o del módulo Summarize data, Azure Machine Learning Studio nos facilita la información sobre el Missing Value Count, el cual nos ayuda a reconocer dónde se encuentran los datos faltantes o nulos.

Para abordar aquellos datos tenemos que emplear el módulo Clean Missing Data, ya que este módulo nos permite reemplazar los datos o eliminar filas/columnas completas a través de diferentes técnicas en una o más columnas seleccionadas.

Identificar y abordar los valores atípicos

Un valor atípico es una observación que es numéricamente muy distante del resto de los datos. Estos datos pueden llevarnos a conclusiones equivocadas sobre lo que describe al común de nuestro conjunto de datos.

Las formas más sencillas de identificar valores atípicos son a través del diagrama de caja y bigotes (box plot) y del diagrama de dispersión (scatter plot). Diagramas que conocimos previamente en resúmenes multivariados y visualización personalizada de distribución de datos.

Para abordar los valores atípicos tenemos que emplear el módulo Clip Values. Este módulo nos permite reemplazar los datos atípicos a través de diferentes técnicas en una o más columnas seleccionadas y solo funciona en columnas que contengan datos o variables continuas como los números o las fechas.

Por último, vale mencionar que los valores atípicos podrían ser indicativos de datos que pertenecen a una población diferente del resto de las muestras establecidas.

Eliminar datos duplicados

Puede que en algunas ocasiones terminemos con datos duplicados. Para ello, Azure Machine Learning nos facilita el módulo Remove Duplicate Rows, el cual solo requiere que especifiquemos que columnas deben ser o no evaluadas por que se deshaga de los registros duplicados.

Balanceo artificial de datos

Hay ocasiones en que la variable que se desea analizar está subrepresentada, para ello el módulo SMOTE nos permite aumentar el número de ejemplos de baja incidencia en un conjunto de datos utilizando un sobremuestreo de minorías sintéticas según el porcentaje que especifique.

El uso de SMOTE no garantiza modelos más precisos. Se debe intentar experimentar con diferentes porcentajes, conjuntos de funciones y números de vecinos más cercanos para ver cómo la adición de casos influye en el modelo.

Manipulación personalizada de datos

Habrán ocasiones en que los módulos de transformación previamente compartidos no serán suficientes para la limpieza o reparación adecuada de nuestros datos, para aquellas ocasiones podemos hacer uso del módulo Apply SQL Transformation, el cual nos permite correr SQLite para manipular los conjuntos de datos. Para esta tarea de limpieza podríamos valernos por ejemplo del WHERE, ISNULL, COALESCE o REPLACE.

Eliminar columnas innecesarias

Para deshacernos de las columnas del conjunto de datos que no aportan nada para el experimento, como por ejemplo un ID o código auto-generado de registro, podemos utilizar el módulo Select Columns in Dataset.

[Azure Machine Learning] Resúmenes multivariados y visualización personalizada de distribución de datos

El principal propósito de los resúmenes multivariados es el de describir el comportamiento y la relación entre dos o más variables a través del análisis y el descubrimiento de patrones en los datos visualizados.

Usando Azure Machine Learning Studio Experiment Designer

La forma más sencilla de visualizar resúmenes multivariados es a través de la acción “Visualizar” de los módulos con conjuntos de datos de salida y la opción “comparar con”. Vale mencionar que esta opción no siempre esta disponible ya que dependerá de la cantidad de registros en el conjunto de datos, si son demasiados simplemente no esta disponible.

Usando Módulos de Lenguaje Python/R

Execute R Script

Azure Machine Learning Studio es compatible con la distribución típica de R que está disponible en CRAN y Microsoft R Open (MRO), que incluye todos los paquetes básicos de R, más los paquetes Revo. Podemos especificar qué versión de R utilizar en un experimento. Sin embargo, no podemos instalar ninguna otra versión de R en el área de trabajo.

Para el presente ejemplo usaremos el paquete ggplot2. Para mayor información sobre ese paquete, visitar el siguiente enlace.

Para visualizar el resultado debemos consultar la salida R Device.

Y dar click en Visualizar.

Execute Python Script

Actualmente, Azure Machine Learning Studio es compatible con las versiones 2.7.11 y 3.5 de Python. Podemos especificar qué versión de Python utilizar en un experimento. Sin embargo, no podemos instalar ninguna otra versión de R en el área de trabajo.

Aunque no es lo recomendable, solo para hacer este ejemplo usaremos rplot. Esta librería ya esta descontinuada y además, desde el 1 de enero de 2019, todas los nuevas funciones de pandas solo serán compatibles con Python 3.

Para visualizar el resultado solo debemos consultar la salida Python Device y dar click en Visualizar.

Usando Microsoft Azure Notebooks

Azure Machine Learning implementa Jupyter Notebooks, una aplicación web interactiva de código abierto que sirve para escribir y ejecutar código Python o R. Los Notebooks pueden ser usados para compartir código y documentación desde un mismo espacio, así como para construir modelos de Machine Learning usando R/Python o para invocar experimentos existentes.

R Notebook

Cuando abrimos un dataset utilizando Jupyter Notebooks, Azure se encarga de generar el código R que descarga esa data.

Y solo tenemos que preocuparnos de agregar nuestras instrucciones y listo.

Python Notebook

Para este último ejemplo usaremos un Python 3 Notebook y el paquete seaborn para la visualización de datos.

Aunque en la página oficial de seaborn se menciona que requiere Python 3.5+, al parecer podemos trabajar algunas cosas con el Python 3.4.5 que nos soporta Python Notebook.

[Azure Machine Learning] Resúmenes univariados y visualización simple de distribución de datos

Explorar los conjuntos de datos y examinar su distribución para entender como cada elemento, con su respectivo tipo y frecuencia, podría tener menor o mayor impacto en la calidad de un experimento es sin duda una de las tareas más importantes dentro de la preparación de los datos para la experimentación en Azure Machine Learning.

Esencialmente existen 2 tipos de datos o variables:

  • Continuos. Son cuantitativos y expresan medidas o valores numéricos. Por ejemplo, la edad (9, 27, 42, …), los años de experiencia (0, 1, 2, …), las ganancias mensuales (100, 1000, 10000, …), etc.
  • Categóricos. Son cualitativos y expresan características, estos se pueden clasificar de la siguiente manera:
    • Nominal. No se puede definir un orden natural entre sus categorías, por ejemplo, el sexo (hombre, mujer), la nacionalidad (peruana, boliviana, colombiana, venezolana, …), el estado civil (soltero, viudo, divorciado, …), etc.
    • Ordinal. Es posible establecer relaciones de orden entre las categorías, por ejemplo, el rango militar (soldado, sargento, teniente, …), el nivel escolar (primaria, secundaria), el nivel de prioridad (alta, media, baja), etc.
    • Por Intervalo. Proceden de variables cuantitativas agrupadas en intervalos, por ejemplo, la edad ([0-12] niños, [13-17] adolescentes, [18-24] jóvenes, …), etc.

Un resumen univariado nos permite describir el contenido de una única columna de datos a través del análisis de la sumatoria, agrupamiento o cálculo de valores estadísticos de distribución de datos.

En Azure Machine Learning Studio, si el resumen univariado es para una variable categórica, este resumen contendrá información sobre la frecuencia de los datos, la cantidad de valores únicos y la cantidad de datos faltantes.

Por otra parte, si se tratase de una variable continua, contaremos también con el resultado de funciones estadísticas como el promedio, la mediana, el valor mínimo, el valor máximo y la desviación estándar.

Estos resúmenes univariados de variables pueden ser visualizados en histogramas o diagramas de caja. Para el caso de las variables categóricas, estas solo pueden ser vistas en histogramas.

Finalmente, para los resúmenes visuales, Azure Machine Learning también provee opciones avanzadas de visualización:
  • Escala logarítmica. Sirve para introducir largos rango de datos en las representaciones visuales con menos ruido ya que los valores con menos frecuencia suelen verse muy pequeños. También sirve para crear valores absolutos cuando hay valores negativos y positivos en los datos.
  • Contenedores. Permite cambiar el número de agrupaciones de los datos continuos para su visualización. Es importante aumentar o disminuir el número de grupos de datos con cuidado para que no nos lleve a conclusiones erróneas. Alterar el número de contenedores también alterará la frecuencia de la agrupación de datos actual.
  • Distribución acumulativa. Muestra la probabilidad de a que rango superior o inferior podría pertenecer un valor que se toma aleatoriamente del conjunto de datos.
  • Densidad de probabilidad. Describe la probabilidad relativa según la cual dicha variable aleatoria tomará determinado valor.

[Azure Machine Learning] Importar/Exportar datos a través de consultas Hive

En anteriores publicaciones, hemos aprendido a trabajar con bases de datos estructuradas a través de SQL Azure y bases de datos locales. Pero ¿qué podríamos hacer si nuestra fuente de datos no esta estructurada?

Apache Hive es un sistema de almacenamiento de datos para Apache Hadoop y hace posible el resumen, consulta y análisis de datos a través de HiveQL, que es un lenguaje de consulta similar a SQL. Hive nos permite proyectar una estructura en datos no estructurados para realizar consultas sin la necesidad de tener conocimientos de Java o MapReduce.

Importar usando consultas Hive

Como el objetivo de esta publicación no es que aprendamos sobre los fundamentos de Apache Hadoop o HDInsight, lo mejor será seguir este simple Quickstart para tener nuestro servicio en línea, así como un conjunto de datos de ejemplo para probar.

Una vez listo este primer ejercicio, ya podemos utilizar el módulo de importación de datos en nuestro experimento de la siguiente manera:

Tener en consideración que el parámetro Data Source debe ser Hive Query y que el parámetro Container name debe coincidir con el contenedor que elegimos para nuestro Hadoop Cluster.

Exportar usando consultas Hive

Ahora, si lo que queremos hacer es exportar un conjunto de datos, tenemos que emplear el módulo de exportación. Para el presente ejemplo alteré el conjunto de datos seleccionando solamente las columnas deviceplatform, devicemake, devidemodel.

En caso de que la tabla no exista, se creará una tabla externa y será llenada con la información correspondiente como se puede apreciar a continuación:.

Recursos

Si quedan más preguntas sobre los recursos y servicios previamente utilizados, recomiendo leer la documentación oficial a través de los siguientes enlaces:

What is Apache Hive and HiveQL on Azure HDInsight?
https://docs.microsoft.com/en-us/azure/hdinsight/hadoop/hdinsight-use-hive

Use Azure storage with Azure HDInsight clusters
https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-use-blob-storage