TIC, TAC, TEP: Aprender en el siglo XXI

IA, IoT y Tecnologías Información, Aprendizaje y Participación


1 comentario

IoT4All: ¿Qué es Internet de las Cosas para ti?

Comenzamos una nueva serie, “IoT4All”, en la que iremos desgranando poco a poco los conceptos básicos de Internet de las Cosas para hacerlas accesibles a todo aquel que quiera introducirse en este mundo, apasionante, sí, pero para qué negarlo, también complejo. En este primer post definiremos el concepto de Internet de las Cosas, IoT, y nos encontraremos con la primera sorpresa:

No existe una definición única de IoT

Distintas definiciones

Que los ciudadanos de a pie no tengamos una definición clara sobre lo que es IoT, es normal. Lo que puede resultar extraño, es que organizaciones, empresas, fabricantes, etc no compartan una definición única sobre lo que es Internet de las Cosas. Veamos algunos ejemplos:

  • IBSG de Cisco: Según el Grupo de Soluciones Empresariales para Internet (IBSG) de Cisco, el IoT es simplemente el momento en el que hay más “cosas u objetos” que personas conectados a Internet. A partir de datos como el número de dispositivos conectados según el Forrester Research, y datos de la población mundial de la Oficina del Censo de EE. UU el IBSG de Cisco estima que el IoT “nació” en algún momento entre 2008 y 2009
  • IBM: Para IBMInternet de las cosas se define como “el concepto de conectar cualquier dispositivo u objeto físico a Internet y a otros dispositivos conectados”. IBM también se refiere a la “creciente gama de dispositivos conectados a Internet que capturan o generan una enorme cantidad de información cada día”.
  • International Data Corporation: IDC define la Internet de las Cosas como “una red de redes de puntos finales identificables que se comunican sin interacción humana usando conectividad IP (local o global)”
  • Gartner: Para Gartner “la IoT es la red de objetos físicos que contienen tecnología para comunicarse y sentir o interactuar con sus estados internos o el ambiente externo”
  • Telefónica: Para nosotros, IoT es un universo de dispositivos u objetos físicos conectados e internet o a otros dispositivos, que interactúan con su entorno. La aplicación de tecnologías Big Data e Inteligencia artificial transforma estos datos en información de gran valor para las empresas, que se puede traducir en mejoras en la productividad, ahorros de costes y nuevas oportunidades/modelos de negocio.

¿Qué tienen en común todas estas definiciones?

Si nos paramos a analizarlas, podemos ver que no se contradicen entre sí. Más bien, ponen el foco en distintos aspectos o casos de uso. Así, esta dificultad de llegar a una definición común se debe al hecho de que la IoT representa la convergencia, en los últimos años, de distintas tendencias y avances tecnológicos, tanto en el ámbito de la computación, como en el de la conectividad.

Tecnologías convergentes

  • La conectividad generalizada, que convierte a casi cualquier cosa, en un “objeto conectable”, con velocidades de conexión altas a costes asequibles.
  • La adopción generalizada de redes basadas en el protocolo IP. Al haberse convertido en un estándar dominante, resulta muy sencillo y económico conectar todo tipo de dispositivos a internet. No obstante, no es la única opción, ya que todavía perviven muchas de las primeras soluciones corporativas e industriales M2M (Machine to machine communication), basadas en redes dedicadas y estándares propietarios o específicos de una industria.
  • Los avances en miniaturización. Objetos pequeños y de bajo costo pueden incorporar tecnología de cálculo y comunicaciones, impulsando gran cantidad de aplicaciones de la IoT
  • El abaratamiento de la capacidad de cálculo. Según lo predicho por la ley de Moore, cada vez disponemos de velocidades de procesamiento mayores, a precios más bajos y con un menor consumo de energía.
  • La computación en la nube. Permiten a los dispositivos distribuidos interactuar con potentes servidores remotos que ofrecen capacidades analíticas y de gestión.

Claves comunes

Por tanto, cuando intentamos definir qué es Internet de las Cosas, tenemos que hablar de:

  • dispositivos u objetos conectados (“las cosas”),
  • de conectividad (protocolos, redes),
  • de volúmenes variables de datos (recogidos del entorno, enviados, recibidos)
  • de plataformas de servicios IOT , donde se toman las primeras decisiones y acciones,
  • y de inteligencia (analíticas de datos, machine learning).


Todo ello configurado como un ecosistema muy heterogéneo, dinámico, de enorme escala, donde además la privacidad y la seguridad deben de estar garantizadas en todo momento extremo a extremo.

¿Dónde está el foco?

Así, según queramos poner más foco en uno u otro de los 4 pilares fundamentales de Internet de las cosas:

  • Cosas con sensores y capacidad de relación
  • Interconexión para la interacción
  • Soluciones para la mejora de procesos
  • Explotación de los datos

,llegaremos a definiciones ligeramente distintas. Pero todas ellas son igualmente válidas, porque lo importante no es cómo lo definamos, sino adónde nos lleva, lo que queremos conseguir con la tecnología.

En el siguiente post de “IoT4All” seguiremos avanzando en nuestro conocimiento sobre Internet de las Cosas, hablando de los distintos modelos de conectividad.


Post original publicado en Think Big Empresas

Anuncio publicitario


Deja un comentario

Ciencia de Datos y mujer: Avances en el procesamiento del genoma y el diagnóstico precoz del parkinson

En el mundo de la Ciencia de Datos, como otros ámbitos de la Ciencia y la Tecnología en general, la brecha de género es un hecho. Una de las formas de luchar contra esta desigualdad es darle la mayor visibilidad posible, especialmente en semanas como ésta. Pero la segunda y la mejor, es dar a conocer cómo, a pesar de las dificultades, muchas mujeres demuestran día a día su gran talento en el mundo de la Ciencia de Datos y en tantas otras áreas profesionales. Porque, según apuntan distintos estudiostener referentes de liderazgo femenino es crítico en el desarrollo profesional futuro, tanto de hombres como de mujeres, y contribuye a una ciencia de mayor calidad.

Como ejemplo, vamos a hablar de dos jóvenes investigadoras españolas que han sido seleccionadas por la revista del MIT Technology en español como Innovadores menores de 35 en Europa (2019) : Idoia Ochoa y Teresa Arroyo-Gallego.

Idoia Ochoa

Idoia Ochoa es profesora adjunta del departamento de Ingeniería Eléctrica e Informática de la Universidad de Illinois en Urbana-Champaignx (EE. UU.) Su ámbito principal de investigación es la industria genómica, que se está convirtiendo en uno de los pilares de la medicina personalizada. El análisis de la ingente cantidad de información que almacena el genoma humano abre un nuevo mundo de posibilidades en investigación, búsqueda de nuevos tratamientos y desarrollo de innovadoras técnicas de diagnóstico precoz de enfermedades.

Figura 1: Idoia Ochoa
(con permiso del autor)
Figura 1: Idoia Ochoa

El reto

Sin embargo, esa gran riqueza, supone también un gran desafío. Los archivos genómicos (en bruto) con los que se trabaja actualmente ocupan volúmenes de cientos de GB. Por ello, la industria genómica es uno de los sectores que requerirá una mayor capacidad de procesamiento de datos en todos los aspectos implicados: almacenamiento, intercambio y análisis.

Una solución innovadora

La investigadora Idoia Ochoa ha diseñado nuevos formatos digitales que facilitan el almacenamiento, transmisión, visualización y análisis de los datos de genoma.

Su objetivo es avanzar en la personalización de los tratamientos médicos, mediante metodologías adaptables que permitan analizar el genoma de cada paciente. Para ello, ha creado distintos algoritmos (QualComp, QVZ, GeneComp, AliCo, FaStore y SPRING son algunos de ellos), que facilitan la lectura del genoma, conservando la calidad de los datos. Por ejemplo, el algoritmo SPRING permite reducir el volumen de datos de trabajo de unos 196 a 7 Gb.

Para que estos algoritmos puedan ser utilizados por cualquier institución, y sean compatibles con las herramientas e infraestructuras existentes, es fundamental definir estándares. Por ello, Ochoa trabaja, junto a otros expertos, en el desarrollo de un estándar de representación genómica bajo la norma ISO MPEG-G. El estándar incluye especificaciones que determinan cómo representar los datos de genoma. La participación de la investigadora en la definición del estándar ha estado centrada en definir formatos que ocupen poco espacio y al mismo tiempo faciliten el acceso de forma fácil y rápida a secciones concretas del genoma.

“El proyecto de la investigadora Idoia Ochoa tiene un gran impacto, muestra ingenio, es muy oportuno y ayudará a que la sociedad del futuro mejore la toma de decisiones y los tratamientos médicos”.

————————————–

Tiina Hynninen, miembro jurado de Innovadores menores de 35 Europa 2019 de MIT Technology Review

Teresa Arroyo-Gallego

Teresa Arroyo-Gallego, dirige el equipo de Ciencia de Datos en nQMedical, cargo que compatibiliza con su trabajo como investigadora visitante RLE, el Laboratorio de Investigación en Electrónica de MIT. En el RLE se enfocó en las áreas de machine learning, procesamiento de señales y análisis de datos del proyecto neuroQWERTY, centrado en la integración de sistemas de detección y análisis de señales de tecleado en dispositivos de pantalla táctil.

 Figura 2: Teresa Arroyo
Figura 2: Teresa Arroyo

El reto

La enfermedad de Parkinson, es el segundo trastorno neurodegenerativo más frecuente y afecta a más de 10 millones de personas en el mundo. Se trata de una enfermedad incurable, cuyos síntomas son tan sutiles que los pacientes que la sufren pueden tardar años en darse cuenta de qué les sucede. Tampoco existe ninguna prueba que proporcione un diagnóstico específico y que permita un seguimiento objetivo de la evolución de la enfermedad.

Una solución innovadora

La investigadora Teresa Arroyo-Gallego está desarrollando una  una tecnología, nQMedical, que analiza la interacción de las personas con sus dispositivos inteligentes para obtener información sobre su salud cerebral.

Para ello, utiliza algoritmos de machine learning que analizan los patrones de uso del teclado de móviles, los compara con el comportamiento habitual del usuario y detecta de esta forma posibles anomalías psicomotrices propias de las enfermedades neurogenerativas.

Esto permite obtener marcadores digitales que revelan con precisión la presencia de estas enfermedades. Así, mediante un análisis en segundo plano de los patrones naturales de tecleado, esta tecnología permite evaluar de forma objetiva, transparente y en tiempo real variaciones en el estado psicomotor características de la enfermedad de Parkinson. Este diagnóstico temprano permite tomar decisiones más ágiles y mejor informadas que con los métodos actuales.

De cara al futuro, su objetivo es poder aplicar estas técnicas al diagnóstico de otras enfermedades como como el alzhéimer, la esclerosis múltiple y la esclerosis lateral amiotrófica.

“Teresa Arroyo-Gallego es una candidata excepcional, que está haciendo un trabajo extremadamente pionero y que merece un reconocimiento”

————————————–

Daniel Dickens, miembro jurado de Innovadores menores de 35 Europa 2019 de MIT Technology Review

Como vemos, los datos y la inteligencia artificial, pueden ayudarnos a mejorar nuestras vidas cuidando de nuestra salud, bien facilitando el diseño de nuevos medicamentos, o en la detección precoz de enfermedades.


1 comentario

Machine Learning para todos: Datos para aprender

chica estudia con ordenador

Cuando estás empezando en el mundo de la Ciencia de Datos y el aprendizaje automático, uno de las primeras preguntas que te haces es: ¿De dónde saco los datos para aprender?. Porque para entrenar algoritmos, necesito conjuntos de datos que cumplan determinados requisitos de volumen, estructura etc.

Empecemos por los repositorios de datos abiertos en la web. Lo más accesible, aunque, como veremos, pueden resultar demasiado complejos para un principiante.


1 Cargar los datos desde repositorios públicos en internet.

Hay muchos repositorios de datos disponibles en la web. Por ejemplo en Open Science Data Cloud, podemos encontrar petabytes de datos abiertos sobre genética, medio ambiente, imágenes por satélite etc.

También Amazon ofrecen datasets públicos con datos tan variados como trayectos en taxi en la ciudad de Nueva York, transacciones en la bolsa alemana, datos meteorológicos, datos sobre calidad del aire, química del suelo, genoma humano, población de aves, opiniones de clientes sobre productos, etc…

Por su parte, Google, ofrece un directorio de datos públicos en abierto, con interesantes conjuntos de datos publicados por el Banco Mundial, Eurostat, Naciones Unidas, instituciones nacionales de estadística de distintos países etc.

Por supuesto, las principales ciudades e instituciones de todo el mundo también ofrecen interesantes portales de datos en abierto. Por ejemplo, en este post, usamos un dataset sobre las salidas por rescate animal de los bomberos de Londres para experimentar con la herramienta de visualización PowerBI.  

En este otro, usamos datos sobre el uso del servicio público de bicicletas de Madrid, Bicimad para ver cómo se pueden depurar datos con Excel.

Estos repositorios son muy interesantes para llevar a cabo todo tipo de proyectos, pero…. ¿y si lo que quiero es algo mucho más sencillo? Encontrar datos que ya estén de alguna manera filtrados de forma que pueda localizar fácilmente los más adecuados para realizar una prueba determinada. Por ejemplo, un problema de clasificación con el que quiero probar la técnica de regresión logística.

Para ello, tendremos dos opciones: los repositorios de aprendizaje y pruebas, y los conocidos como “toy datasets” que vienen integrados en librerías.


2. Repositorios de datos para aprender.

Algunos de los repositorios más conocidos pertenecen a Universidades. Por ejemplo, el repositorio Machine Learning UCI.del  Center for Machine Learning and Intelligent Systems de la Universidad de California, tiene casi 500 datasets clasificados según el tipo de tarea para el que son más adecuados(clasificación, regresión, clustering u otros), el tipo de atributo (categórico, numérico o mixto), el tipo de dato (texto, una variable, multivariable, series temporales etc), el número de instancias, atributos, tipo de formato, área de conocimiento etc. Por tanto, es muy fácil localizar conjuntos de datos adecuados para una tarea concreta.

En el experimento que hicimos sobre clasificación de flores usando la técnica de análisis de componentes principales (PCA), por ejemplo, nosotros utilizamos este repositorio

Aunque no podamos usar filtros para seleccionarlos, la selección de datasets ofrecida por ¡sorpresa!, Wikipedia, nos ofrece una interesante recopilación de conjuntos de datos citados en revistas científicas (con revisión por pares), y convenientemente clasificados.

La Universidad de Standford también nos ofrece otro repositorio interesante, SNAP, con datos de todo tipo, aunque no podemos filtrarlo como en el caso de la UCI.

Otra de las opciones más interesante, cuando estás aprendiendo es el repositorio de datasets de Kaggle. Kaggle es, definitivamente, uno de los sitios donde todo futuro Data Scientist debe estar. En el experimento que hicimos sobre cómo usar Azure Machine Learning Studio en un problema de clasificación (¿Sobrevivirán?), descargamos el conocidísimo dataset de los pasajeros del Titanic desde Kaggle.

Además de los datos, en Kaggle podemos encontrar muchos ejemplos para aprender, una comunidad con la que compartir tus experimentos, consultar dudas, etc. y estimulantes competiciones.

Una precaución que hay que tener, es que a veces, los datasets son versiones reducidas de otros más amplios, e igual no nos interesa descargarlos de ahí. Por ejemplo, en nuestro experimento sobre regresión logística (que, con la broma de publicarlo por San Valentín, convertimos en un “predictor de infidelidad”), no descargamos el dataset affairs desde Kaggle por tratarse de una versión reducida. En su lugar, lo hicimos a partir de la librería Statsmodel, como veremos en el siguiente punto.

https://palomarecuero.wordpress.com/?p=1644


3 “Toy datasets” en las librerías.

Algunas librerías de Phyton como Seaborn, Sklearn o Statsmodels traen “de serie” datasets de prueba. Esto nos facilita mucho la vida, ya que resulta muy sencillo cargar una de ellas en un dataframe de pandas y empezar a trabajar.

3.1 Seaborn

Seaborn, por ejemplo, se usa para hacer gráficos y visualizaciones de datos más atractivas. Pero también incorpora 13 ejemplos de estos “toy datasets” “datasets para jugar”. Podemos ver cuáles son usando la función get_dataset_names():  

import seaborn as sns
sns.get_dataset_names()

Cargarlos en un dataset pandas es muy sencillo con la función load.dataset()

df_planets = sns.load_dataset('planets')
df_planets.head()

3.2 Scikit-learn

Sin embargo, esta opción no se usa mucho porque esos datasets apenas tienen información adicional a los datos. Los 7 datasets precargados en Sci-kit-learn sí que resultan algo más completos. Podemos encontrar algunos tan conocidos como el del precio de la vivienda en Boston, el de clasificación de lirios, el de vinos, o los datos sobre diagnóstico de cancer de mama en Wiscosin. No obstante, son demasiado pequeños para asemejarse a datos reales. Por esto, es más habitual usar las funciones generadoras de datos que ofrece esta librería (de las que hablaremos en el último punto), que los datasets precargados.

En cualquier caso, la forma de acceder a ellos y cargarlo en un dataset pandas también resulta muy sencilla:

from sklearn.datasets import load_boston
boston = load_boston()
data = boston.data
column_names = boston.feature_names 
import pandas as pd
df = pd.DataFrame(boston.data, boston.feature_names)    

3.3 Statsmodel

Hemos dejado para el final la librería más interesante, en cuanto a datasets precargados se refiere. La librería Statsmodel es la librería de modelado estadístico. Permite a los usuarios explorar datos, hacer estimaciones de modelos estadísticos y realizar test estadísticos.

Esta librería ofrece dos tipos de datasets (para R y para Python) a los que se puede acceder fácilmente deste el módulo statsmodels.api.datasets. Los datasets disponibles para trabajar en Python son los siguientes:

Conjuntos de datos que se pueden cargar desde Staatsmodels.

Cada submódulo tiene un conjunto de metadatos que se puede consultar con los atributos con los atributos DESCRLONG yNOTE y que nos ofrecen información detallada sobre ese conjunto de datos en particular. Si conocemos el nombre del submódulo donde están los datos que nos interesan, resulta muy sencillo cargarlos en un dataframe de pandas:


import statsmodels.api as sm #Cargamos la librería
nile = sm.datasets.nile #Elegimos el dataset sobre las crecidas del Nilo

print(nile.DESCRLONG) #Para ver la descripción y características del dataset
sm.datasets.nile.load_pandas().data #Cargamos el dataset en un dataframe de pandas

En el experimento que mencionamos anteriormente sobre regresión logística, usamos el dataset «fair» para crear un «predictor de infidelidad» 😉

Puedes ver el experimento completo aquí:


4 Crear tu propio dataset

Cierto es que una de las alternativas es crear tu propio dataset, por ejemplo, usando la librería NumPy, el paquete fundamental para computo científico en Python. En Numpy podemos encontrar funciones que permiten simular variables discretas, continuas y categóricas, de manera aleatoria:

  • numpy.randint() -> Docs
  • numpy.uniform() -> Docs
  • numpy.choice() -> Docs

Podemos encontrar un ejemplo de cómo hacerlo aquí.

Como es habitual, tenemos más alternativas. Por ejemplo, en la librería Scikitlearn, que de hecho está construida sobre la librería NumPy, podemos encontrar una gran variedad que de módulos de alto nivel sobre ciencia e ingeniería que nos ofrecen todo tipo de funciones. Por ejemplo, para generar datasets aleatorios, podemos usar las funciones:

  • make_blobs -> Docs, para problemas de clustering
  • make_regression -> Docs, para problemas de regresión
  • make_classification -> Docs, para problemas de clasificación

Por ejemplo, si lo que queremos es generar un conjunto de datos aleatorios para un problema de clasificación binaria (2 clases) con 100 muestras, 5 características (1 de ellas redundante), y un cluster por ejecución, la sintaxis sería la siguiente:

X, y = datasets.make_classification(n_samples=100, n_features=5, n_informative=4, n_redundant=1, n_classes=2, n_clusters_per_class=1)

No obstante, si no encuentras en las librerías de Python el tipo de “generador” de datos que necesitas, puedes crear un propio. Por ejemplo, a partir de la función randint incluida en el módulo random de Numpy.

Como veis, por datos, no será. Os animamos a hacer vuestros propios experimentos siguiendo nuestros ejemplos, o a usarlos como guía trabajando con otros datasets que sean de vuestro interés-. En nuestra sección «Tutoriales IA Big Data» podréis encontrar estos ejemplos y mucho más.


Deja un comentario

Internet de las Cosas…arqueológicas

A finales de 2019, según IoT Analytics, había ya 9.500 millones de dispositivos conectados para consumidores, empresas y científicos. Las previsiones para 2025 triplican esta cifra, porque la fórmula: grandes volúmenes de datos + analíticas + conocimiento experto en un dominio sirve… para casi cualquier cosa. Desde gestionar dispositivos en el hogar, hasta controlar la contaminación o el tráfico en las ciudades, usar de forma más eficiente el agua en la agricultura, o ayudar a controlar la expansión de un virus. En el post de hoy veremos cómo también se puede usar para proteger nuestros tesoros arqueológicos, con un ejemplo mundialmente conocido: El Valle de los Reyes en Egipto.

Soluciones IoT para Geología: prevención de catástrofes

Normalmente, las soluciones IoT para Geología monitorizan el medio natural con el objeto de predecir y prevenir catástrofes naturales. Así, existen soluciones orientadas a predecir desbordamientos en ríos, hundimientos en túneles, o movimientos de tierras. Otras aplicaciones están orientadas a conocer el impacto del cambio climático sobre la estabilidad de determinadas formaciones rocosas.

La importancia de este estudio es evidente cuando estas “formaciones rocosas” forman parte de uno de los sitios arqueológicos más importantes del mundo, como es el Valle de los Reyes, situado en las afueras de Luxor, a orillas del Nilo. El Valle de los Reyes es una necrópolis del antiguo Egipto, donde se encuentran las tumbas de la mayoría de faraones del Imperio Nuevo. Entre ellas, la más conocida es la KV62, la tumba de Tutankamón (c. 1342 – c. 1325 a.C.), descubierta por Howard Carter en 1922.

Para garantizar la mejor conservación de las tumbas y la seguridad de los millones de turistas que las visitan cada año, es fundamental controlar la estabilidad de las formaciones calizas que rodean el valle y que pueden verse impactadas tanto por fenómenos sísmicos, como meteorológicos.

El proyecto del Valle de los Reyes

Para saber más, un equipo de la Universidad de York (Canadá), el Departamento de Ciencias de la Tierra de la ETH Zurich y la Universidad de Basilea realizó un estudio sobre la estabilidad del acantilado rocoso sobre la tumba KV42.

Los investigadores desarrollaron una modelización matemática del comportamiento de la roca, analizando factores como la absorción de humedadcambios de volumen debidos a cambios de temperatura, desplazamientos/fracturas provocadas por pequeños movimientos sísmicos lluvias torrenciales etc.

El papel de los sensores IoT

Los investigadores instalaron un conjunto de sensores IoT para monitorizar la roca y su entorno y generar los datos para entrenar el modelo. En particular, se instaló una estación meteorológica Plug & Sense Smart Agriculture Pro, de la empresa Libelium. La estación permite medir la velocidad y dirección del vientovolumen de precipitacionesradiación solartemperatura (del aire y de la roca), y grado de humedad. A la estación, alimentada por energía solar, se agregaron sensores adicionales:

  • Un dendrómetro, para medir cómo influye el crecimiento de los árboles en la apertura de la fractura
  • Un sismómetro
Figura 1: Sensores monitorizando la grieta (fuente)

Los sensores registran datos cada 15 minutos, los graban en memoria y posteriormente los envían a servidor remoto a través de una red celular (3G/4G).

De esta forma, se pueden controlar el impacto de la erosión sobre la grieta, y generar una alerta temprana en caso de riesgo de fractura, garantizando así la preservación del patrimonio histórico y la seguridad de los visitantes.

Conclusión

Las tecnologías de monitorización de grietas en materiales sólidos, cobran cada día mayor relevancia, no sólo en sitios históricos sino en cualquier otro tipo de estructuras naturales o humanas debido al impacto negativo que tienen sobre ellas fenómenos relacionados con el cambio climático.


Referencias: Alcaino-Olivares, Rodrigo & Perras, Matthew & Ziegler, Martin & Maissen, Jasmin. (2019). Cliff stability at tomb KV42 in the Valley of the Kings, Egypt: A first approach to numerical modelling and site investigation.


1 comentario

Datos de entrenamiento vs datos de test

Bifurcación

Los algoritmos de Machine Learning aprenden de los datos con los que los entrenamos. A partir de ellos, intentan encontrar o inferir el patrón que les permita predecir el resultado para un nuevo caso. Pero, para poder calibrar si un modelo funciona, necesitaremos probarlo con un conjunto de datos diferente. Por ello, en todo proceso de aprendizaje automático, los datos de trabajo se dividen en dos partes: datos de entrenamiento y datos de prueba o test.

Datos de entrenamiento o “training data”

Los datos de entrenamiento o “training data” son los datos que usamos para entrenar un modelo. La calidad de nuestro modelo de aprendizaje automático va a ser directamente proporcional a la calidad de los datos. Por ello las labores de limpieza, depuración o “data wrangling” consumen un porcentaje importante del tiempo de los científicos de datos.

Datos de prueba, validación o “testing data

Los datos de prueba, validación o “testing data son los datos que nos “reservamos” para comprobar si el modelo que hemos generado a partir de los datos de entrenamiento “funciona”. Es decir, si las respuestas predichas por el modelo para un caso totalmente nuevo son acertadas o no.

Es importante que el conjunto de datos de prueba tenga un volumen suficiente como para generar resultados estadísticamente significativos, y a la vez, que sea representativo del conjunto de datos global.

Normalmente el conjunto de datos se suele repartir en un 70% de datos de entrenamiento y un 30% de datos de test, pero se puede variar la proporción según el caso. Lo importante es ser siempre conscientes de que hay que evitar el sobreajuste u “overfitting”.

(En este post, podéis ver un ejemplo en Python de cómo separar un conjunto de datos en datos de entrenamiento y validación).

Sobreajuste u “overfitting”

El sobreajuste ocurre cuando un modelo está “sobre-entrenado”. Son modelos complejos que se ajusta tan milimétricamente al conjunto de datos a partir del cual se han creado, que pierden gran parte de su poder predictivo, y ya no son útiles para otros conjuntos de datos. Esto se debe a que los datos siempre tienen cierto grado de error o imprecisión, e intentar ajustarse demasiado a ellos, complica el modelo inútilmente al mismo tiempo que le resta utilidad. Lo entenderemos mejor con un ejemplo.

Señal versus ruido

En un conjunto de datos, hay patrones subyacentes que representan la señal que buscamos detectar. Sin embargo, también hay un componente de ruido o aleatoriedad.

Un modelo de aprendizaje automático bien ajustado, es capaz de aprender de la señal e ignorar o minimizar el ruido.

Ejemplo de sobreajuste (línea verde)

Chabacano [CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)]
Figura 1: Ejemplo de sobreajuste- línea verde (fuente)

La gráfica anterior representa un problema de clasificación binario. El modelo representado por la línea negra parece ser un buen predictor para nuevos casos. Si está a la derecha de la línea, será de clase “azul” y si está a la izquierda, “rojo”.

Por el contrario, la línea verde representa un modelo sobreajustado porque ha aprendido del “ruido”. Como indicamos antes, es un modelo inútilmente complejo, ya que aunque su rendimiento sea mejor para este conjunto de datos en particular, no será “exportable” a otros conjuntos de datos.

Subajuste o underfitting

El underfitting o subajuste es justamente el caso contrario. Ocurre cuando el conjunto de datos de entrenamiento es insuficiente, con ruido en alguna de sus dimensiones o, en definitiva, poco representativo. Como consecuencia, nos lleva a un modelo excesivamente simple, con poco valor predictor.

Por ello, para generar un buen modelo de aprendizaje automático, es importante encontrar el punto medio entre ambas tendencias.

Otra forma de expresar este equilibrio es mediante los conceptos de “Bias vs Varianza”. En este otro post, ¿Qué es overfitting y cómo evitarlo?, Enrique Blanco nos explica en qué consisten estos conceptos y cómo conseguir ese punto de equilibrio (sweet spot) que nos garantice un modelo fiable.

Conclusión

La partición de los datos de trabajo en estos dos conjuntos diferenciados permite generar el modelo a partir de los datos de entrenamiento para después comprobar su eficiencia con los datos reservados para test.

Los resultados de cualquier modelo basado en aprendizaje automático tienen una gran dependencia de los datos a partir de los cuales se han generado. Por ello, es fundamental cuidar su calidad y buscar siempre el equilibrio entre bias (sesgo) y varianza.


2 comentarios

Bomberos, gatitos y Open Data

En este segundo post, continuación de «Ciudades Inteligentes: Exprimiendo Open Data con Power BI» analizaremos el problema y conoceremos las medidas que tomaron los Bomberos de Londres a la vista de estos resultados, para intentar paliar la situación.

Hipótesis

Ha llegado el momento de plantearnos qué información queremos extraer de los datos, qué respuestas estamos buscando. Algunas preguntas pueden estar claras desde el principio del análisis. Otras, sin embargo, irán surgiendo según los datos nos vayan revelando información.

El problema: La señal de alarma que nos ha llevado a plantearnos el análisis es el incremento del número de intervenciones del cuerpo de bomberos para realizar estos servicios, y el coste asociado.

Imagen campaña
Figura 1: Imagen de la campaña lanzada en 2016.

Empezamos a plantear hipótesis que intentaremos contrastar con los datos. Con las conclusiones que obtengamos, buscaremos estrategias o definiremos iniciativas que nos permitan solucionar el problema o reducir/minimizar sus efectos.

  • Hipótesis 1: El número de servicios se va incrementando cada año. Si no se plantea ninguna medida correctiva el coste seguirá aumentando.
  • Hipótesis 2: El tipo de animal implicado en el incidente es fundamental a la hora de discriminar si realmente es necesaria la intervención del cuerpo de bomberos o no. La ubicación del incidente (rural o urbano) también puede estar relacionada con el tipo de animal

Lo primero que conviene hacer es echarle un vistazo a los datos. Cargarlos en forma de tabla, ver los nombres de los campos (algunos nos resultarán descriptivos, otros no), y probar algunos filtros. Esta breve exploración previa nos ayudará a elegir qué campos pueden aportar información más relevante para cada informe.
*En un análisis más complejo, estaríamos en la fase de seleccionar qué atributos nos proporcionan una mayor “ganancia de información” (information gain), permitiéndonos segmentar los datos de forma más eficaz. Por ejemplo, cuales son los atributos que nos permiten agrupar y predecir los valores del campo “IncidentNominalCost” (coste del servicio).

Para trabajar sobre la Hipótesis 1, elegimos la visualización “Line Chart”. Seleccionamos el campo sumatorio CallYear y lo arrastramos bajo la etiqueta “Axis” para que represente este valor en el eje vertical (ordenadas) y campo PumpCount lo arrastramos bajo la etiqueta “Values” para que aparezca en el eje horizontal (abscisas). Si seleccionamos directamente los campos en la lista los puede añadir en un orden que no es el que nos interesa por eso es mejor arrastrarlos directamente a su posición final.  

Captura campos
Figura 2: El campo CalYear (año) debe aparecer bajo la etiqueta “Axis”, mientras que el campo “PumpCount” (número de casos) debe aparecer bajo la etiqueta “Values”  leyenda.

Obtenemos así el primer panel del informe, en el que se aprecia la evolución del número de servicios de rescate por año.

Evolución del numero de casos por año
Figura 3: Evolución del número de casos por año.

Para hacer un análisis más eficiente de esta gráfica conviene aplicar algunos filtros. Dado que del año 2017 sólo tenemos algunos datos del primer cuatrimestre, vamos a cortar por año completo. Aplicamos el filtro:

Ejemplo del filtro avanzado
Figura 4: Ejemplo del filtro avanzado. Sólo muestra los años anteriores a 2016.

Aplicado el filtro, la nueva gráfica sería la siguiente:

Evolución del número de casos por año
Figura 5: Evolución del número de casos por año (filtrada).

Podemos probar con otra visualización de los datos, “Funnel” donde es más fácil apreciar el valor total del número de servicios realizados por año. Cambiar de una a otra es tan fácil como seleccionar en el panel de visualización el nuevo formato con el que queremos que nos presente los datos. Power BI hará el resto del trabajo.

Ejemplo de visualización "Funnel"
Figura 6: Ejemplo de visualización “Funnel”.

Se puede apreciar claramente un incremento de las actuaciones entre 2009 y 2011, cómo a partir de ese punto empieza a disminuir (ya veremos por qué), para volver a repuntar el 2016. La muestra no es muy grande, pero si se aprecia una tendencia al incremento progresivo del número de casos.  La evolución del coste del servicio por año no es exactamente lineal ya que el coste del servicio viene determinado por el número de horas dedicadas y puede variar en cada caso. Claramente, en 2011 ha habido un cambio de tendencia en la evolución del coste, que se ha vuelto a revertir en 2015.

Evolución del coste de servicio por año
Figura 7: Evolución del coste de servicio por año.

Para trabajar sobre la Hipótesis 2, elegimos la visualización Pie Chart”. Seleccionamos el campo sumatorio CallYear y lo arrastramos bajo la etiqueta “Axis” para que represente este valor en el eje vertical (ordenadas) y campo PumpCount lo arrastramos bajo la etiqueta “Values” para que aparezca en el eje horizontal (abscisas).

Numero de servicios por tipo de animal
Figura 8: Número de servicios por tipo de animal.  

Claramente, la mayor parte de los incidentes tiene que ver con animales pequeños. Al pasar el puntero por cada sector del diagrama podemos ver el dato concreto y el porcentaje sobre el total (49,61% gatos, 17,91% pájaros, y 17,79% perros).

    Si lo traducimos a costes, y volvemos a visualización “Clustered Column Chart”, podemos ver el gasto público dedicado a rescatar gatos en el periodo 2009-2016: ¡866.834 GBP!, de ellos 115.404 GBP sólo en 2016.

Coste del sevicio por tipo de animal en 2016
Figura 9: Coste del servicio por tipo de animal en 2016.

En este mismo periodo 2009-2016 se han dedicado 307418 GBP a “rescatar” pájaros, 11084 GBP a rescatar ardillas. Tan sólo entre 2009-2010 el cuerpo de bomberos ha tenido 34 salidas para rescatar ejemplares de estos pequeños roedores en apuros.

El analizar la distribución de avisos según el parámetro “Animal Group Parent” nos ha revelado información de gran interés. Vamos a finalizar este análisis completándolo con información sobre su distribución geográfica.

Para analizar la distribución geográfica, elegimos la visualización “Map”. Seleccionamos el campo Borough y lo arrastramos bajo la etiqueta “Location”, el campo AnimalGroupParent bajo la etiqueta “Legend” y el campo PumpCount lo arrastramos bajo la etiqueta “Size”.

Distribución geográfica de avisos referentes al rescate de gatos
Figura 10: Distribución geográfica de avisos referentes al rescate de gatos (en amarillo) y perros (en naranja).

  La relativa a otro tipo de animales de mayor tamaño como vacas, toros, ciervos etc. resulta más dispersa y asociada a zonas rurales, como era de esperar. En estos casos, al tratarse de animales de gran tamaño, lo más probable es que sí que se haga imprescindible la participación de los bomberos para resolver la situación.   

Distribución geográfica animales grandes
Figura 11: Distribución geográfica de avisos referentes al rescate de animales de gran tamaño como toros (en rojo), vacas (en gris) y ciervos (en azul).

Por ello, como hemos mencionado antes, el parámetro “AnimalGroupParent” se perfila como uno de los parámetros que aporta mayor información a la hora de discriminar o al menos priorizar los servicios.  Si aparecen algunos puntos “fuera de campo” puede deberse a duplicidades o errores en los nombres de códigos postales o nombres de ciudades que coinciden a uno y otro lado del Atlántico. En esos casos, podemos hacer click directamente sobre esos puntos y excluirlos de la gráfica.

Ejemplo de datos erróneos
Figura 12: Ejemplo de datos claramente erróneos por duplicidades de nombres, códigos numéricos etc.

PowerBI también nos permite visualizar segmentaciones. Podemos segmentar los datos del informe por un valor concreto, por ejemplo, por año o por ubicación geográfica. Como ejemplo, vamos a segmentar el número de servicios realizados en 2016 relativos a animales “pequeños” (perros, gatos, pájaros, erizos, hamsters, ardillas, patos etc).

Para realizar esta segmentación, elegimos la visualización “Slicer”. Seleccionamos el campo Borough (Distrito) y, automáticamente, todos los demás paneles del lienzo ofrecen la información correspondiente a ese segmento concreto que, en este caso, corresponde a un distrito.

Aspecto del lienzo con dos visualizaciones
Figura 13: Aspecto del lienzo con  dos visualizaciones diferentes (tabla y funnel) tras aplicar la segmentación
Borugh =“City of London”

Todavía podríamos profundizar más con PowerBI y realizar un análisis del texto incluido en el campo “FinalDescription”. Por ejemplo, para agrupar y analizar con mayor detalle aquellos en los que se menciona la intervención previa de la RSPCA (“…ASSIST RSPCA…”), u ocurrencias como “Trapped” o “Stuck”. Este tipo de “Text Analytics” puede llevarse a cabo también con PowerBI gracias a su integración nativa con R.

Conclusiones: Tomamos medidas

Todo el análisis anterior nos ha servido para confirmar la Hipótesis 1 que se podría reformular como:
 “Si no se toman medidas, el consumo inadecuado de recursos públicos en este tipo de servicios seguirá aumentando año a año”Si a esto le sumamos los siguientes datos:

  •  Los ciudadanos de Londres sienten un gran amor por los animales (puede parecer un tópico, pero los datos que hemos analizado lo corroboran)
  • El buen ciudadano que llama a los bomberos para socorrer a un animalito no paga de su bolsillo el coste del servicio…. ¿O si lo paga?

Parece evidente sacar la conclusión de que el ciudadano que da el aviso NO es consciente del coste incurrido en realizarlo. No se da cuenta del derroche en dinero público (y el mal uso de un recurso de emergencia) que supone llamar a los bomberos para que rescaten a un hámster, una paloma atrapada en un sedal o ayuden a un gato a bajar de un tejado.  Aquí se planteaba un problema al que había de que dar una solución que debía repercutir en un uso más eficiente de los recursos públicos y en dar mejor servicio a los ciudadanos. En este caso se planteó una campaña de concienciación ciudadana

2012: La Campaña

En Julio de 2012, el Cuerpo de Bomberos de Londres lanzó la campaña:

Campaña de los bomberos de Londres 2012
Figura 14: Campaña de los Bomberos de Londres 2012: “I am an animal, get me out of here”.

El objetivo de la campaña era educar a los ciudadano sobre cómo poder seguir siendo “buenos samaritanos” en caso de encontrar animales en situaciones delicadas sin por ello hacer un mal uso de recursos públicos.
La campaña tenía dos ejes:

  • Por una lado, el de informar del coste que supone para la ciudadanía en general el dar este tipo de avisos directamente a los bomberos
  •  Y por otro, mostrar cuál sería la vía alternativa más adecuada a la que recurrir en este tipo de situaciones. En este caso, llamar a la RSPCA (Royal Society for the revention of Cruelty to Animals).  

Esta campaña tuvo un inmediato efecto positivo sobre la población que se refleja en el descenso del número de avisos registrado a partir de 2012.  

Noticia sobre el descenso de servicios de rescate animal
Figura 15: Noticia sobre el descenso de servicios de rescate animal.

  Sin embargo, en 2015 se registró un nuevo cambio de tendencia con un rápido incremento del número de casos. Los bomberos usaron las redes sociales para difundir la campaña.

Campaña de los bomberos de Londres 2012
Figura 16: Campaña de los Bomberos de Londres 2012. 
Campaña de la BBC
Figura 17: Campaña de la BBC.

Y, en Febrero de 2017, se publicó un mapa interactivo:

Mapa Interactivo
Figura 18: Mapa Interactivo

Se pone de manifiesto la necesidad de que este tipo de campañas se repitan periódicamente para no perder efectividad.

Conclusión final

 La mayor disponibilidad de datos en abierto sobre los servicios públicos, y de distintas herramientas que permiten combinarlos, analizar patrones y visualizar modelos se pueden traducir rápidamente en ahorros costes, y en ciudadanos satisfechos e involucrados con su entorno. Este ha sido un ejemplo muy sencillo, pero con resultados palpables.

Si en 2016 descontamos las salidas del Cuerpo de Bomberos relativas a percances de animales domésticos o de pequeño tamaño, las que consideramos “evitables”, el ahorro hubiera sido de £215.160. Si tenemos en cuenta el potencial que supone el poder aplicar Data Science a todo el arsenal de datos que hoy en día recogen y almacenan instituciones y empresas, nos damos cuenta de la gran oportunidad de mejorar nuestro entorno y nuestras vidas. ¡Aprovechémosla!


1 comentario

Base de Datos vs Data Lake vs Data Warehouse

Imagen de un lago

¿Conoces la diferencia entre una base de datos, un data lake y un data warehouse? Si quieres aprender a distinguirlos, sigue leyendo.

Algunas personas piensan que el data lake no es más que “la última versión” del datawarehouse, pero en realidad, se trata de herramientas diferentes, que se usan para distintas cosas.

¿Qué es una base de datos?

Para entenderlo mejor, vayamos a los orígenes: las bases de datos. Una base de datos es un conjunto de datos organizados de una determinada manera. Comenzaron a usarse en los años 50, y consistían en simples filas y columnas.

Años después se hicieron populares las bases de datos relacionales, que almacenan los datos en forma de tablas, y las bases de datos orientadas a objetos. Estas últimas, almacenan datos complejos y relaciones entre datos directamente, sin asignar filas o columnas.

Las bases de datos sirven para monitorizar y actualizar datos estructurados en tiempo real. Normalmente, solo tienen disponibles. los datos más recientes

Tipos de Bases de datos

Como hemos adelantado hace un momento, hay distintos modelos de bases de datos.

Las más sencillas tenían formato de Fichero plano, donde   todos los campos de una columna dada tienen valores del mismo tipo, cadena de caracteres, fecha u hora, entero o número de coma flotante. En el ejemplo de la imagen, las columnas son “Ruta”, “millas”, “Actividad”. Además, todos los miembros de la misma fila están relacionados entre ellos. “Registro 1, 2 …”. Fueron las precursoras de las bases de datos relacionales.

Éstas últimas surgieron en los años 70 . En este modelo ´la estructura básica es la “relación” o tabla. La información sobre determinada entidad, (por ejemplo, cliente) se almacena en tuplas (filas), cada una de las cuales tiene unos atributos (columnas). Las columnas de cada tabla enumeran los distintos atributos de la entidad (el nombre del “cliente”, dirección y número de teléfono, p. ej.), de modo que cada tupla de la relación “clientes” representa un cliente específico y guardan todos sus datos. Todas las relaciones (es decir, tablas) en una base de datos relacional han de seguir unas mínimas reglas.

Como último ejemplo, hablaremos también de las tablas orientada a objetos, que surgieron en la década de 1990.

Las bases de datos relacionales trabajan con datos, representándolos en forma de tablas. En las bases de datos orientadas a objetos los datos ya no se almacenan como datos, sino como objetos, de distintos tipos, sobre los que se definen una serie de operaciones. Éstas a su vez se integran con las operaciones de un lenguaje de programación orientado a objetos (POO).

Aunque están diseñadas para trabajar con lenguajes orientados a objetos, como Java, Visual Basic o C++ , también manejan información binaria y trabajan con datos complejos de manera rápida y segura

¿Qué es un datawarehouse?

Por su parte, un datawarehouse es sistema de almacenamiento de datos diseñado para dar soporte al flujo de datos desde sistemas operativos a sistemas de decisión. Recoge los datos de diversas fuentes, internas o externas y los organiza de forma muy concreta para optimizar su recuperación con fines comerciales (extraer Insights de negocio). Sólo contiene los datos para a los que se quiere dar cierto uso. Éstos suelen ser estructurados (a veces, proceden de bases de datos relacionales), o no.

En resumen, es un repositorio unificado para todos los datos recogidos por los diversos sistemas de una empresa.

¿Qué es un datalake?

En los años 2000, surgieron los datalakes, como alternativa más rentable para el almacenamiento de datos no estructurados. Aunque ya se podían almacenar este tipo de datos en los formatos anteriores, los procesos de depuración y preparación eran largos y costosos. Los datalakes almacen datos los en bruto, sin ninguna estructura, jerarquía ni organización. Datos de cualquier fuente, en cualquier formato. Texto, datos de redes sociales,todo tipo de logs o registro de datos de sensores de dispositivos IoT. Al no tener estructura, son mucho más flexibles que los datawarehouses. Sin embargo, estos últimos, como tecnología más madura, también tienen mejores sistemas de seguridad.

La idea es poder ir volcando todo tipo de datos al datalake, por si se necesitan más adelante, de la forma más económica y escalable.

Para explicar qué es un datalake tomamos prestada una imagen de una infografía muy buena de EMC.

Figura 1: ¿Cómo funcionan los datalakes? Fuente EMC
Figura 1: ¿Cómo funcionan los datalakes? Fuente EMC

Conclusión:

¿Y cuál es la mejor solución?. Dependerá de nuestro problema. Conforme aumenta el volumen de datos no estructurados, los datalakes en la nube se hacen más populares, ya que son más rentables y fáciles de mover cuando es necesario. Sin embargo, siempre habrá un lugar para las bases de datos y datawarehouse.


Deja un comentario

Deep Learning fácil: Crea una Aplicación que “colorea” fotos en unos minutos

Figura 0: Vamos a colorear con Deep Learning la foto del equipo el día del 2º cumpleaños de LUCA

No nos engañemos, el Deep Learning está revolucionando el mundo de la IA porque nos permite hacer cosas increíbles. Cosas que tienen un gran impacto en nuestra vida diaria. Sin embargo, no hace falta ser un experto para poder crear sencillas aplicaciones que usan Deep Learning para hacer todo tipo de cosas. En particular, hoy vamos a “jugar” a colorear una foto creando nuestra propia aplicación en mucho menos de una hora.

¿Qué vamos a necesitar para este sencillo experimento?

  • Tener Python instalado (2 o 3), y unas sencillas nociones. Si no es vuestro caso, no hay problema, porque en este otro post de nuestro blog os explicamos cómo hacerlo paso a paso
  • Tener acceso a internet (vamos a usar una API desarrollada por Algorithmia)
  • Créditos de Algorithmia, que no nos van costar nada porque al registrarnos nos regalan 5000 créditos para que hagamos las pruebas que queramos.

Quizás no esté de más explicar un poco antes, qué es una API y a qué nos referimos cuando hablamos de Algorithmia.

¿Qué es una API?

La abreviatura viene del término en inglés Application Programming Interfaces (Interfaces de programación de aplicaciones), que se aplica a un conjunto de reglas (código) y especificaciones que las aplicaciones pueden seguir para comunicarse entre ellas. Las APIs pueden servir para comunicarse con el sistema operativo (por ejemplo, WinAPI), con bases de datos (DBMS), con protocolos de comunicaciones (Jabber/XMPP), con redes sociales (Twitter, Facebook, Youtube, Linkedin etc), y otras plataformas online (Google Maps, Blogger, etc).

Hacen mucho más fácil el trabajo del programador ya que permiten usar funciones predefinidas para interactuar con otro software u otra plataforma. Incluso, en el caso de herramientas propietarias (es decir, las que no son de código abierto), indican a los programadores de otras aplicaciones cómo incorporar una funcionalidad concreta sin tener que dar información sobre cómo se realiza internamente ese proceso.

En nuestro pequeño experimento con Deep Learning, usaremos una API para crear una sencilla aplicación.

¿Qué es Algorithmia? 

Algorithmia fue creado por Diego M. Oppenheimer con el propósito de “democratizar” el acceso a la Inteligencia Artificial.  Algorithmia funciona como una especie de “supermercado” de IA en Internet. Un lugar donde los desarrolladores pueden encontrar algoritmos avanzados en forma de API. Los algoritmos son creados por científicos de datos, que pueden ofrecerlos en formato opensource, o cobrar por ellos. Algorithmia se queda con un porcentaje de las ganancias, pero también ofrece soporte gracias a un servicio en la nube. También permite escalar y poner en producción sistemas basados en IA. Estos algoritmos hacen cosas como extraer automáticamente etiquetas, resumir o detectar el “sentimiento” de un texto, comparar dos imágenes, identificar marca y modelo de un coche, o, darle color a una imagen, que es lo que vamos a probar nosotros. 

Página web de Algorithmia.

Paso 1:  nos registramos en Algorithmia

Nos registramos desde la página web Algorithmia. Una vez creado nuestro usuario, le diremos que lo que queremos es desarrollar un modelo “Deploy a model”, y para ello buscaremos el algoritmo que nos interesa “Find an Algoritm” entre los disponibles.  Como bienvenida, nos regalan crédito por 50K. 

Registro de usuario.

Como bienvenida, nos regalan crédito por 50K. 

Mensaje de bienvenida y créditos de regalo.

En la parte inferior derecha de la pantalla la “Default API Key” que nos han asignado. 

Clave API por defecto.

También podemos encontrar esta información desplegando el menú “Profile” que aparece en la esquina superior derecha:

Menú Perfil Usuario

Ya podemos echar un vistazo a los algoritmos principales que nos ofrecen, seleccionar los que nos interesan, o incluso crear nuestros propios algoritmos.

Ejemplos de algoritmos disponibles.

Paso 2: Instalamos el cliente de Algorithmia para Python

Para instalar el cliente, usaremos el comando “pip”  desde una ventana cmd. Pip es una herramienta escrita en Python  creada para facilitar la descarga e instalación de paquetes del lenguaje que se encuentren en el Python Package Index (PyPI).

Cuando os explicamos cómo instalar Python, elegimos la opción más sencilla, Anaconda, que  no instala pip por defecto. Así que lo primero que tendremos que hacer es instalarlo mediante el comando:

 conda install pip 
Figura 7: Instalación de pip.
Figura 7: Instalación de pip

Si nos da error, lo más probable es que no tengamos agregado el PATH en las variables de entorno. Para ello, en nuestro caso, (Windows10), vamos al Panel de Control, y en las Propiedades del Sistema/Variables de entorno, agregamos como Variable de Sistema:

 C:\Users\XXXX\Local\Continuum\anaconda3\Scripts 
Figura 8: Agregamos el PATH.
Figura 8: Agregamos el PATH.

Ya podemos lanzar la instalación del cliente de Algorithmia con pip:

Figura 7: Lanzamos la instalación del cliente con pip.
Figura 9: Lanzamos la instalación del cliente con pip.

Paso 3: Elegimos la imagen que queremos colorear y la subimos a Algorithmia.

Para cargar la foto, vamos a la pestaña “Data” del portal de Algorithmia, y en “My hosted Data” seleccionamos la opción “Browse files” para cargar al imagen sobre la que queremos trabajar.

Figura 10: Desde My Hosted Data subo la imagen que quiero colorear.
Figura 10: Desde My Hosted Data subo la imagen que quiero colorear.

Creamos una “colección”y la llamamos, por ejemplo, PruebaLUCA.

Figura 11: Creamos y nombramos una colección de imágenes.
Figura 11: Creamos y nombramos una colección de imágenes.

Una vez creada la colección, para cargar las imágenes no tenemos más que arrastrarlas sobre  “Drop files here to uptload”, 

Figura 12: Cargamos la imagen arrastrándola sobre el cuadro inferior.
Figura 12: Cargamos la imagen arrastrándola sobre el cuadro inferior.

Por cierto, como acabamos de celebrar el segundo cumpleaños de LUCA, vamos a probar a darle color a la foto nos hicimos ese día el equipo de Marcomms (la primera imagen del post).

Paso 4: Abrimos un Jupyter Notebook para crear un pequeño programa en Python.

Usamos Jupyter Notebook por comodidad. También podríamos crear un fichero local con extensión “.py” y ejecutarlo desde línea de comandos. Si nunca has usado los Jupyter Notebooks, no es problema. En este post te explicamos de forma muy sencilla cómo hacerlo. Merece la pena dedicar un rato para aprender a usarlos. Son muy prácticos.

Copia y pega las siguientes líneas de código en tu notebook. Sólo tienes que cambiar la ruta a la imagen que quieres colorear y tu Default API key. 


Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

view raw

colorear.ipynb

hosted with ❤ by GitHub

Ejecuta el código con “Run Cells” y “et voilá”. Para ver el resultado, abre, dentro de Algorithm Data, la colección temporal:

“.algo/deeplearning/ColorfulImageColorization”. 

Ha quedado un poco “vintage” pero tampoco está mal. ¿no?. Y sobre todo, nos ha servido para comprobar cómo podemos usar algoritmos avanzados de Deep Learning en nuestra aplicaciones sin necesidad de ser expertos en DL.


Deja un comentario

Dato o Data… ¿Tienen género los datos?

Ya conocemos el enorme potencial de aplicar herramientas de Big Data en distintos campos de nuestra vida, siendo, uno de ellos el Desarrollo Sostenible y la Acción Humanitaria. Sin embargo, las acciones y políticas que se emprendan basadas en Insights extraídos de esta información presentan un sesgo muy claro que impide que lleguen a uno de los grupos más vulnerables. Nos referimos al sesgo de género, especialmente en países donde culturalmente no se reconocen los derechos de las mujeres y las niñas.


Si no se las considera individuos con derechos, no se registran datos sobre ellas o sobre los problemas que les afectan. Por ello, la desigualdad en los datos es un nuevo factor de desigualdad contra el que hay que luchar. Afortunadamente, hay importantes iniciativas que van en esta dirección. Vamos a ver cuáles son.

Posts de Twitter, compras con tarjetas de crédito, llamadas telefónicas, datos de satélites… Todos estos datos pueden ser captados, almacenados, procesados y analizados para generar Insights que permitan a los gobiernos o a las organizaciones no gubernamentales definir políticas y estrategias que mejoren la calidad de vida de las personas.

Figura 1: "Good Data helps make good decisions".
Figura 1: “Good Data helps make good decisions”.

Sin embargo, muchas veces estos datos son incompletos o responden a prejuicios que nos ofrecen una visión distorsionada de la realidad. Por ejemplo, en países donde existe discriminación hacia las mujeres, no se considera necesario recopilar datos sobre aspectos tan importantes como:

  • Mortalidad materna
  • Salud de las adolescentes
  • Exclusión del sistema educativo
  • Resultados de aprendizaje
  • Propiedad de activos por parte de mujeres
  • Acceso a teléfonos móviles e Internet
  • Registro de votantes
  • etc.

El análisis de estos datos incompletos o sesgados puede llevar a conclusiones inexactas que, por ejemplo hacen que las mujeres parezcan más dependientes y menos productivas de lo que son. Otras veces, el sesgo de los datos se debe a otras causas, como ocurre con la “brecha digital”. Aunque no es un sesgo exclusivo de género, es habitual que las mujeres tengan un menor  acceso a teléfonos móviles e internet, sobre todo en zonas rurales. Por ello es fundamental trabajar con conjuntos de datos complementarios. Así, para identificar a los grupos de población que no tienen acceso a  herramientas digitales se recurrirá a herramientas tradicionales, como los sondeos clásicos sobre el terreno.

Figura 2: "We need the complete Data Picture".
Figura 2: “We need the complete Data Picture”.


La buena noticia es  que una corriente global promueve más y mejores datos sobre mujeres para avanzar en los Objetivos de Desarrollo Sostenible (ODS). Veamos en qué consiste.

 ¿Tienen género los datos?

Pues, va a ser que sí. Si analizamos los datos estadísticos, junto con los obtenidos por las nuevas fuentes de datos desglosadas por sexo, podemos ver que:

Figura 3: ¿Qué indican los datos desglosados  por sexo o datos de género?
Figura 3: ¿Qué indican los datos desglosados por sexo o datos de género?

Por ello, organizaciones internacionales como la ONU y el Banco Mundial y entidades como la Fundación ONU se han puesto al frente de un movimiento global para promover más y mejores datos sobre la vida de las mujeres, con el objetivo de fundar políticas más eficaces para avanzar en la igualdad de género y en los Objetivos de Desarrollo Sostenibles (ODS) de la ONU hasta 2030.“Medimos lo que valoramos y valoramos lo que medimos. Comprendiendo las necesidades de las mujeres, podemos trabajar juntos para asegurar que —en el espíritu de los Objetivos Desarrollo Sostenible—
no se las deja atrás”.

 

¿Qué pasos se han dado?

El I Foro Mundial de Datos ONU celebrado entre este 15 y 18 de enero en Cape Town (Sudáfrica) ha reunido por primera vez a más de 1.000 profesionales de diversos ámbitos —sectores público, privado, académico y de organizaciones sociales— en torno al uso de datos para los ODS.Entre los participantes, Data2X es una organización no gubernamental creada por iniciativa de la Fundación ONU, con el apoyo de las Fundaciones William and Flora Hewlett y Bill & Melinda Gates. Trabaja con agencias de la ONU, gobiernos, sociedad civil, académicos y el sector privado para   mejorar la calidad, disponibilidad y uso de datos de género, y así rellenar esas lagunas de información sobre mujeres y niñas, que repercuten negativamente en la toma de decisiones y estrategias que afectan a su bienestar y calidad de vida. Su directora ejecutiva Emily Courey Pryor, afirma que los Objetivos de Desarrollo Sostenible (ODS) suponen una oportunidad sin precedentes para:

Figura 4: Oportunidades que brindan los ODS.
Figura 4: Oportunidades que brindan los ODS.

Una de las aportaciones más interesantes de este primer foro ha sido  tener la oportunidad de debatir la cuestión de los datos de género, no sólo entre los especialistas de género, sino también entre los profesionales de la estadística y ciencia de datos.

Personas ricas y personas pobres en información

También se está produciendo, según alerta en un informe el Grupo Asesor de la ONU sobre revolución de datos, una nueva brecha social entre los que tienen datos y los que no los tienen, que divide a las personas en “ricas o pobres en información”. Las barreras que generan esta nueva exclusión son “viejas conocidas”:

  • Barreras lingüísticas,
  • Pobreza,
  • Falta de educación o de infraestructura tecnológica,
  • Aislamiento
  • Discriminación

Y, al igual que cuando hemos hablado de la “brecha digital” no afecta exclusivamente a las mujeres y niñas, este grupo es uno de los que salen peor parados dentro de los “nuevos excluidos”.

¿Qué propone Data2X?

Data2X considera que es fundamental disponer de más y mejores datos desagregados por género, edad y otros atributos para poder lograr la plena inclusión y monitorizar sus avances. No olvidemos que el principio fundamental de la Agenda 2030 para el desarrollo sostenible de Naciones Unidas es “No dejar a nadie atrás”. Por ello, los objetivos de la agenda están descritos por indicadores muy comprometidos en expandir los esfuerzos de monitorización a nivel global de aquellos grupos previamente excluidos o infrarrepresentados, como son las mujeres y las niñas.

Figura 5: Objetivos para el Desarrollo Sostenible (ODS).
Figura 5: Objetivos para el Desarrollo Sostenible (ODS).

Como herramienta básica de actuación, Data2X ha analizado estos objetivos y ha identificado las áreas en las que la carencia de datos de género o su baja calidad suponían un mayor obstáculo para su consecución (Gender Data Gaps).  En concreto, las áreas de:

  • Salud
  • Educación
  • Oportunidades económicas
  • Participación política
  • Seguridad

En la Figura 5 podemos ver cuáles son estas “lagunas de información”  (pulsando el enlace que aparece en la leyenda se puede ver la imagen ampliada).

Figura 6: Carencias detectadas en datos de género ´ Gender Data Gaps
Figura 6: Carencias detectadas en datos de género ´Gender Data Gaps 

Sobre éstas áreas, y, en colaboración con Open Data Watch, Data2X ha definido 16 indicadores que se pueden empezar a medir de forma inmediata en la mayoría de países y con un bajo coste. Sus definiciones han sido acordadas por los distintos países teniendo en cuenta la disponibilidad de instrumentos/procedimientos para su medida, asegurándose de que estén libres de sesgos de género y siguiendo las recomendaciones de las principales agencias humanitarias y estadísticas.

La Figura 6 representa un ejemplo de estos indicadores para los objetivos relacionados con el fin de la pobreza y el hambre y con el de vivir en una sociedad más justa y pacífica. El listado con los 16  indicadores se puede consultar en la página web de Data2X.


Figura 7: Objetivos relacionados con el fin de la pobreza y el hambre.
Figura 7: Objetivos relacionados con el fin de la pobreza y el hambre.

Sumados a los datos complementarios ya existentes para medir el progreso de los ODS, estos indicadores van a permitir la promoción y puesta en práctica de políticas más inclusivas, a la vez que ofrecen a los ciudadanos información que les permite supervisar la actuación de sus gobernantes.

Llamamiento a la acción

Para avanzar en la inclusión de las mujeres en todos las esferas de la vida económica y social, Data2X hace cuatro llamamientos a la acción.

Figura 8: Llamamiento a la acción por parte de DataX2.
Figura 8: Llamamiento a la acción por parte de DataX2.

Primeros resultados

Data2X no se ha conformado con analizar dónde están las principales carencias de datos sobre mujeres y indicadores que ayuden a rellenar esas lagunas de información, y hacer un llamamiento a la acción. También se ha puesto manos a la obre y ha desarrollado proyectos pioneros que aplican las tecnologías de Big Data a esta labor de “rellenar estos huecos” y definir políticas que ayuden a mitigar la desigualdad de género global.En cada uno de los proyectos, se trabaja sobre una fuente de datos diferente:

  • Procedentes de redes sociales,
  • De telefonía móvil y movimientos en tarjetas de crédito
  • Recogidos por un satélite.

En uno de los proyectos, en colaboración con la Universidad Georgia Tech, se puede ver cómo los datos procedentes de redes sociales actúan como un preciso barómetro de salud mental, permitiendo medir niveles de ansiedad y depresión que afectan de forma significativa a la calidad de vida de las adolescentes.

En un segundo proyecto, en este caso en colaboración con el MIT, se trabaja sobre los datos registrados sobre teléfonos móviles y movimientos en tarjetas de crédito. Estos datos ofrecen información sobre prioridades de gasto, estatus social, hábitos de consumo y movilidad. Al igual que en el estudio anterior basado en redes sociales, surgen desafíos relacionados con el respecto a la privacidad, y se hace necesario contrastar estos datos con otros tipos de información complementarios que pongan de relieve posibles sesgos relacionados con la capacidad económica, competencia digital u otras dificultades de acceso al entorno digital.

En el tercer ejemplo, se utilizan imágenes por satélite no sólo para cartografiar accidentes naturales, sino también para medir la desigualdad de género. Este proyecto, en colaboración con la Fundación Flowmider correlaciona variables geoespaciales (como la distancia a una carretera) con otros indicadores de bienestar (como nivel educativo) que permiten extraer patrones que reflejan fenómenos sociales y relacionados con la salud que muchas veces estaban enmascarados por promedios a nivel local o de país.

La Figura 8 representa, precisamente un ejemplo de la correlación entre factores geográficos y el indicador relacionado con la baja estatura (“stunting rate”) en niñas menores de 5 años, respecto a de los niños en esa misma franja de edad en Nigeria.

Imagen 9: Diferencia en el Indicador de baja estatura de niños respecto a las niñas.
Imagen 9: Diferencia en el Indicador de baja estatura de niños respecto a las niñas.

Podemos ver los casos concretos con mayor detalle en su informe Big Data and the Well-Being of Women and Girls.

Challenge

Para aunar fuerzas en esta dirección, Data2X ha convocado a Big Data for Gender Challenge. Este tipo de convocatoria es habitual en el mundo del Big Data. Al ser de carácter abierto, investigadores de distintos orígenes, formaciones, y experiencias aportan una gran diversidad de enfoques y estrategias que resultan muy enriquecedoras. En este desafío los objetivos de los participantes son:

  • Usar una combinación de fuentes de datos convencionales y digitales para poder realizar investigaciones sobre determinados aspectos de la vida de las personas desde una perspectiva de género

O bien:

  • Enviar propuestas para la creación de herramientas que permitan monitorizar de forma viable el bienestar de mujeres y niñas a lo largo del tiempo

Si quieres aportar tu granito de arena para contribuir a la igualdad de género a través de la igualdad de datos… ¡participa!


Deja un comentario

Drones que “ven bajo tierra”

Patatas

Estamos acostumbrados a leer sobre el uso de drones en seguridad vial, conservación del medio ambiente, en el mundo de la construcción, usos recreativos, militares, para espantar aves en los aeropuertos, para transportar medicamentos…etc. Pero también son componentes habituales de las soluciones SmartAgro. Incluso, para cultivos que crecen bajo tierra, como patatas, también mandioca, zanahorias, rábanos o cualquier tubérculo o raíz comestible de interés económico.

En el post de hoy vamos a hablar de una de ellas en particular.

El problema

Los tubérculos son uno de los alimentos más nutritivos, económicos y versátiles de la naturaleza. De hecho, la patata, un alimento básico en todo el mundo, ocupa el cuarto lugar en la producción mundial de alimentos, después del maíz, el arroz y el trigo.

Este tipo de cultivos tiene un problema. Al crecer bajo tierra, es habitual que enfermedades o deficiencias que afectan a su crecimiento, pasen desapercibidas al agricultor. En ocasiones, plantas enfermas en la raíz, tienen un aspecto exterior verde y sano.

Esto plantea serias dificultades a los fitomejoradores, que investigan el desarrollo de los cultivos para poder determinar qué variedades ofrecen un mayor rendimiento, son más apropiadas para un determinado clima, o se adaptan mejor a la sequía o a los cambios de temperatura.

Uno de los grandes misterios para los fitomejoradores es si lo que ocurre en la superficie es lo mismo que lo que ocurre en la parte inferior

Michael Selvaraj, coautor de Alliance of Bioversity International y del CIAT

Para saber qué está sucediendo bajo tierra, y si el cultivo está sano, son necesarios muchos ensayos para recopilar datos sobre el dosel de las plantas, su altura y otras características físicas, lo cual resulta muy costoso en tiempo y recursos.

Una solución: drones+aprendizaje automático

Un estudio publicado recientemente en la revista Plant Methods plantea el análisis de imágenes de alta resolución tomadas por drones, mediante técnicas de aprendizaje automático que permiten construir modelos para predecirsobre el terreno y en tiempo real, cómo reacciona las plantas frente a distintos estímulos.

En lugar de esperar hasta la temporada de cosecha, se recogen datos sobre la cubierta vegetal e índices de vegetación en distintos momentos del ciclo de crecimiento, a partir de las imágenes multiespectrales tomadas por los drones. El procesamiento de estas series temporales mediante técnicas de aprendizaje automático permite extraer modelos de predicción del crecimiento de las raíces a partir de las imágenes.

Ubicación del trabajo de campo y plataforma de teledetección. a) Las pruebas uno y dos se llevaron a cabo en (CIAT). b)Dron, DJI S1000s. c) Cámara multiespectral, Micasense RedEdge 3. d) Arduino nano. e) Punto de control terrestre (GCP). f) GCP instalado en la prueba uno. g) RTK-GPS (Ampliar Imagen)

Para acelerar el procesamiento de imágenes, se desarrolló la plataforma de análisis automático de imágenes CIAT Pheno-i. A partir de datos tomados sobre el terreno y los índices de vegetación obtenidos por un sensor multiespectral se construyeron modelos de regresión lineal múltiple en las distintas etapas clave del crecimiento de la mandioca. Posteriormente, los índices espectrales/características se combinaron para desarrollar modelos de predicción del crecimiento de la raíz de mandioca usando diferentes técnicas de aprendizaje automático. Entre ellas, los modelos que mostraron mejor rendimiento fueron los basados en los algoritmos k-neighbours, bosque aletorio y máquina de vectores de soporte.

Ya son muchos los estudios que demuestran cómo las tecnologías avanzadas de teleobservación, combinadas con métodos de aprendizaje automático, permiten predecir de forma precisa datos valiosos sobre distintos tipos de cultivos. Esta técnica aplicada al cultivo de la yuca puede aplicarse también a otros cultivos de tubérculos para acelerar el trabajo de fenotipado digital llevado a cabo por el CIAT (Centro Internacional de Agricultura Tropical, Cali).

Gracias a esta tecnología, los fitomejoradores pueden ahora reaccionar de forma inmediata ante la falta de agua, o de un nutriente en particular, mejorando de esta forma la eficiencia de los cultivos.

Estos datos también permiten a los investigadores aconsejar a los productores sobre qué variedades resisten mejor las perturbaciones climáticas, para que cultiven las más adecuadas en cada lugar.


Referencias:

Selvaraj, M.G., Valderrama, M., Guzman, D. et al. Machine learning for high-throughput field phenotyping and image processing provides insight into the association of above and below-ground traits in cassava (Manihot esculenta Crantz). Plant Methods 16, 87 (2020).