[Post Técnico] OData multi origen

Francisco Refoyo Andrés, nos habla en este artículo de medium acerca de cómo trabajar con oData y múltiples orígenes de datos

El mundo del desarrollo del software suele ir guiado por conceptos teóricos que a menudo chocan con la realidad de las restricciones de los proyectos. Un servicio que se alimenta de dos orígenes de datos diferentes y sin conectividad entre ellos es un claro ejemplo. En esta situación no es factible utilizar OData, ¿qué podemos hacer?

Puedes leer este interesante post aquí.

El código completo que referencia el artículo está disponible en GitHub.

Escenarios de aplicación de Machine Learning: Introducción para el negocio

El Aprendizaje Automático o Machine Learning (ML) es un área de la Inteligencia Artificial centrada en construir sistemas capaces de aprender de forma más o menos automatizada, y que además sean capaces de mejorar sus resultados en el tiempo mediante entrenamiento. Su modus operandi general consiste en identificar patrones complejos en grandes volúmenes de datos para predecir comportamientos futuros de esos datos mediante algoritmos diseñados para este fin. La gran potencia de computación que proporciona la nube ha supuesto un impulso decisivo para aterrizar estas técnicas de Inteligencia Artificial en el mundo de la empresa, con una relación coste-beneficio muy favorable.

En este documento se recogen algunos de los algoritmos de Machine Learning más conocidos en los que se mezclan redes neurales pre-entrenadas y algoritmos heurísticos. En todo caso, considérese que según sea el escenario, es posible desarrollar algoritmos diferentes y entrenar redes específicas adicionales a las que se ilustran en este documento.

La gran mayoría de estos algorítmicos son estadísticos, es decir, se basan en la experiencia y el conocimiento que se obtenga a partir de un volumen importante de datos históricos que sirven como base de entrenamiento y aprendizaje.

Clasificadores

Los clasificadores son un tipo de algoritmo de Machine Learning capaces de separar conjuntos de datos en diferentes clases (conjuntos disjuntos), prediciendo uno de los campos a partir de los demás.

Camposs a evaluar y Campo a predecir
Campo ACampo BCampo CCampo DResultado

Ejemplos:

  • Sugerencia de películas: Si alguien ha visto Starwars, Alien y ET, queremos saber si le puede interesar ver Jurassic Park. Con suficientes datos un clasificador pudiera inferir si es probable que este individuo esté en el mismo conjunto de los que se han interesado por Jurassic Park.
  • Sugerencia de compras: Se pueden sugerir determinados productos evaluando los que has comprado a partir de comparar tus compras con las de otros compradores. El clasificador te sugerirá productos que otros han comprado si tú has comprado productos similares a los suyos.

Multi-clasificadores

Son como una extensión de los clasificadores, pero a la inversa, es decir, estos algoritmos deducen varios campos a partir de uno.

Ejemplos:

  • Extracción de semántica: Se puede deducir que un documento sobre las olimpiadas trata de: deportes, atletas, países, eventos, etc.
  • Identificación de tipos de errores: Tras recibir una incidencia, se puede aspirar a deducir sus áreas semánticas principales: por ejemplo: “La caldera de la calefacción ha dejado de funcionar” se deduce: avería, inmueble, servicio, temperatura

Selectivos

Permiten seleccionar un elemento de una lista a partir de evaluar los campos de los elementos que la componen.

Ejemplos:

  • Selección de miembros para participar en un determinado proyecto para un cliente. Se evalúan campos como: experiencia en ese tipo de proyecto, disponibilidad, relación previa con el cliente, etc.

Regresión

A partir de una serie de valores numéricos se predicen posibles valores futuros.

Ejemplos:

  • Predecir variaciones de precios de activos inmobiliarios.
  • Predicción de evolución de temperatura: A partir de la ingesta de valores de temperatura, predecir posible comportamiento futuro de la temperatura en un futuro próximo.

Detección de anomalías

Estos algoritmos primero aprenden patrones de comportamiento de determinados conjuntos de datos y posteriormente son capaces de detectar cambios sutiles o relevantes sobre el patrón: Anomalías.

Ejemplos:

  • Detección anticipada de problemas cardíacos (Salud)
  • Prevención de averías en equipamiento de fabricación o procesamiento (Industria)
  • Detección de irregularidades contables o similares para auditorías (Finanzas)
  • Detección de pautas sospechosas de pagos para prevenir blanqueo de capitales (Banca)

Casos combinados

Aunque no son propiamente algoritmos de ML, sí que son patrones que comúnmente se utilizan estratégicamente para atacar problemas que de primeras son muy complejos o no encajan perfectamente con casos fácilmente tipificados.

Pipes

Un pipe (o tubería) es un enlace en línea de varios algoritmos, donde la salida de un algoritmo es la entrada del siguiente en la cadena:

Ejemplo: Sugerir el departamento que puede ocuparse de una incidencia técnica. Pasos:

  1. Deducir las áreas semánticas a partir del texto de la incidencia (multi clasificador)
  2. Con las áreas semánticas, sugerir un departamento (clasificador)
  3. A partir de la información de los operadores de asistencia técnica, filtrar por el departamento resultante del paso 2 y recomendar uno (algoritmo selectivo) según datos de ubicación, momento, disponibilidad, experiencia, etc.

Selección evolutiva

La selección evolutiva es una estrategia para reducir los tiempos de desarrollo de una solución de ML eficiente y precisa. Puede involucrar lo siguiente:

  • Competición: Entrenamiento en paralelo para reducir tiempos de desarrollo. Se entrenan varias redes y se va evaluando el grado de fiabilidad de cada una (cuán “lista” es resolviendo el problema), La ganadora será la que tenga mejor grado de fiabilidad.
  • Selección generacional: Se definen períodos de entrenamiento donde al final de cada uno se evalúa la fiabilidad de las redes, se desechan las peores y con las mejores se hacen replicas o combinaciones de las mismas para completar una nueva generación, con las cuales se prosigue el entrenamiento en el siguiente período.

Inteligencia de Enjambre

Se entrenan diferentes redes (típicamente pequeñas) para el mismo propósito, y con algoritmos de enjambre se intenta que entre todas encuentren soluciones a problemas.

Ejemplos:

  • Encontrar rutas eficientes entre lugares.
  • Realizar diagnósticos conjuntos entre diferentes redes que pueden estar entrenadas a partir de datos de distinto origen, región, historial médico o grupos étnicos.
  • Pronósticos financieros: Diferentes redes que hacen predicciones a partir de diferentes datos de múltiples áreas semánticas, colaboran para predecir a largo plazo las pérdidas o ganancias que se puedan obtener de aplicar determinada inversión.

Autor: Mario del Valle, Consultor de Inteligencia Artificial (ilitia Technologies)

Evolucionamos la base de datos latinoamericana de enfermedades congénitas

Gracias a la financiación de Microsoft en ilitia hemos llevado a cabo el diseño y desarollo de una nueva base de datos que amplíe las capacidades del ECLAMC.

El ECLAMC es un programa de investigación clínica y epidemiológica de las anomalías congénitas del desarrollo en nacimientos hospitalarios latinoamericanos. Se trata de un programa de investigación de los factores de riesgo ambientales y genéticos en la causa de las malformaciones congénitas, y que, a modo de ejemplo, registró el aumento de casos de microcefalia relacionado al efecto del virus ZIKA en Brasil antes de los juegos olímpicos de 2016.

Este programa cuenta con una base de datos de casos desde 1967 que había sido evolucionada sucesivamente hasta el punto de llegar a permitir el alta y gestión de los datos de forma telemática para todos los médicos miembros. Sin embargo, el ECLAMC desea seguir incorporando las nuevas capacidades que la tecnología puede ofrecer al programa. Para ellos, nos pusimos manos a la obra para dibujar escenarios de mejora tecnológica actuales y futuro. En este caso, gracias a la intermediación de Julian Isla de Fundación 29, Microsoft se involucró para financiar el proyecto.

En esta primera fase se ha desarrollado una réplica de la base de datos original en la nube y se ha desarrollado un interfaz web y un API para, por un lado, mejorar la capacidad de análisis de los datos y, por otro, hacer posible el acceso a investigadores de todo el mundo.

Esta réplica de los datos, también ha hecho posible hacer pruebas de las posibilidades que la inteligencia artificial puede brindar al programa. De momento han sido unas pruebas tentativas con Azure Machine Learning , Azure Anomaly Detection y Microsoft Power BI que han mostrado su potencial para mejorar la capacidad de previsión de los investigadores.

            

Nace ilitia Systems

Estamos de enhorabuena!

Ha nacido ilitia Systems, empresa “hermana” de Ilitia Technologies que se centrará en el servicio gestionado, infraestructuras, seguridad y Cloud.

ilitia Systems llega empujando fuerte, con la experiencia que aportan las personas que componen este equipazo, y que empezaron a trabajar en éste área hace más de 20 años, ahora apoyados por la forma en que ilitia Technologies está desarrollando sus proyectos desde nuestro inicio.

Juntos estamos seguros de poder completar el abanico de servicios que ofrecemos a nuestros clientes, apareciendo ahora nuevas sinergias entre ambas empresas.

Estamos seguros de que os gustará nuestra propuesta que nos permite estar presentes en todas las capas, desde la captación del dato, pasando por su almacenamiento o respaldo, hasta su análisis, puesta en valor y presentación al usuario.

Queremos que ilitia Systems se convierta en una extensión de los equipos de trabajo de nuestros clientes en el área de IT.

#TodosdesdeCasa

#TodosdesdeCasa es una unión de varias empresas españolas para ayudar a las pymes a implantar el #teletrabajo seguro durante el confinamiento por la crisis del Covid-19. Esta inciativa ofrece asesoramiento, herramientas y software, guías, foros y mucho más a quien lo necesite, de forma totalmente altruista.

ilitia Technologies, como socio de la IAMCP, forma parte de esta plataforma que aspira a convertirse en un punto de encuentro solidario donde compartir conocimientos y experiencias. La iniciativa está abierta a cualquier empresa o particular que pueda ofrecer, de forma solidaria, conocimientos, servicios o recursos destinados a facilitar la implantación de soluciones de teletrabajo y colaboración remota.

¡Solicita ayuda!  https://www.todosdesdecasa.es/

Ya somos Gold Cloud Platform

Como preferred partner de Microsoft desde hace 20 años, ilitia Technologies atesora un alto nivel de conocimiento y especialización en tecnologías Microsoft.

Desde hace varios años somos partner Gold con numerosas competencias y ahora hemos conseguido la competencia Gold Cloud Platform como reconocimiento a nuestra experiencia y buen hacer en la implantación de soluciones sobre Azure.
De este modo en ilitia Technologies alcanzamos 7 competencias cloud y 1 Silver:

Gold Application Development
Gold Application Integration
Gold DevOps
Gold Datacenter
Gold Data Analytics
Gold Data Platform
Gold Cloud Platform
Silver Windows and Devices

https://www.microsoft.com/es-es/solution-providers/partnerdetails/ilitia-technologies-srl_956cd31d-b80d-48be-93a9-2a68c62bda55/2664f0f3-54eb-4994-ac0a-ff3e77cadb39

Como siempre, gracias a nuestros ilitios por su esfuerzo formativo constante.

ilitia certificada como PYME Innovadora

Este reconocimiento del Ministerio de Ciencia e Innovación acredita a empresas que demuestran cumplir requistos en las siguientes áreas:

  1. Recibir financiación pública para proyectos de I+D+i en los últimos tres años
  2. Demostrar su carácter innovador en su propia actividad, ya sea mediante patentes o informes motivados vinculantes
  3. Demostrar su capacidad de innovación mediante certificaciones oficiales reconocidas por la AGE

Tras haber cumplido con estos criterios, hemos obtenidio el sello acreditativo de PYME Innovadora, que tiene una validez de 3 años.

Proyectos como Dx29, Sociescuela o nuesta participación en el desarrollo de la plataforma Health29 de Foundation29 demuestran nuestro compromiso con la innovación a través de nuestra iniciativa I+D+S: Investigación y Desarrollo con conciencia Social

Puede consultar nuestro registro como Pymes Innovadora mediante nuestro CIF o razón social en el Registro de PYMEs innovadoras.

 

Sello PYME INNOVADORA 19/11/2022
PYME INNOVADORA
Válido hasta el 19 de noviembre de 2022
escudo de MEIC 19/11/2022

El CDTi escoge nuestro proyecto I+D+S de ehealth para seguimiento con IA de pacientes con trastornos de alimentación

Inteligencia Artificial, Bot Framework y cognitive services conforman el núcleo de nuestra app para acompañar a pacientes con trastornos de alimentación en sus pautas y tratamientos

Buena parte de la labor I+D+S en ilitia se ha centrado el acompañamiento del paciente. Desde hace varios años trabajamos en el mejor modo de cuidar al paciente en su domicilio y de acercar al médico a todos sus pacientes en el seguimiento diarios. Proyectos como Teki o Kronect en el 2012 supusieron nuestros primeros pasos en esta labor.

Fruto de este trabajo de años, en ilitia, con la inestimable cooperación de Taniwa, nos hemos focalizado en el desarrollo de agentes conversacionales orientados al acompañamiento del pacientes. Apps capaces de acompañar al paciente e informar al médico, apps de triage, de ayuda al diagnóstico, de ayuda al seguimiento de pautas farmacológicas y terapéuticas. Apps conectadas a dispositivos médicos e IoT e, incluso, apps que con el apoyo de inteligencia artificial alertaban de posibles contagios de resfriado.

En definitiva, una serie de aplicaciones explorando todas las posibilidades para acercar el médico a cada paciente.

Este año nuestra labor se está centrando en el desarrollo de una app conversacional para el seguimiento de pacientes con patologías psicológicas – en este caso pacientes con trastornos de alimentación- con la que sea posible hacer el seguimiento a la ingesta de los pacientes, en la que vamos a incorporar inteligencia artificial para  identificar el estado emocional del paciente a partir de sus diálogos y así acompañarle del mejor modo posible reforzando los mensajes del terapeuta, aconsejándole pautas a seguir en situaciones de ansiedad e incluso lanzando avisos al equipo médico en caso de identificar emociones extremas o delicadas.

El CDTI avala nuestra propuesta técnica y ha seleccionado nuestro proyecto como proyecto I+D TIC.

Para el desarrollo de esta solución se emplean tecnologías como Language Understanding, Azure Cognitive Services, Microsoft BOT Framework y Azure Machine Learning.

Flash Técnico: Conexión con sensores Bluetooth Low Energy (BLE) para soluciones IoT

Vivimos en un mundo en continuo cambio en el que cada vez son más los objetos que se pueden interconectar entre sí.

Sin apenas darnos cuenta, somos muchos los que usamos pulseras inteligentes, sensores que miden la frecuencia cardiaca en nuestras actividades deportivas, etc.

Este tipo de sensores están haciendo posible la transformación industrial hacia lo que será la industria 4.0. Utilizando diferentes sensores podremos tener más mediciones, mayor precisión e incluso anticipar problemas mucho antes de que sucedan.

La mayoría de estos sensores se comunican de forma inalámbrica a través de bluetooth.

En esta ocasión vamos a hablar sobre el funcionamiento de sensores sencillos que usan Bluetooth Low Energy (BLE).

Por poner un ejemplo, para poder conectarnos a un monitor de pulsaciones, BLE utiliza algo similar a un sistema de descubrimiento que permite poder establecer una comunicación con el monitor. Una vez conectados, tenemos a nuestra disposición una serie de servicios – que en ocasiones se pueden agrupar en perfiles- y características. Todo ello basado en identificadores de 16bits.

Los servicios se utilizan para agrupar diferentes características relacionadas. Estas características son los contenedores de los datos de los usuarios y, además, pueden llevar una serie de descriptores.

Este es un gráfico de cómo se pueden agrupar los servicios y características:

Por lo tanto, podríamos decir que en el “perfil” del monitor de pulsaciones disponemos de n servicios. Cada uno de estos servicios tiene un numero n de características. A su vez, dichas características pueden contener descriptores.

La forma de comunicarnos con el monitor de pulsaciones es a través de los diferentes ids (UUID) que tienen las características y los servicios.

De esta forma, es posible suscribirnos a un servicio de notificaciones que se encargará de enviar información.

Podemos probar todo esto con dos comandos en Linux.

Con hcitool podemos ver los dispositivos bluetooth que están a nuestro alcance;

userFoo@computerFoo:~/foo$ sudo hcitool lescan
LE Scan …
11:22:33:44:55:66 (unknown)
11:22:33:44:55:66 Polar OH1 555DDD0F

Como se puede ver tenemos una pulsera Polar OH1 (monitor cardiaco) a la que podemos conectarnos.

Con el comando gattool podremos hacer el resto, para ello usamos -I para el modo interactivo y desde aquí poder introducir los comandos necesarios para poder tener una conversación con nuestra pulsera. Esta conversación es posible mediante la inserción de comandos a través de un terminal.

userFoo@computerFoo:~/foo$ gatttool -b 11:22:33:44:55:66 -I
[11:22:33:44:55:66][LE]>

Con el comando connect, establecerá una comunicación y podremos pasar a ver los diferentes servicios disponibles con comando primary.

[11:22:33:44:55:66][LE]> connect
Attempting to connect to 11:22:33:44:55:66
Connection successful[11:22:33:44:55:66][LE]> primary
attr handle: 0x0001, end grp handle: 0x0009 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000a, end grp handle: 0x000d uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x000e, end grp handle: 0x001c uuid: 0000180a-0000-1000-8000-00805f9b34fb
attr handle: 0x001d, end grp handle: 0x0025 uuid: 0000feee-0000-1000-8000-00805f9b34fb
attr handle: 0x0026, end grp handle: 0x0029 uuid: 0000180d-0000-1000-8000-00805f9b34fb
attr handle: 0x002a, end grp handle: 0x002d uuid: 0000180f-0000-1000-8000-00805f9b34fb
attr handle: 0x002e, end grp handle: 0x0036 uuid: fb005c20-02e7-f387-1cad-8acd2d8df0c8
attr handle: 0x0037, end grp handle: 0x003c uuid: 6217ff4b-fb31-1140-ad5a-a45545d7ecf3
attr handle: 0x003d, end grp handle: 0xffff uuid: fb005c80-02e7-f387-1cad-8acd2d8df0c8

En este cuadro de código, vemos el listado de servicios. Como explicaba anteriormente, cada uno de estos servicios se compone de una a n caracteristicas.

Nos interesa el servicio cuyo UUID comienza por 180D, que es el encargado del monitor cardiaco, podemos ver una lista completa de caracteristicas en las especificaciones bluetooth: https://www.bluetooth.com/specifications/gatt/characteristics/

Para poder ver las características de los servicios, debemos fijarnos en los handles attr y end de tal forma que el comando char-desc nos dará información sobre las características que nos interesan.

[11:22:33:44:55:66][LE]> char-desc 0x0026 0x0029
handle: 0x0026, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0027, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0028, uuid: 00002a37-0000-1000-8000-00805f9b34fb
handle: 0x0029, uuid: 00002902-0000-1000-8000-00805f9b34fb

La característica 2a37 es la que nos da la información del monitor. Para poder realizar dichas lecturas, es necesario pasarle los parámetros que indican la forma en la queremos recibir esta información. Es aquí donde entran en juego los descriptores. Necesitamos conocer el handle del descriptor al que le pasaremos los parámetros para que la característica 2a37 sepa como enviar los datos. En la siguiente web: https://www.bluetooth.com/specifications/gatt/descriptors/

Encontramos información sobre los descriptores y donde encontraremos nuestro descriptor que es el 2902. Así que la forma de pasar parámetros y esperar una respuesta es usando el comando char-write-req sobre el descriptor 2902 como vemos a continuación:

[11:22:33:44:55:66][LE]> char-write-req 0x0029 0100
Characteristic value was written successfully
Notification handle = 0x0028 value: 00 00
Notification handle = 0x0028 value: 00 00
Notification handle = 0x0028 value: 00 00

De esta forma, cada segundo nos retorna dos bytes hexadecimales en nuestra notificación, uno con la frecuencia cardiaca y otro que indica el valor del sensor “contacto con la piel”, este sensor no está disponible en nuestro monitor por lo que siempre será 00.

Para dejar de recibir las notificaciones, debemos escribir 0000 en los parámetros de entrada y para salir del terminal usamos el comando quit.

[11:22:33:44:55:66][LE]> char-write-req 0x0029 0000
Notification handle = 0x0028 value: 00 00
Characteristic value was written successfully
[11:22:33:44:55:66][LE]> quit

Por último, es posible escribir todo esto en una sola línea en Linux sin necesidad de programar nada. Sería una forma de hacer pruebas de forma muy rápida y sencilla al que podríamos crear un pequeño script en Phyton u otro lenguaje de programación que nos sirva de frontend para este comando.

userFoo@computerFoo:~/foo$ gatttool -b 11:22:33:44:55:66 –char-write-req -a 0x0029 -n 0100 –listen
Characteristic value was written successfully
Notification handle = 0x0028 value: 00 00
Notification handle = 0x0028 value: 00 00
Notification handle = 0x0028 value: 00 00
Notification handle = 0x0028 value: 00 00

De esta forma ya tendríamos un punto de entrada en el manejo de nuestros sensores BLE.

Jose Navero consultor en ilitia technologies

ilitia colabora en el Hackthon “Azure lets you sleep” con Microsoft y Fundación 29

Como parte de nuestra iniciativa I+D+S,  ilitia ha colaborado con Foundation 29 y Microsoft en el Hackathon “Azure lets you sleep“. El objetivo de este año ha sido conseguir un mínimo producto viable de una solución de bajo coste para la toma de constantes de pacientes con crisis epilépticas.

Esta solución ayudará a que los cuidadores de pacientes puedan dormir mejor, monitorizando el pulso cardíaco y lanzado avisos según determinadas circunstancias.

En el hackaton hemos tomado como punto de partida un desarrollo IoT de ilitia, en el cual desde una Raspberri Pi se recogen datos de una banda cardíaca Polar Heart Rate Band y se envían a Azure vía IoT Hub con Stream Analytics y Azure Anomaly Dectector . Una vez en Azure, se puede analizar el pulso cardíaco del paciente a lo largo del tiempo desde Power BI  y  parametrizar el algoritmo de Anomaly detection tratando de ofrecer avisos a los cuidadores.

En el hackaton hemos integrado la solución de ilitia con la plataforma Health29, para que cualquier familia pueda habilitar una pequeña unidad de seguimiento en su hogar comprando una banda, una rasperry y haciendo uso del código disponible en github y del portal Health29.