[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

[Azure Machine Learning] Importar datos desde archivos locales y sitios web

Antes de ir con el meollo del asunto, primero conozcamos el Repositorio de Aprendizaje Automático del Centro de Aprendizaje Automático y Sistemas Inteligentes de la Universidad de California ya que es el sitio desde donde extraeremos los datos para los ejemplos.

Importando datos desde un archivo local

Ahora, de todos los recursos que hay seleccionemos el conjunto de datos del censo de ingresos, descarguemos el archivo y seguido de ello, hay que agregar el archivo como un conjunto de datos a través del portal de Azure Machine Learning Studio.

Si queremos utilizar este conjunto de datos en alguno de nuestros experimentos de Azure Machine Learning, lo único que debemos hacer es ubicarlo en “My Datasets” en el panel de herramientas y arrastrarlo hacia el diagrama.

Importando datos desde un sitio web

Azure Machine Learning también nos permite extraer fuentes de datos desde la web de forma directa, así como re-aprovecharlos si es que se encuentran en la memoria cache y para ello solo tenemos que emplear la opción WEB URL via HTTP del módulo de importación de datos. En esta ocasión, usemos la siguiente URL: http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data, que hace referencia al mismo conjunto de datos del ejemplo anterior.

[Azure Machine Learning] Importar/Exportar datos con SQL Azure y bases de datos locales

En una anterior publicación aprendimos como utilizar Azure blob storage para la adquisición de datos en Azure Machine Learning Studio y no fue nada complicado, pero ¿cómo podríamos hacer si nuestra fuente de datos es una base de datos relacional como SQL Azure?.

Importando desde SQL Azure

Para nuestro beneficio, este proceso es similar al realizado con Azure blob storage, lo único que tenemos que hacer es utilizar el módulo de importación de datos y, a través del formulario o el asistente de importación, establecer las credenciales correspondientes a nuestra base de datos.

Para completar el presente ejemplo tenemos que adaptar el conjunto de datos descargado en el anterior capítulo y utilizar la estructura definida por el siguiente script:

Una vez todo listo, solo falta establecer la consulta de base de datos, aceptar y verificar que todo nuestro conjunto de datos este correctamente importado.

Exportar desde SQL Azure

Ahora si lo que deseamos es realizar el proceso inverso, esto es ya no leer de SQL Azure, sino escribir, tenemos que utilizar el módulo de exportación. La única consideración que hay que tener en este punto es que el orden y los nombres de las columnas de la tabla de destino en nuestra base de datos deben corresponder con el orden y los nombres de columna listados y separados por coma que serán guardados.

Importar desde base de datos local

Hasta ahora nada complicado, pero ¿qué deberíamos hacer si el conjunto de datos que necesitamos para trabajar se encuentra en una base de datos local?

La instalación de Microsoft Data Management Gateway es requerida para que Azure Machine Learning Studio pueda conectarse a una base de datos local y vale resaltar que esto solo se puede hacer si contamos con un recurso de Machine Learning Studio workspace del tipo Standard aprovisionado a través de nuestro portal de Azure. Adicionalmente, hay una serie de consideraciones con este componente:

  • Solo se puede instalar un Data Management Gateway por computadora.
  • Un Power BI Gateway y un Data Management Gateway no pueden ser instalados en una misma computadora.
  • No es necesario que el gateway este instalado en el mismo servidor de base de datos y no es recomendable tampoco porque podría afectar la eficiencia ya que competirían por recursos locales.
  • El Data Managament Gateway no puede ser compartido a través de workspaces.
  • Solo el administrador del workspace puede crear un gateway.
  • La computadora local necesita contar con la habilidad de acceder a los datos, el puerto por defecto es el 8050 y estas características deben considerarse para la configuración de los firewalls existentes.

Para crear un Data Gateway tenemos que ir a Settings del portal de Azure Machine Learning Studio, establecer un nombre para la puerta de acceso, guardar la llave auto-generada, descargar el Data Management Gateway, ejecutar el instalador, dar continuar todo el tiempo, abrir la aplicación instalada y dar continuar hasta el momento que nos pidan ingresar la llave para registrar la puerta de enlace.

Una vez hecho todo eso, ya podemos empezar a hacer uso de nuestro módulo de importación y por un asunto de compatibilidad, se recomienda utilizar Microsoft Edge. Continuamos seleccionando la opción On-Premise SQL Database, establecemos los datos de conexión correspondientes junto con nuestras credenciales y establecemos la consulta a la base de datos.

Completadas aquellas tareas solo quedaría verificar nuestro conjunto de datos y festejar.

[Azure Machine Learning] Importar/Exportar datos con Azure blob storage

Si recordamos el proceso de la Ciencia de Datos, nuestro descubrimiento de conocimiento empieza con la compresión y adquisición de datos. Para ello, Azure Machine Learning Studio nos permite trabajar con una variedad de fuentes de información y en esta ocasión aprenderemos como hacerlo con Azure blob storage.

Importando desde Azure Blob Storage

Para importar un conjunto de datos desde Azure blob storage lo primero tenemos que tener en cuenta es que Azure Machine Learning Studio sólo admite el tipo de cuenta Storage (general purpose v1), y que sólo en el caso de que elijamos como tipo de autenticación “Storage Account”, la cuenta de almacenamiento debe tener desactivada la configuración “Secure transfer required”. Para el caso de una autenticación del tipo “Public or SAS” no hay nada de qué preocuparse, basta con que la URL sea válida.

Exportando a Azure Blob Storage

En Azure Machine Learning Studio también tenemos un módulo para exportar a Azure blob storage, esto es útil si por ejemplo deseamos guardar estados en el experimento, y la configuración es similar a la del módulo de importación, sólo hay que tener en cuenta el formato de exportación.

En el anterior ejemplo, el modo de escritura del blob storage esta en Sobrescribir, lo cual significa que los datos serán sobrescritos cada vez que el conjunto de datos sea ejecutado. Si deseáramos realizar la operación de escritura solo cuando los datos tengan algún cambio, deberíamos seleccionar la opción Use cached results. Si el modo de escritura del blob storage esta en Error, que es la preferencia por defecto, recibiremos un error si es que el archivo ya existe.