Jupyter y Notebooks en Azure Machine Learning

Que es Jupyter Notebooks?

jupyterLogoJupyter Notebooks es un editor web que permite editar un documento que contiene lineas de código que se ejecutan de forma interactiva. Podemos añadir instrucciones en R o Python que analicen o realicen predicciones sobre datos. El objetivo es mostrar los resultados obtenidos o gráficas en el documento.

Editamos el documento, añadiendo tipos de bloques (celdas en Jupyter):

  • MarkDown: para añadir texto. En el texto podemos añadir marcas que al ejecutar el bloque generaran una estilo deseado (negrita, listas…). También soporta Latex.
  • Code: para añadir las lineas de código.
  • Raw: para añadir texto. En este caso no se podrán añadir marcas de estilo.
  • Heading: para dar estructura al documento. Por ejemplo para exportar a PDF.
Ejemplo de Jupyter que analiza un array de enteros

Ejemplo de Jupyter que analiza un array de enteros

Que es Azure Machine Learning Notebooks?

Es el servicio PAAS dentro Azure Machine Learning que ofrece Jupyter Notebooks. En Azure tan solo podemos usar Python o R. Adjunto enlace con ejemplo introductorio para R: Introduction to Azure ML R notebooks. Mediante la librería AzureML nos vamos a poder conectar a nuestro entorno de trabajo en Azure ML Studio. Con lo que vamos a poder definir:

  • Cargar o descargar datasets
  • Acceder a datesets de experimentos
  • Publicar o consumir webservices
Publicado en Azure, Azure Machine Learning, Cortana Analytics | Deja un comentario

Compatibilidad entre versiones de NET

Dudas de compatibilidad entre versiones de NET

Nuestra aplicación NET se ejecuta en una versión de Framework. Se nos plantean múltiples dudas cuando queremos actualizar la versión del Framework de nuestra aplicación:

Dotnet-apiport

La herramienta dotnet-apiport viene a rescatarnos:-). El proyecto esta disponible en githup. Adjunto enlace para descargar las diferentes versiones.
Esta herramienta analiza los ensamblados y las dependencias que se usan en nuestra aplicación. Y determina las incompatibilidades contra una versión a actualizar. El resultado es una html que contiene la lista de ensamblados con sus incompatibilidades.

C:\Tools\ApiPort\ApiPort> apiport analyze -f C:\basura2\G\DSH\DSH_IIS\DSH_IIS  -t ".NET Framework, Version=4.5.2" -b -r HTML

Los parámetros a actualizar son:

  • Parámetro f: indicaremos el directorio (también se podría fichero) donde se encuentra nuestra aplicación.
  • Parámetro t: indicaremos la versión en formato (Target Name), Version=(Version) a la que queremos migrar. Podemos obtener la lista de targets y Versiones disponibles con el siguiente comando:
    apiport listTargets
    

Por ejemplo:

C:\Tools\ApiPort\ApiPort>apiport analyze -f C:\basura2\G\DSH\DSH_IIS\DSH_IIS  -t
 ".NET Framework, Version=4.5.2" -b -r HTML
Microsoft (R) API Portability Analyzer v1.2.1.alpha.00031
Copyright (C) Microsoft Corporation. All rights reserved.

This tool analyzes .NET assemblies to determine possible problems moving between
 .NET platforms (such as
Windows Store, desktop, Mono, .NET Core, etc) as well as between .NET Framework
versions (ie 4.x->4.y).

To learn more about how this tool works, including the data we are collecting,
go here - http://go.microsoft.com/fwlink/?LinkId=397652

Detecting assembly references                     [Done]
Sending data to service                           [Done]
Writing report                                    [Done]

Wrote output to file:
C:\Tools\ApiPort\ApiPort\ApiPortAnalysis(3).html

Esta herramienta, dispone también sobre plugin sobre Visual Studio 2015. En este caso la ventaja que nos ofrece esta solución es que nos sitúa en la linea de código con la incidencia de incompatibilidad.

Publicado en Desarrollo, net | Etiquetado | Deja un comentario

Glosario de Términos Autenticación

Protocolos de Autenticación

  • NTLM: Protocolo propietario de autenticación pensado para redes corporativas.
  • Kerberos: Protocolo propietario de autenticación pensado para redes corporativas. Es mejor que NTLM.
  • Web Services Federation Language (WS-Federation): Es un protocolo que permite Single Sign-on (SSO) de los usuarios para que accedan a aplicaciones diferentes con tan solo una identidad.
  • Security Assertion Markup Language (SAML 2.0): Es otro protocolo que permite Single Sign-on (SSO).
  • OAuth 2.0: Es otro protocolo Single Sign-on (SSO) que permite la autenticación contra un proveedor que implemente este protocolo (lo usan entidades como Microsoft, Facebook, Twitter, Google, …).
  • OpenId Connect: Extiende OAuth 2.0 para autorización.

Servicios Microsoft que Autentican

  • Active Directory (AD): El clásico directorio activo alojado en un servidor. Se autentica mediante Kerberos o NTML; no es recomendable utilizar esta servicio en un entorno de internet.
  • Microsoft Azure Active Directory (AAD): Un servicio SAAS de Azure que implementa un Active Directory. Soporta todos los protocolos SSO descritos en el punto anterior.
  • Active Directory Federation Services (ADFS): Servicio que permite autenticar a un Active Directory mediante federación. Soporta WS-Federation y SAML 2.0.
  • Azure AD Connect: Integra y sincroniza un AD a un AAD.
  • Security Token Service (STS): Es un servicio que genera tokens de autorización ya sea por identity providers (IdP) o federation providers (FP). En el segundo caso realiza el token apartir de una cadena de autorización (relying parties).

Librerías

  • ASP.NET Membership: Librería que permite identificar el usuario en NET. Se basa en la autenticación mediante formularios (FormsAuthentication).
    Espacio de nombres: System.Web.Security
    Requisitos mínimos: NET 2.0
  • ASP.NET Identity: Librería que permite identificar el usuario en NET. Permite añadir información extra del usuario, persistirla (Entity Framework), añadir roles, claims… Orientada si se usa en solitario a validación de usuarios contra un Sql Server. Compatible con Owin. Viene a sustituir ASP.NET Membership debido a que aporta mayor funcionalidad y extensivilidad.
    Espacio de nombres: Microsoft.AspNet.Identity.*.
    Requisitos mínimos: NET 4.0
  • Windows Identity Foundation (WIF): Librería de NET para autenticar y autorizar. Este framework autentica en ADFS y WS-Federation (que soporta AAD).
    Espacio de nombres: System.Identity.*
    Requisitos mínimos: NET 3.5
  • Owin: Es un librería de NET que implementa un middleware que se usa para autenticar y autorizar. Viene a sustituir WIF debido a que aporta mayor simplicidad y extensivilidad.
    Espacio de nombres: Microsoft.Owin.*
    Requisitos mínimos: NET 4.5
  • Azure Active Directory Graph API: API Rest para trabajar con los elementos del ADD (operaciones CRUD sobre usuarios,aplicaciones,grupos…).
  • ADAL: Es una librería de Javascript pensada para autenticarse en aplicaciones de página única, como por ejemplo en aplicaciones Angular.

Autenticación en proyectos ASP.NET Web Application

En el asistente de creación de una aplicación web en Visual Studio disponemos de las siguientes opciones:

  • No Authentication: Sin autenticación.
  • Individual User Accounts: Autenticación en una base de datos accedida via Entity Framework.
  • Work And School Accounts:
  • Windows Autentication: Usado en Intranets. Autenticación contra el usuario de la maquina donde se muestra la aplicación. Es tan simple como activar Windows Autentication en la configuración del IIS. IIS utiliza autenticación contra AD mediante Kerberos o NTML.

Autenticación Work And School Accounts en proyectos ASP.NET Web Application

En el asistente de creación de una aplicación web en Visual Studio con autenticación contra AAD se solicita un usuario administrador del dominio. Este usuario se usará para crear la aplicación en dicho dominio. También podríamos crear la aplicación manualmente en el ADD mediante el portal de Azure.
Se describen los datos de la aplicación en el ADD:

  • Name: Nombre de la Aplicación.
  • Type: Web Application.
  • Application ID URI: Es el identificador de la aplicación. AAD lo añade en el token de autenticación.
  • Reply Url: Es donde se envía la respuesta con el token con la autenticación.
  • Client ID: GUID que identifica la aplicación en AAD. La aplicación lo envia cuando requiere la autenticación.
  • Single Tenant /Multi Tenant
    • Single Tenant: La aplicación solo se usara desde nuestra empresa.
    • Multi Tenant: La aplicación se usará también por usuarios ajenos de nuestra empresa. Esto permitirá a un usuario externo mediante su ADD y acceder a la aplicación. Se pedira el consentimiento al usuario indicando que permisos son necesarios para acceder a la aplicación. Cuando consiente automaticamente se registra en su directorio, la aplicación.
Publicado en Seguridad, Seguridad | Deja un comentario

¿Qué es Cortana Analytics Suite?

Cortana Analytics es una serie de servicios disponibles en Azure que nos permiten crear nuestros procesos de negocio. A partir de los datos de entrada; podemos combinar estos servicios en función de nuestras necesidades. El objetivo es realizar un análisis de los datos con el que vamos a poder generar acciones inteligentes de negocio.
ComponentsCortanaAnalytics
En función de los datos; si estos son en tiempo real o no, volumen de los mismos, necesidad de procesamiento de los mismos, tipo de los datos… utilizaremos una combinación adecuada de servicios.
Con estos datos, gracias a los servicios de análisis vamos a poder ver que ha ocurrido, el porque, que pasará y tomar acciones en función de lo que preveamos que va suceder.
Un ejemplo de solución de aplicación en Cortana Analytics, es el servicio que propone Microsoft para monitorizar dispositivos de IOT. Este servicio se llama Azure IOT Suite y esta construido usando diferentes servicios de Cortana Analytics.
EjemploUsoCortanaAnalytics

Servicios de Cortana Analytics

Publicado en Azure, Cortana Analytics, Internet of Things, Machine Learning | Deja un comentario

C# Interactivo

En Visual Studio 2015 disponemos de una novedad muy interesante. Consiste en una consola para trabajar directamente en un entorno interactivo; sin necesidad de crear un proyecto y compilarlo. Resulta muy útil para probar. C# InteractiveA la consola se accede desde el menu View->Other Windows->C# Interactive Window.

Comandos

Las instrucciones son las del lenguaje C# normal y también disponemos de intelligence a la hora de trabajar.
Para ver resultados, podemos escribir directamente el nombre de la variable o utilizamos las mismas instrucciones que en una aplicación de Consola.

var message = "Hello World!!!";
message //Muestra Hello World !!!!
Console.WriteLine(message); //Muestra Hello World !!!!

Se añaden algunos comandos utiles especificos en modo consola:

  • #r: Añade referencias a nuestra sesión de consola.
    //#r {Nombre del Assembly}
    #r "System.Web"
    //#r {Path de la dll}
    #r "c:\code\myDll.dll"
    
  • #reset: Libera la memoria del entorno de consola (elimina las variables actuales).
  • #cls: Limpia la pantalla de la consola.
  • #load: Podemos guardar los comandos en un fichero; con el objetivo de cargarlo y ejecutarlo.
  • #help: Ayuda.
Publicado en Visual Studio | Deja un comentario

Técnicas de Aprendizaje automático y Azure Machine Learning: Modo Avanzado II

En la anterior entrada Modo Avanzado I se indicaron parámetros por defecto para aplicar en diferentes técnicas de aprendizajes automático. En esta entrada vamos a ver como es posible probar iterativamente diferentes parámetros de cara a obtener la combinación optima de los mismos.

Configurar la técnica de aprendizaje automático

MLTrainerModeLas diferentes técnicas permiten configurar el trainer mode a Parameter Range. Esto permite que en los parámetros de configuración de la técnica podamos entrar un conjunto o rango de valores que se van iterar para probarlos. En el rango de valores, se nos pregunta adicionalmente el numero de valores que probaremos.

Aplicar la técnica

Sweep ParametersEn lugar de usar el módulo Train Model; se usa el módulo Sweep Parameters.

Entradas del módulo de izquierda a derecha:

  • Técnica de aprendizaje.
  • Conjunto de datos de aprendizaje.
  • Conjunto de datos a usar para optimizar: es opcional, sino se informa utilizaría el conjunto de datos de aprendizaje. También podemos usar el conjunto de datos para validar o si tenemos muchos datos crear un conjunto específico.

Salidas del módulo de izquierda a derecha:

  • Resultados de las diferentes iteraciones de parámetros.
  • Modelo que ofrece mejor resultado.

Parametros del módulo

  • Tipo iteración: random sweep (prueba aleatoriamente entre los parámetros suministrados hasta el numero de veces indicado en Maximum number of runs) o entire grid (prueba todas las combinaciones sistemáticamente).
  • Dato a predecir.
  • Hemos decidir cual es la medida de la técnica que vamos utilizar para optimizar. El mejor valor de la medida nos indicará el modelo a retornar😉.
Publicado en Azure Machine Learning, Cortana Analytics, Machine Learning | Deja un comentario

Evaluar Aprendizaje Automatico

En esta entrada vamos a ver como se evalúa que el resultado obtenido en un proceso de Aprendizaje Automático es correcto. Cada tipo de técnica de Aprendizaje Automático se evalúa de forma diferente.

Módulos de regresión

Hay medidas de error que miden la diferencia entre el valor real y el predicido.

Diferencia en valores absolutos

Diferencia en valores relativos

Estas son las más interesantes, ya que ponen en contexto la medida del error.

  • Relative absolute error: RAE = \frac{\sum_{i=1}^{n} |a_i -p_i|}{\sum_{i=1}^{n} |\bar{a} -a_i|}
  • Relative squared error: RSE = \frac{\sum_{i=1}^{n} (a_i -p_i)^2}{\sum_{i=1}^{n} (\bar{a} -a_i)^2}
  • Coefficient of Determination o R^2: Determina la potencia de predicción del modelo; indica un valor numérico de 0 (el modelo es un desastre) a 1 (el modelo funciona a la perfección).
    R = \sqrt{\frac{\sum_{i=1}^{n} (a_i -\bar{a})(p_i -\bar{p})}{desviacion(a)*desviacion(p)}} donde desviacion(a) = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n} (a_i -\bar{a})^2} y desviacion(p) = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n} (p_i -\bar{p})^2}

Módulos de clasificación

Se describen diferentes métodos de evaluación:

Matriz de confusión

matrizDeConfusiónClasifica en cuatro bloques en función de la clase del dato y su predicción:

  • True Positive (TP) y True Negative (TN): correctamente clasificados.
  • False Positive (FP): La predicción no clasificada correctamente en la clase de interés
  • False Negative (FN): La predicción no clasificada correctamente en la clase de no interés

A partir de estos datos se pueden calcular las siguientes medidas:

  • La tasa de acierto o accuracy nos indica la bondad del método. Recordar que en función del objetivo propuesto no es suficiente. accuracy = \frac{TP + TN}{TP + TN + FP + FN}
  • La sensibilidad o sensibility o recall nos indica la capacidad de detectar los casos positivos correctamente. recall = \frac{TP}{TP + FN} En función de lo que se pretenda valores no cercanos a 1; invalidan el método.
  • La precisión o precision nos indica que el sistema tiene buen ratio en detectar la clase de interés. precision = \frac{TP}{TP + FP}
  • La especificidad o specificity nos indica la capacidad de detectar los casos negativos correctamente. specificity = \frac{TN}{TN + FP} En función de lo que se pretenda valores no cercanos a 1; invalidan el método.
  • El F Score combina la precisión y recall en una sola medida para indicar la bondad del método. Recordar que en función del objetivo propuesto no es suficiente. FScore= \frac{2*precision*recall}{recall+precision}= \frac{2*TP}{2*TP + FP + FN}

MedidasMatrizConfusion

Curba ROC

ROCCurba
El gráfico mide la relación entre:

  • En el eje vertical, la capacidad de detectar los casos positivos correctamente, es decir la sensibilidad o recall.
  • En el eje horizontal, la tasa de resultados positivos incorrectos. (1-especificidad)=\frac{FP}{TP + FP}

La diagonal central indica que el método es aleatorio. Lo ideal es la linea en la esquina superior izquierda pegada a los ejes (maximiza la distancia de la diagonal central). El valor UAC que muestra Azure Machine Learning mide el área debajo de la curva.

Kappa

Nos indica un valor numérico de 0 (el modelo es un desastre) a 1 (el modelo funciona a la perfección). Desgraciadamente esta medida Azure Machine Learning; no nos la muestra en la evaluación del modelo😦.
k=\frac{PRa-PRe}{1-PRe}

donde:

  • PRa es la tasa de acierto. PRa = \frac{TP + TN}{TotalMuestras}
  • PRe es la probabilidad combinada entre los resultados. PRe = (\frac{TP+FP}{TotalMuestras}*\frac{TP+FN}{TotalMuestras})+(\frac{TN+FN}{TotalMuestras}*\frac{TN+FP}{TotalMuestras})

Módulos de Agrupación (Clustering)

  • Distancia media al centro de la agrupación y a los otros centros de agrupación.
  • Número de elementos en cada agrupación.

Módulos de Recomendación

En Azure Machine Learning tiene su propio módulo evaludador Evaluate Recommender.

  • Normalized Discounted Cumulative Gain (NDCG): Nos mide la diferencia entre la recomendación ideal y la prevista por el modelo. Nos indica un valor numérico de 0 (el modelo es un desastre) a 1 (el modelo funciona a la perfección).
Publicado en Azure Machine Learning, Cortana Analytics, Machine Learning | 1 Comentario