TIC, TAC, TEP: Aprender en el siglo XXI

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


1 comentario

Iot4All:¿Cómo se conectan y comunican los dispositivos?

Dispositivos IoT para Smarthome

En el primer post de «IoT4all» exploramos distintas definiciones de Internet de las Cosas y el motivo por el cuál no existe una que podamos considerar como definición canónica. Hoy vamos a hablar de cómo se conectan y comunican los dispositivos IoT, para lo que sí existe un marco perfectamente definido, la RFC7452. En marzo de 2015, el Comité de Arquitectura de Internet (IAB) publicó esta directiva que describe los cuatro modelos de comunicación que vamos a explicar a continuación.

1 Dispositivo a dispositivo, el más común en el hogar

En este modelo, los dispositivos se comunican directamente entre sí, sin necesidad de tener un servidor de aplicaciones intermedio. Esta comunicación puede tener lugar sobre redes IP (Internet), u otro tipo de redes. Muchas veces se utilizan otros protocolos como Bluetooth, Z-Wave o ZigBee.

Este modelo se usa habitualmente en sistemas IoT residenciales como, por ejemplo, bombillas, interruptores, termostatos, cerraduras etc.

Estos sistemas envían pequeñas cantidades de información en forma de mensaje de bloqueo de una puerta, o de comando para encender una luz, por lo que sus requisitos en cuanto a tasa de transmisión, son bajos.

Un inconveniente de este modelo es que algunos fabricantes desarrollan mecanismos de seguridad o de confianza propios que integran en los dispositivos, o bien, utilizan modelos de datos específicos. Esta falta de estandarización, puede limitar la capacidad de elección de los usuarios. Si quieren que un nuevo dispositivo se comunique con los que tiene ya instalados, éste debe ser de la misma familia. Por tanto, el usuario se ve «atado» al fabricante de los dispositivos que escogió en primer lugar.

Figura 1: Modelo de comunicación dispositivo a dispositivo
Figura 1: Modelo de comunicación dispositivo a dispositivo

2 Dispositivo conectado a la nube, como en tu Smart-TV

En este segundo modelo, el dispositivo se conecta directamente a un servicio en la nube, usando conexiones Wi-Fi o red ethernet (los mecanismos de comunicación de que se disponga) para conectarse a la red IP. Este modelo, aporta más valor al usuario, ya que amplía las capacidades del dispositivo más allá de sus características nativas.

Por ejemplo, un termostato inteligente conectado a la nube puede ser controlado de forma remota, a través de un teléfono móvil o una interfaz web. También puede recibir actualizaciones remotas de software. Y, otro aspecto muy interesante para el usuario: la base de datos en la nube que almacena los datos transmitidos por el termostato, ofrece analíticas de consumo que permiten mejorar su eficiencia. Por tanto, un termostato inteligente nos permite ahorrar energía y abaratar así la factura.

Otro ejemplo muy conocido son las SmartTV, que utilizan la conexión a Internet para poder hacer cosas como activar el reconocimiento de voz de la televisión.

Como siempre, la integración de dispositivos de distintos fabricantes puede crear problemas de interoperabilidad. Por ejemplo, cuando se utilizan protocolos de datos propietarios en la comunicación entre el dispositivo y el servicio en la nube, el usuario puede quedar «atado» a ese proveedor (vendor lock-in). Este hecho no sólo afecta a la capacidad de elección del usuario a la hora de conectar nuevos dispositivos, sino también, a cuestiones relacionadas con la propiedad o el acceso a los datos.

Figura 2: Modelo de comunicación dispositivo a la nube
Figura 2: Modelo de comunicación dispositivo a la nube

3 Dispositivo a puerta de enlace, como en los wearables para deportes

En este tercer modelo de comunicación, los dispositivos se conectan a la nube a través de otro dispositivo que hace de puerta de enlace o intermediario. Éste último puede ser un smartphone o un dispositivo tipo hub, en el que un software de aplicación provee de funcionalidades de seguridad o traducción de protocolos o datos.

Un ejemplo de dispositivos que utilizan este modo de conexión son los dispositivos vestibles (o wearables) que se utilizan para hacer deporte. Estos dispositivos no suelen tener capacidad nativa para conectarse a Internet. Como puerta de enlace local, utilizan un teléfono inteligente con una aplicación que facilita la comunicación y transmisión de datos entre el dispositivo y un servicio en la nube.

De esta forma, por ejemplo, puedes registrar y controlar tus entrenamientos, compartirlos con quien tu quieras o colaborar con una causa solidaria, convirtiendo tus pasos en donaciones.

Este modelo permite reducir los problemas de interoperabilidad entre dispositivos, ya que un mismo hub puede tener instalados transceptores de distintas familias de dispositivos.

También, permite conectar objetos que no utilizan el protocolo IP, y por tanto no pueden conectarse directamente a Internet. O integrar nuevos dispositivos que sólo soportan IPv6, con dispositivos y servicios antiguos que utilizan la versión anterior IPv4.

Sin embargo, este modelo también tiene su contrapartida. La principal es el mayor coste y complejidad asociados al desarrollo del software y el sistema para la puerta de enlace de capa de aplicación. No obstante, si se consigue que en el diseño de nuevos dispositivos IoT se utilicen protocolos genéricos, en el futuro se desplegarán más puertas de enlace genéricas, con una estructura más sencilla y un menor costo, que facilitará la interconexión entre dispositivos.

Figura 3: Modelo de comunicación dispositivo a puerta de enlace
Figura 3: Modelo de comunicación dispositivo a puerta de enlace (Ampliar)

4 Dispositivo conectado a través de back-end

Este cuarto modelo es una extensión del modelo 2, comunicación de un dispositivo único a la nube, permitiendo que los usuarios exporten y analicen datos de objetos inteligentes de un servicio en la nube en combinación con datos de otras fuentes. Esta estrategia permite romper los silos de datos que se generan en el modelo «dispositivo conectado a proveedor de servicios de internet único«.

Figura 4: Modelo de intercambio de datos a través de un back end
Figura 4: Modelo de intercambio de datos a través de un back end

Una arquitectura de intercambio de datos a través del back-end permite , acceder y analizar fácilmente en la nube a los datos producidos por toda la gama de dispositivos desplegados en un edificio.

Por otra parte, este tipo de arquitectura facilita la portabilidad de los datos, permitiendo a los usuarios mover sus datos al cambiar de servicio IoT.

Conclusión

Además de por ciertas consideraciones técnicas, el uso de uno u otro modelo tendrá mucho que ver con la naturaleza abierta o propietaria de los dispositivos IoT que se conecten en la red. Lo que está claro, es que las interoperabilidad entre dispositivos y el uso de estándares abiertos son aspectos clave en el diseño de sistemas de la Internet de las Cosas.

Por otra parte, los modelos que permiten la aplicación de analíticas machine learning a los datos de dispositivos almacenados en la nube, generan mucho valor para el usuario final, ya que le permiten hacer uso de nuevas formas de usar la información. No obstante, no hay que olvidar el coste que puede tener el conectar los dispositivos a la nube en regiones donde los costes de conectividad son elevados.

Estos nuevos flujos de datos se pueden aprovechar para diseñar nuevos productos y servicios que actúen como auténticos catalizadores de la innovación.


Post original publicado en ThinkBig Empresas

Referencias:

La Internet de las Cosas— Una breve reseña (ISOC)

https://www.iotcentral.io/blog/the-iot-architecture-at-the-edge

Anuncio publicitario


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


Deja un comentario

Cursos gratis de Ciencia de Datos para seguir a tu aire

Si quieres formarte en Data Science, Machine Learning e Inteligencia Artificial no hace falta hacer una gran inversión. En este post os contamos qué cursos gratuitos sobre esta temática tienen la inscripción abierta en estos momentos, y puedes seguir a tu aire. La mayor parte de ellos en inglés, pero también algunos en español. Si quieres aprender desde cero, o especializarte en un área determinada, échale un vistazo a esta lista. 

Cursos en ingles.

 edX

Portada del portal edX
Portada del portal edX

En la plataforma edX es donde vamos a encontrar más cosas interesantes que podemos aprender sin gastar ni un sólo euro. Aunque también, si nos interesa obtener algún tipo de certificación, podemos hacerlo pagando una pequeña cantidad que depende de cada curso en particular. Esta política es muy interesante porque sigue el espíritu original de los MOOCs: la democratización del conocimiento, de forma que cualquier persona interesada en aprender, puede hacerlo, sin importar su nivel económico. En estos momentos, los cursos más interesantes que puedes seguir a tu ritmo, son los siguientes:

Curso ofrecido por la Universidad de San Diego en el que aprenderás a usar herramientas Python open-source como Pandas, Git y Matplotlib para manipular, analizar y visualizar datasets complejos. 

Otro interesante curso de la Universidad de San Diego en el que aprenderás a usar Python para comprender los datos, y extraer insights relevantes usando enfoques estadísticos y probabilísticos. 

En este curso de la Universidad de Indiana, aprenderás sobre estrategia y gobernanza de datos en la empresa, bases de datos relacionales, administración de datos maestros y tecnologías Big Data. Todo lo necesario para que los responsables de la toma de decisiones en la empresa, puedan basar esas decisiones de negocio en insights de datos.

Realizar  análisis de segmentación de mercado y definir estrategias de segmentación  a largo plazo supone un auténtico reto para cualquier organización. En este curso de la Universidad de Queensland, aprenderás el proceso para realizar este tipo de análisis basado en datos, en diez sencillos pasos, y desarrollarás habilidades que permitirán identificar las necesidades de tus clientes y obtener así una ventaja competitiva.

 

Udacity

En Udacity antes se podía acceder de forma gratuita a los cursos iniciales  de sus Nanodegrees de pago, pero esa opción ya no está disponible. No obstante, no dejes de echarle un vistazo a sus programas, porque ofrecen contenidos de gran interés.

 

Coursera

Portada del portal de Coursera
Portada del portal de Coursera

Otras plataformas como Coursera, ofrecen cursos de pago con una semana de acceso gratuito, para valorar los contenidos disponibles. También puedes participar en los cursos en calidad de “oyente”, de manera gratuita, con acceso a los materiales del curso, pero sin tareas calificadas o la capacidad de obtener un certificado. Estos cursos suelen tener la inscripción abierta de forma permanente, ya que cada uno puede hacerlos a su ritmo.

Al igual que ocurre con los cursos gratuitos que ofrece Udacity, suelen ser un buen “aperitivo” para animarnos a seguir alguno de programas especializados, programas de certificación o másters online (todos ellos de pago) que se ofrecen en la plataforma y que también pueden ser interesantes, una vez que tengamos clara qué trayectoria nos gustaría emprender. 

Podemos encontrar el famoso curso de Machine Learning de Andrew Ng por la Universidad de Stanford, los cursos de DeepLearning.AI, de propio Andrew NG, como AI for everyone, los de la Universidad de Michigan, como Introduction to Data Science in Python etc.

Os animamos a explorar el site para conocer los cursos y usar los filtros para acotar los resultados según vuestras necesidades o preferencias. Otros cursos interesantes pueden ser:

  • How to Use Git and GitHub  En este curso de Amazon Web Services aprenderás una de las habilidades más importantes para cualquier desarrollador que trabaje en proyectos de larga duración (o incluso de mediana duración), especialmente si hay más de un desarrollador involucrado. Nos referimos al uso efectivo del control de versiones. Este curso, creado con la colaboración de GitHub, muestra los conceptos básicos del uso del control de versiones usando para ello el sistema Git y la plataforma de colaboración llamada GitHub. El curso es parte del Front End y Full Stack Nanodegrees
  • Intro to Machine Learning Este curso forma parte del Nanodegree Analista de Datos. Es una introducción al aprendizaje automático en el que aprenderás cómo identificar y extraer las características que mejor representan los datos, conocerás algunos de los algoritmos más importantes y cómo evaluar su rendimiento.

Cursos en español.

Hemos seleccionado los siguientes cursos, pero hay unos cuantos más que también son muy interesantes.

  • Introducción a la Ciencia de Datos y el Big Data. Este curso, del Instituto Tecnológico de Monterrey, nos ofrece un panorama general de lo que es la Ciencia de Datos y cómo aplicarla en las organizaciones para aprender a tomar decisiones basadas en los datos.
  • Datos para la efectividad de las políticas públicas Este curso, organizado por el Banco Interamericano de Desarrollo,  te ayudará a tomar el control de los datos y familiarizarte con las herramientas para utilizarlos en la planificación, gestión y evaluación de políticas públicas.
  • Big Data sin misterios, también del BID, muestra las ventajas de utilizar Big Data, la analítica avanzada y la inteligencia artificial, tanto en el sector publico, como en el sector privado.

Dejamos para el final otro curso de análisis de datos y estadísticas que nos ha parecido también muy interesante, pero quizás para una audiencia más específica:  

  • Técnicas Cuantitativas y Cualitativas para la Investigación Es un curso de la Universidad de Valencia, que pretende construir una base básica-inicial en los principios estadísticos, econométricos y metodológicos generales que permitan a los alumnos desarrollar un análisis completo desde el diseño de la investigación, la preparación de los datos, segmentación y codificación, hasta la obtención de resultados y respuestas a las preguntas de investigación.  Especialmente interesante para investigadores y alumnos que se encuentren cursando trabajos de fin de grado, trabajos de fin de máster o realizando tesis, así como todos aquellos del área de la administración que quieran realizar un análisis cuantitativo o cualitativo en sus estudios  

Como veis, hay infinidad de opciones para aprender por poco dinero o incluso de forma gratuita. También para decidir si merece la pena invertir dinero y esfuerzo en cursar alguno de los itinerarios de especialización ofrecidos por estas plataformas. Siempre va a merecer la pena, seguro, y los cursos gratuitos son ideales para dar los primeros pasos, y ayudarnos a definir nuestra trayectoria formativa y profesional personal. Si te interesa conocer los programas completos, hablaremos de ellos en otro post.

¿Has encontrado ya la tuya?  


Deja un comentario

Estructurados, semi-estructurados, no estructurados… ¿Cómo son tus datos?

Portátil sobre la hierba

Cuando hablamos de tipos de datos, podemos hacerlo desde muchas perspectivas diferentes. Podemos clasificarlos según su origen, su rango, el tipo de lenguaje con el que queremos trabajar sobre ellos etc. Pero la clasificación más práctica y global que permite trabajar de forma efectiva en el mundo digital es la basada en la estructura de los datos. Según esta, hay 3 tipos de datos: estructurados, semiestructurados y no estructurados.

Veremos cómo comprender el tipo de datos que se maneja en cada situación, es esencial para definir los recursos más adecuados para ingestarlos, almacenarlos, transformarlos, y entrenar con ellos modelos de los que obtener Insights de negocio, alertas frente a comportamientos anómalos, recomendaciones de mantenimiento predictivo etc

Datos estructurados

Los datos estructurados son los datos típicos de la mayoría de bases de datos relacionales (RDBMS). Estas bases de datos se caracterizan por tener un esquema determinado que define cómo son las tablas en  las que se almacenan los datos, qué tipo de campos tienen y cómo se relacionan entre ellas.

Estos datos se gestionan mediante un tipo de lenguaje de programación estructurado, conocido como SQL (Structured Query Language) diseñado precisamente, para administrar y recuperar información de los sistemas de gestión de bases de datos relacionales.

File:ESTRUCTURA.png - Wikimedia Commons
Figura 1: Ejemplo de datos estructurados

Son los datos estructurados son los más sencillos de manejar, ya que tienen todos el mismo formato. Suelen ser archivos de texto que se almacenan en forma de tabla, hojas de cálculo o bases de datos relacionales en las que cada categoría se identifica mediante un título.

Un ejemplo de este tipo de datos son los datos financieros, o los datos generados por sensores IoT.

Datos semi-estructurados

Datos semi-estructurados no tienen un esquema definido. No encajan en un formato de tablas/filas/columnas, sino que se organizan mediante etiquetas o “tags” que permiten agruparlos y crear jerarquías. También se les conoce como no relacionales o NoSQL.

Este tipo de datos representa alrededor del 5-10% del volumen de datos global. Sin embargo, tiene casos de uso muy relevantes desde el punto de vista comercial, en grandes infraestructurasde datos y aplicaciones web en tiempo real. Algunos servicios muy conocidos basados en este tipo de datos son el sistema de recomendación de Amazon, o los servicios de Linkedin.

Muchos de los casos de uso tienen que ver con el transporte de datos, compartir datos de sensores, intercambio electrónico de datos, plataformas de medios sociales, y bases de datos NoSQL.

Los ejemplos de datos semi-estructurados más conocidos son:

  • Correos electrónicos, donde los metadatos nativos permiten clasificarlos y realizar búsquedas por palabras clave
  • Lenguaje de marcado XML, cuya flexible estructura, basada en etiquetas, permite universalizar la estructura de datos, el almacenamiento y el transporte en la Web.
  • El estándar abierto JSON (JavaScript Object Notation), otro formato de intercambio de datos semi-estructurados que se utiliza mucho en la transmisión de datos entre aplicaciones web y servidores.
  • Las bases de datos NoSQL, que al no separar el esquema de los propios datos, son más flexibles. Permiten almacenar información que no se adapta bien al formato de registro/tabla, como por ejemplo, el texto de longitud variable. También facilitan el intercambio de datos entre distintas bases de datos.
Extensible Markup Language - Wikipedia, la enciclopedia libre
Figura 2: Ejemplo de datos semiestructurados

Datos no estructurados

Los datos no estructurados son prácticamente todo lo demás. Suponen un 80% del volumen de todos los datos generados, y el porcentaje no deja de crecer. Estos datos pueden tener una estructura interna, pero no siguen ningún esquema o modelo de datos predefinido.

Pueden ser datos de texto, o no textuales; haber sido generados por una máquina o por una persona; y almacenarse en una base de datos NoSQL, o directamente en un Datalake.

Los ejemplos más conocidos son:

  • Ficheros de texto: archivos tipo word, hojas de cálculo, presentaciones, logs…
  • Correo electrónicos, el cuerpo del mensaje, el resto de la información suele ser semi-estruturada, como hemos indicado anteriormente
  • Datos de redes sociales como Facebook, Twitter, Linkedin
  • Datos de sitios web como Youtube, Instagram etc
  • Datos móviles: mensajes, localización, chats…
  • Imágenes, vídeos, audios etc
  • Datos meteorológicos, imágenes por satélite, datos de sensores etc
Sonido, Ola, Forma De Onda, Aural, De Audio, Sonic
Figura 3: Ejemplo de datos no estructurados

Trabajar, no sólo con datos no estructurados, sino con enormes volúmenes de ellos supone un auténtico desafío, al que damos respuesta con nuevas herramientas basadas en machine learning, nuevos modelos de almacenamiento y computación basados en sistemas cloud, cambios en las estrategias tradicionales de ingeniería de datos (de modelos ETL a ELT), integración de soluciones nativas y opensource etc. A todo ello se suma la complejidad añadida de dar respuesta en tiempo real a un creciente número de aplicaciones como las basadas en dispositivos IoT, el comercio online etc.

Conclusión

Es muy importante ser consciente del tipo de datos que se maneja en cada caso, para decidir cuáles son los recursos y herramientas más adecuados para cada situación. Esto nos permitirá definir las arquitecturas más eficientes que cubran las necesidades de una empresa con la mejor relación coste-beneficio.

Si quieres saber más sobre cómo se almacenan los datos, y cómo entrenar con ellos nuestros algoritmos de machine learning, no te pierdas estos otros dos post:


Post original publicado en Think Big Empresas


Deja un comentario

La Coruña se suma al Stanford WiDS ¿Te apuntas?

Si te interesa la Ciencia de Datos, y vives en la zona Noroeste o te apetece visitarnos, toma nota. ¡Todavía estás a tiempo!

El próximo viernes 25 de marzo, La Coruña se suma al Movimiento WiDS de la Universidad de Stanfordcon la celebración de la Primera Jornada Women in Data Science, de la mano de nuestra embajadora WiDS Coruña Cristina Gil Rey, y gracias al patrocinio de las empresas Centro Porsche A CoruñaGrupo AtlanteBanco Mediolanum e Imatia Innovation; y a la colaboración de Bodegas Martín CódaxAnimosaGrupo Oesía ,Cognizant y Repsol.

Desde tanto el mundo académico como el corporativo, panelistas como  Julia Díaz Bertha Guijarro Berta Ares Lombán Mariola Lobato Consuelo Gargantilla Susana Ladra Idoia Salazar Adriana S. Paloma Recuero de los Santos Marta Fernández Poyatos Verónica Bolón Canedo Lara Piñeiro Rodríguez, moderadas por  Clara Lapiedra, embajadora WiDS Madrid&Barcelona, tratarán las siguientes temáticas: “La importancia de los datos de distintas perspectivas”, «La ética en la ciencia de datos»«La ciencia de datos y el gemelo digital» y “Cómo atraer y potenciar estos perfiles”.

La jornada tendrá lugar el día 25, de 16 a 20 de la tarde, en el Hotel NH Collection A Coruña FinisterreAcceso gratuito bajo inscripción.

¿Qué es el programa WIDS?

El programa WiDS es una iniciativa de la Universidad de Stanford que surgió en 2015 cuando Margot Gerritsen, directora del Institute for Computational and Mathematical Engineering (ICME) se dio cuenta de la total invisibilidad de las mujeres profesionales en el mundo de los datos.

En 2016 organizó la primera conferencia “Women in Data Science” con el objetivo de dar a conocer las últimas investigaciones y avances relacionados con la ciencia de datos de la mano de destacadas profesionales en este ámbito. El evento estaba orientado a un público amplio, sin importar el género. Sin embargo, cansada de verse como única ponente femenina en tantas conferencias similares, Margot Gerritsen decidió que, en este caso, las ponentes y conferenciantes fuera exclusivamente mujeres.

¿Cuáles son sus objetivos?

Esta primera conferencia evolucionó hacia un exitoso programa de ámbito mundial, con dos objetivos muy claros.

  1. El primero, inspirar, educar y mejorar las habilidades de los científicos de datos y los aspirantes a científicos de datos en todo el mundo.
  2.  Y el segundo, dar visibilidad al talento femenino en este campo y ofrecer referentes que sirvan de inspiración a niñas y jóvenes con vocación hacia las disciplinas STEM.

Para lograrlos se trabajan distintas iniciativas:

  • Desde la Conferencia Global, que este año tuvo lugar el pasado 7 de marzo
No hay texto alternativo para esta imagen
  •  al Programa de embajadoras,
No hay texto alternativo para esta imagen
  • el Datathon, en el que los participantes pueden perfeccionar sus habilidades trabajando en desafío de impacto social.
No hay texto alternativo para esta imagen
  • el canal de podcast, con líderes de ciencia de datos de todo el mundo hablando sobre su trabajo, sus viajes y las lecciones aprendidas en el camino
No hay texto alternativo para esta imagen
  • un programa de divulgación educativa para alentar a los estudiantes de secundaria a considerar carreras en ciencia de datos, inteligencia artificial (IA) y campos relacionados
No hay texto alternativo para esta imagen
  • y los talleres para todos, sesiones gratuitas, en abierto para todos en Youtube, muchas también en español, sobre habilidades concretas necesarias para el trabajo con datos.
No hay texto alternativo para esta imagen

Los resultados hablan por si mismos. En 2022, más allá del Conferencia Global, más de 100.000 participantes de más de 60 países asistirán a los más de 200 eventos regionales organizados por las más de 500 embajadoras del WiDS por todo el mundo.

No hay texto alternativo para esta imagen

El WIDS en España

No es de extrañar, que las primeras ciudades españolas en sumarse al “movimiento WiDS”, fueran Madrid y Barcelona, en las que ya en 2017 se organizaron jornadas que conectaban síncronamente con la jornada EMEA del WiDS WorldwideWiDS Valencia, en 2019, y WiDS Albacete, en 2020 se sumaron también al evento global, aunque este último año, por razones evidentes, hubo que cambiar a un formato online. Afortunadamente, en 2021, las jornadas de Madrid y Barcelona que se organizaron de forma coordinada en días consecutivos, recuperaron la presencialidad pero al mismo tiempo se difundieron por streaming.

Este año, la Coruña se suma al “Movimiento WIDS” , en el que profesionales expertas de la Ciencia de datos, del mundo universitario y empresarial, comparten con nosotros conocimientos, experiencias, motivaciones y sueños.

¿Nos acompañas? ¿Apúntaste? ¡Te esperamos!


Deja un comentario

Deep learning para clasificar polen

¿Sabías que el Deep Learning te puede evitar pasar un mal rato por la alergia, detectar si la miel está adulterada, o ayudar a resolver un crimen? Esta ductilidad del deep learning, su capacidad de facilitar nuestro día a día gracias sus aplicaciones en gran cantidad de campos es, precisamente, el secreto de su éxito.

Deep Learning y alergia

¿Cómo puedo el deep learning mejorar la vida de las personas alérgicas?. La clave está en el polen. En poder contar y clasificar cuántos granos de cada tipo hay en una muestra determinada. Anteriormente, esta tarea se realizaba de forma manual. El problema es que algunos granos resultan prácticamente indistinguibles. Por ello, los porcentajes de acierto no eran especialmente buenos, situándose en torno al 63,5%.

Figura 1: Euphorbia.pulcherrrima-polen
Figura 1: Euphorbia-pulcherrima-polen (Wikipedia)

Un equipo de investigadores de la UNED, liderado por José Luis Aznarte ha desarrollado un algoritmo que utiliza redes neuronales convolucionales para clasificar de forma automática hasta 46 especies diferentes de polen en una muestra. El porcentaje de acierto es un 98%, lo cual supone una excelente noticia para ese (estimado) 40% de la población mundial que moquea, lagrimea, o incluso puede tener dificultades para respirar debidas a la rinitis alérgica por exposición a polen.

Clasificación de pólenes

Para prevenir o contrarrestar estos episodios, de mayor o menor gravedad, es preciso saber cuántos granos se encuentran suspendidos en el aire y en qué planta germinan. Por ello es necesario clasificarlos por especies.

Pero la clasificación automática de polen no es sólo útil para alertar a la población alérgica, o establecer protocolos en los centros sanitarios para atender mejor sus síntomas. También se aplica a otros campos.

Paleobotánica

Los paleontólogos examinan granos de polen fosilizados en sedimentos antiguos para reconstruir cómo era la flora en un lugar hace milenios.

Lepidodendron aculeatum (Wikipedia)
Figura 2: Lepidodendron aculeatum (Wikipedia)

Palinología forense

El polen también puede ser una interesante referencia forense para ubicar el lugar dónde se ha cometido un delito, ya que puede usarse como biomarcador capaz de conectar personas y objetos a lugares y espacios de tiempo determinados.

Industria alimentaria

Y en la industria alimentaria, distinguir, por ejemplo, si está adulterada esa “miel pura” que acabamos de comprar. La miel “ultrafiltrada” es producto de someterla a temperaturas muy altas, y añadirle agua para sacarle mayor rendimiento al producto. El resultado es la pérdida del polen, y con ello sus propiedades nutritivas y saludables. Por ello, es muy interesante poder detectar si una miel está adulterada de forma automática.

Vemos, nuevamente, como el Deep Learning se cuela en nuestro día a día para hacernos la vida más fácil.


Referencia:

Precise automatic classification of 46 different pollen types with convolutional neural networksVíctor Sevillano, Katherine Holt,  View ORCID ProfileJosé L. Aznarte


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.


Deja un comentario

¿Por qué fallan algunos modelos Machine Learning?

En este blog siempre hablamos de las mil y una aplicaciones de la Inteligencia Artificial a todo tipo de actividades y campos de conocimiento. Sin embargo, sabemos que en ocasiones, nuestros modelos basados en algoritmos de Machine Learning, fallan, no ofrecen los resultados esperados. ¿Cuál es el motivo?

Motivos, puede haber muchos, pero vamos a centrarnos en los tres principales. Sobre dos de ellos ya hemos hablado en anteriores ocasiones.

1 Los datos

Cuando hablamos de modelos de aprendizaje automático, hablamos de modelos que aprenden de los datos. Por tanto, juegan un papel fundamental en todo el proceso. Tendremos que hacernos una serie de preguntas:

  • ¿Tenemos un volumen de datos suficiente?
  • ¿Son representativos? ¿Pueden presentar algún tipo de sesgo?
  • ¿Son fiables? ¿Tienen la calidad suficiente?
  • ¿Qué fuentes utilizamos?

Merece la pena prestar a los datos toda la atención necesaria, ya que no se puede construir un modelo sólido sobre pilares endebles. Y sin datos de calidad, los modelos no podrán ofrecer resultados de valor.

No sólo eso. Las tareas previas de exploración, depuración y normalización de los datos tienen un papel fundamental a la hora de definir las variables del modelo. Unos análisis estadísticos previos pueden dar pistas interesantes sobre correlación de variables, o su mayor o menor relevancia sobre los resultados.

2 Las preguntas

Este punto tiene mucho que ver con el anterior. Porque para hacer las preguntas adecuadas, es vital comprender bien los datos. Esta es la situación más habitual cuando se trabaja con datos propios.

Hace unos meses ya os hablamos del proyecto “The 100 Questions” , impulsado por The GovLab, un centro de investigación de la Universidad de Nueva York. Basándose en la premisa:

“Tus datos son tan valiosos como bien planteadas estén las preguntas que les hagas”

su objetivo es ayudar a identificar,  de forma participativa, las preguntas más relevantes, y aprender a priorizar aquéllas que son de mayor impacto, más novedosas o más factibles.

También puede darse la situación inversa. Podemos tener muy claras las preguntas, pero no tanto cómo localizar los datos que ayuden a darles respuesta. En este otro post hicimos un repaso a las principales fuentes de datos que pueden sernos de utilidad para dar respuesta a esas preguntas.

3 Los modelos

Llegamos al tercer punto clave: los modelos. Es, curiosamente, el aspecto que recibe mayor atención en cualquier foro sobre machine learning.

¿Qué modelo es mejor? ¿Acaso Tiene sentido hacerse esta pregunta?

Veremos que no. Ya hemos visto que lo primero y fundamental es comprender los datos, y definir qué información queremos obtener de ellos (¡las preguntas!). Puede que los avances en determinadas áreas de investigación “pongan de moda” determinados modelos en un momento dato. Pero no hay soluciones universales, modelos “talla única” que sirvan para casi cualquier problema.

Sí que hay modelos muy fáciles de aplicar. Unas sencillas líneas de código para crear datos de entrenamiento y datos de test, otras para definir el modelo, entrenarlo, hacer predicciones, medir su exactitud…

El problema es que muchas veces no somos conscientes de los supuestos previos en que se basa el modelo. Por ejemplo, el modelo puede asumir que los datos siguen una distribución normal. Es cierto que es un tipo de distribución muy frecuente en la naturaleza, pero no la única. Por tanto, si no se cumple esta premisa, el modelo no es apropiado para ese conjunto de datos.

Conocer las premisas en que se basan los modelos, o sus limitaciones (por ejemplo, si tienen tendencia al sobreajuste (overfitting), o el tipo de distancia en que se basan; nos permite anticiparnos a los problemas y definir estrategias para limitar su impacto.

Por tanto, no podemos decir qué algoritmo es mejor o peor en general, sino cuál es el más apropiado para cada problema o tipo de problema. De hecho, una estrategia habitual es entrenar modelos distintos basados en algoritmos diferentes y analizar después cuál ofrece mejores resultados.

No obstante, y aunque no haga falta ser un matemático experto para trabajar con modelos machine learning, comprender las matemáticas de los modelos es importante para poder elegir el más adecuado, el más eficiente, comprender si tienen o no sentido los resultados. Y si no lo tienen, ser capaz de analizar el por qué y buscar cuál puede ser la mejor alternativa.

Conclusión

Frente a las últimas tendencias de automatización del Machine Learning, vemos cómo la intervención humana no es algo de lo que se pueda prescindir fácilmente. Las decisiones sobre estos 3 aspectos son claves. Si no son las adecuadas, nuestros modelos de aprendizaje automático serán rápidos, precisos, y eficientes … pero totalmente inservibles.


Post original publicado en ThinkBig Empresas


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.


5 comentarios

Predictor de infidelidad (III): Ejemplo de regresión logística en Python

Ya estamos llegando al final del nuestro experimento. Tras introducir el problema y explorar el dataset en el primer post, y aprender cómo funciona el algoritmo de regresión logística, en el segundo, ya estamos listos para crear nuestro modelo a partir de los datos y… aplicarlo.  ¿Te animas a llegar hasta el final?  

En este tercer y último  post aprenderemos lo siguiente:

  • Como crear un predictor usando el modelo de regresión logística de scikit-learn
  • Cómo valorar sus métricas 
  • Cómo hacer una predicción
  • Qué conclusiones podemos extraer

Retomamos pues, nuestro Python notebook, donde, ya habíamos realizado la carga y exploración de los datos y creado la variable objetivo, a la que llamamos «infidelity». 

(Como hemos hecho en los post anteriores, primero, explicaremos paso a paso con imágenes cómo hacerlo, y al final del proceso, incorporamos la versión final editable de la que podéis copiar directamente el código para pegarlo en vuestro notebook )

 

3. Aplicación del modelo.

Para aplicar el modelo de regresión logística, vamos a usar una librería de Python, Patsy, que permite generar de forma muy cómoda el formato de matrices con el que funciona este modelo. Vamos a recordar un poco cómo era la notación matemática, para entender cuál debe ser el formato de entrada al modelo. La regresión logística era una transformación lineal (con salida no lineal) que se podía expresar de la siguiente manera:

Fórmula de una transformación lineal.
Figura 1: Fórmula de una transformación lineal.

Donde Y es la variable dependiente u objetivo que queremos estimar (“infidelity”), y X son las variables dependientes o predictoras, que “condicionan” el valor de la Y (“age”, “religious”, “children” etc). Los valores de los coeficientes βi son los que el modelo va a aprender” entrenándose con valores conocidos del dataset. Una vez entrenado el modelo, será capaz de predecir qué valor tendrá Y para un caso no recogido en los datos de entrenamiento. La fórmula  también puede expresarse de esta forma, como producto escalar:

Transformación lineal expresada como producto escalar.
Figura 2: Transformación lineal expresada como producto escalar.

Si  generalizamos para más de una observación Xi, necesitamos generar una matriz como esta:

Figura 3: Transformación lineal expresada de forma matricial.

3.1 Formateamos los datos con Patsy

La librería Patsy permite, precisamente, generar estas matrices de forma muy ágil gracias a la función dmatrices   y a su notación de fórmula. Además, dmatrices añade de forma automática la columna de “1” necesaria para obtener los términos de corte (εi), conocidos como “intercept terms”.

Otra de las ventajas de Patsy es que permite trabajar con datos categóricos de forma muy flexible, gracias a la función C(), que indica que los datos entre los paréntesis deben tratarse como etiquetas y no como números. En nuestro ejemplo, vamos a usarlo para que no considere como números los códigos de ocupación. Esta operación es lo que se llama, convertir datos en “dummy”.

Por tanto, al aplicar la función dmatrices con esta sintaxis, obtenemos como resultado dos matrices. La primera, con los resultados o valores de la variable objetivo “y”, y la segunda, con los valores de las variables independientes X o datos predictores:

Sintaxis de de función dmatrices de Patsy.
Figura 4: Sintaxis de de función dmatrices de Patsy.

Para nuestro ejemplo:

y, X = dmatrices(‘infidelity ~ rate_marriage + age +  yrs_married + children + religious+ educ + C(occupation) + C(occupation_husb) ‘, dta, return_type = ‘dataframe’)

Con esta sentencia obtenemos las dos matrices que hemos mencionado antes, en las que los valores de  “infidelity”(y) son iguales al producto de los valores de la matriz que representa las variables independientes (X) por unos coeficientes, más un término de corte. Al mismo tiempo indicamos que no use los valores de códigos de ocupación como numéricos sino como categóricos.

Código para convertir la matriz de datos en el formato necesario para aplicar el modelo.
Figura 5: Código para convertir la matriz de datos en el formato necesario para aplicar el modelo.

Comprobamos las dimensiones de las matrices de salida, y sus índices:

Código para comprobar las dimensiones de las matrices.
Figura 6: Código para comprobar las dimensiones de las matrices.

3.2 Aplicamos el modelo

Ya sólo nos queda un último paso para poder aplicar el modelo de regresión logística de scikit-learn, y es convertir el vector columna y en matriz 1D.  A continuación, ya podemos aplicar directamente el modelo LogisticRegression. Como resultado del entrenamiento del modelo, obtenemos la matriz de coeficientes:

Aplicación del modelo.
Figura 7: Aplicación del modelo.

Podemos ver que la precisión del modelo es de un 73%:

Estimación de la precisión.
Figura 8: Estimación de la precisión.

También, podemos estimar también qué porcentaje de individuos tienen alguna aventura, obteniendo un resultado de un 32%

Porcentaje de individuos infieles.
Figura 9: Porcentaje de individuos infieles.

La matriz de coeficientes obtenida muestra qué peso tiene cada uno de los coeficientes. Para visualizarlo, podemos usar List(zip), que crea una matriz a partir de dos listas, la que contiene el nombre de los índices, en la primera columna, y los valores en la segunda.

Código para obtener la matriz de coeficientes.
Figura 10: Código para obtener la matriz de coeficientes.

Por ejemplo, podemos ver cómo los incrementos en rate_marrige y religiousnes disminuyen la probabilidad de infidelidad. Lo cual es consistente con el análisis de correlación de variables que hicimos en el primer post.

Coeficientes.
Figura 11: Coeficientes.

 

3.3 Evaluamos el modelo

Para evaluar el modelo, dividimos el dataset en dos partes. Dejamos un 75% de los datos como datos de entrenamiento (train), y reservamos el 25% restando como datos de prueba (test). A continuación, entrenamos el modelo de nuevo, pero ahora sólo con los datos de entrenamiento. 

Dividimos el dataset en train y test.
Figura 12: Dividimos el dataset en train y test.

 Una vez entrenado el modelo, lo aplicamos a los datos reservados como «test», y calculamos las  métricas precisión (Accurary) y exactitud (Precision). Cuidado con los «false friends»- Hemos obtenido unos valores de un 73% para la precisión, que no es que sea muy alto, pero tampoco es un mal resultado. Indica que la dispersión de los valores es baja. Sin embargo, la exactitud, es sólo de un 62%. No es un dato muy bueno, ya que se refiere a lo cerca que está un resultado del valor verdadero. Los valores de la diagonal principal de la matriz de confusión (993, 176) indican las predicciones correctas, tanto para verdaderos positivos, como verdaderos negativos. La otra diagonal (con valores 316, 117) recoge las predicciones erróneas.

 Calculamos precisión, exactitud y matriz de confusión.
Figura 13: Calculamos precisión, exactitud y matriz de confusión.

  Para ver la matriz de confusión de forma mucho más «visual», podemos hacerlo en forma de mapa de calor:

Vemos la matriz de confusión como mapa de calor usando seaborn.
Figura 14: Código para ver la matriz de confusión como mapa de calor usando seaborn.
Matriz de confusión en forma de mapa de calor.
Figura 15: Matriz de confusión en forma de mapa de calor.

3.4 Hacemos una predicción

 Por último, ya sólo nos queda hacer una predicción usando el modelo que acabamos de crear.  Para que nos resulta más fácil «escribir» los datos de entrada, usaremos el indexador iloc para extraer ,como ejemplo, uno de los registros de la matriz de datos. En particular hemos elegido el registro número 4.

Extraemos un registro del dataset como ejemplo.
Figura 16: Extraemos un registro del dataset como ejemplo.

 Como resultado, podemos ver el aspecto que tiene este registro en concreto, lo reconvertimos en el formato necesario para poder aplicar el modelo y, ya que estamos, lo probamos. En este caso, la probabilidad de infidelidad es de un 30%. 

Visualización de ese registro concreto.
Figura 17: Visualización de ese registro concreto.

A continuación, lo usaremos de base para introducir en el modelo los datos concretos para los que queremos obtener una predicción mediante el método keys(). Por ejemplo: mujer de 35 años, con 3 hijos, no religiosa,nivel educativo alto, con ocupaciones (ambos) técnicos especializados y una buena valoración de su matrimonio.

F.keys();F[‘age’]=35; F[‘children’]=3; F[‘yrs_married’]=10; F[‘religious’]=1; F[‘religious’]=1; F[‘C(occupation_husb)[T.3.0]’]=1

Cambiamos con F.keys() los valores de cada variable para introducir los que queramos
Figura 18: Cambiamos con F.keys() los valores de cada variable para introducir los que queramos

Al aplicar el modelo a este caso en particular, obtenemos como resultado una probabilidad de infidelidad del 29%. Prueba con los datos que quieras, ¿qué resultados obtienes?

esultado obtenido al aplicar el modelo al nuevo caso.
Figura 19: Resultado obtenido al aplicar el modelo al nuevo caso.

¿Te animas a probarlo? A continuación, tienes el código completo del experimento, que puedes cortar y pegar en tu Jupyter notebook. Te recomendamos que lo vayas haciendo paso a paso, como lo hemos explicado, para poder entender qué se hace en cada momento. Incluso, puedes ir introduciendo pequeñas modificaciones para probar cosas nuevas.

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

4. Conclusiones

Llegado el momento de sacar conclusiones, tenemos que pararnos a reflexionar. ¿Cuál ha sido el objetivo del experimento?. Hemos aprendido a crear un modelo de predicción basado en regresión logística. Hemos conocido y aprendido a cargar los datasets de Statsmodels. Hemos recordado un poco de álgebra de matrices para comprender mejor el modelo. Y sí, hemos aplicado el modelo a nuestros datos (¿a que no te has resistido?), pero ¿tiene algún tipo de validez el resultado?.

A pesar de haber hecho un análisis serio, que, por supuesto se podría haber hecho siguiendo otros enfoques, por ejemplo, reduciendo por ejemplo el número de variables a considerar tras el análisis de correlación, o aplicando el modelo de statsmodel en lugar del del scikit learn, o incluso eligiendo otro algoritmo de clasificación; nunca debemos olvidar sobre qué estamos construyendo nuestro modelo. Nos referimos, por supuesto, a los datos. Y un dataset cuyo origen es una encuesta realizada en los años 70 por una revista femenina en EEUU no parece que pueda ser extrapolable al momento actual, ni a latitudes tan distantes como la nuestra. Si embargo, en la era de las apps «para ligar» o encontrar tu media naranja, hay que ser conscientes de lo que una buena analítica de datos podría obtener a partir de sus bases de datos que, por supuesto, están protegidas por leyes de privacidad. Pero…ahí están.

Aquí puedes encontrar todos los post de este experimento:

Si quieres echar un vistazo a otros post «Valentinianos» aquí los tienes: