Por Jim Walsh.

En el último artículo de esta serie, conocimos un ejemplo concreto de un sistema de “la Internet de las Cosas”, utilizando el caso de Uber. Vimos que la característica clave de un sistema IoT es su habilidad para usar la información que recibe de los sensores y personas para tomar decisiones rápidas y contextuales. En este artículo, exploraremos el corazón de un sistema de este tipo, y describiremos cómo la toma de decisiones puede ser automatizada en base al contexto.

Tomando decisiones rápidas y contextuales

Una arquitectura de gran aceptación para tomar este tipo de decisiones se denomina “arquitectura Lambda”. Este sistema fue propuesto originalmente por un ingeniero de Twitter llamado Nathan Martz en 2011, que lo incluyó en su libro “Big Data”.

El concepto detrás de la arquitectura Lambda de Martz es que hay dos capas de analíticas involucradas en la toma de decisiones. En primer lugar, una capa llamada “Batch Layer”, que utiliza técnicas tradicionales de Big Data como Map-Reduce para obtener información relacional de manera continua de múltiples fuentes. Esta actividad se denomina “Batch” porque si bien sucede de manera frecuente, se realiza de acuerdo a un cronograma predefinido. Si bien las herramientas de manipulación de datos han mejorado enormemente en los últimos años, un análisis complejo todavía puede tomar minutos o incluso horas. Esto hace que un enfoque “Batch” de las analíticas para Big Data sea poco práctico para las decisiones rápidas en la escala que necesitamos para la Internet de las Cosas (que requiere una velocidad de milisegundos).

La segunda capa de la arquitectura Lambda se denomina “Speed”, y es la responsable de las decisiones rápidas por parte del sistema. Como cualquier ingeniero sabe, la clave para tomar buenas decisiones es tener toda la información relevante sobre el problema. En la arquitectura Lambda, los resultados de la capa Batch son procesados continuamente para su aprovechamiento en la capa Speed. Esta capa utiliza la información pre-procesada cuando llega un nuevo pedido, lo que le permite tomar decisiones informadas en base al contexto y en tiempo real.

Además de Lambda, otras técnicas son utilizadas cuando se requieren resultados todavía más rápidos. Por ejemplo, en el mundo de las transacciones automatizadas en la bolsa, otras técnicas pueden ofrecer decisiones en una décima de milisegundo, sacrificando un poco de versatilidad. Para interactuar con humanos, sin embargo, el enfoque Lambda ofrece una buena combinación de velocidad y configuración.

El caso Uber

Como vimos en el ejemplo de Uber, la decisión en torno a los pasajeros y sus conductores depende de un cierto número de factores. Estas consideraciones incluyen:

  • ¿Está disponible el conductor y su auto? Es decir, ¿ya está llevando otro pasajero? ¿O se está tomando un descanso?
  • ¿Cuánto tiempo le llevará al auto llegar hasta su pasajero potencial?
  • ¿Dónde quiere ir el pasajero? Si esta información no está disponible, ¿podemos revisar viajes pasados de aquél usuario en particular?
  • ¿Cuál es la reputación del pasajero que pide el viaje? ¿Deberíamos darle un trato especial?
  • ¿Cuánto dinero genera el conductor para nuestra compañía? ¿Deberíamos asignarle el viaje con mayor potencial de ganancia?
  • De todos los conductores que están cerca, ¿cuánto ha ganado cada uno durante el día?

Estos no son factores del algoritmo de Uber, pero son representativos de la información que se tiene en cuenta a la hora de asignar conductores a pasajeros en este tipo de servicios IoT.

De los factores que mencionamos anteriormente, podemos pre-procesar los siguientes en modo “Batch”:

  • De acuerdo a categorías de comportamiento predefinidas, ¿cuál es el destino más probable de acuerdo a las coordenadas del pasajero? Por ejemplo, un análisis puede encontrar una persona con la categoría “viajero frecuente de negocios” que está llegando a un destino como “aeropuerto lejos de casa” y fuera de las horas de oficina. Este pasajero probablemente quiera ir a un destino como un hotel en una ciudad cercana.
  • Sin conocer nada sobre un pasajero particular, ¿cuál es el destino más probable para su ubicación actual? Por ejemplo, un pasajero de un área comercial de Manhattan posiblemente quiera ir hacia otro comercio, mientras que un pasajero ubicado en una oficina posiblemente busque otro destino.
  • Los clientes más valiosos (la reputación del pasajero).
  • Los mejores conductores (la reputación del conductor).
  • Ganancias totales según el conductor, desde que comenzó su horario laboral.

En la arquitectura Lambda, estos y otros factores serían analizados por la capa Batch de acuerdo a un cronograma, y serían presentados a la capa Speed en el momento que un pasajero pide un viaje. El cronograma depende de la frecuencia en la que la información se actualiza, del costo que tiene procesarla, y de la importancia de ella en el modelo de negocios. Los factores que se calculan rápidamente, o que cambian frecuentemente (como la ubicación del auto) no son procesados por la capa Batch, sino que son manejados por la capa Speed en el momento que se recibe un pedido. Mientras las computadoras y las analíticas se aceleran, la línea entre lo que podemos procesar en tiempo real y lo que reservamos para la capa Batch se irá desdibujando. Sin embargo, el objetivo clave se mantiene: lo más importante es asegurarnos que en el momento que el sistema toma una decisión, toda la información que se requiere está disponible.

Un operario humano toma decisiones de una manera similar a la que acabamos de describir. Cada decisión se alinea con los objetivos de la compañía, y tiene en cuenta todo el contexto. En el caso de un coordinador de taxis, uno puede esperar que se tomen decisiones similares para asignar pasajeros con conductores. Por ejemplo, si la señora Jones es un cliente importante, el operario humano debe tener en cuenta esta información y asegurarse de ofrecer la mejor experiencia posible. Este tipo de información contextual se aprende de la experiencia, y es por esto que un coordinador humano toma buenas decisiones en su trabajo diario.

La arquitectura Lambda es una de las maneras para que las máquinas exhiban una “inteligencia” similar a la de un empleado modelo, que debe tomar decisiones rápidas, consistentes y contextuales. En realidad, por supuesto, las máquinas están ejecutando un programa: más específicamente, un algoritmo de analíticas enfocado en obtener el mejor resultado. Esto no significa que exhiban una inteligencia similar a la de un humano. En particular, las máquinas no utilizan su conocimiento general sobre la manera en que funciona el mundo y los negocios. Los humanos tienen una inteligencia general y social, además de una experiencia de vida particular.

La verdadera inteligencia del algoritmo proviene de las personas que lo desarrollan, tanto los programadores como los encargados de la compañía. Esta combinación de negocios, análisis de datos, ciencias de la computación y conocimiento algorítmico es un campo pujante que se conoce como Data Science. Ya no estamos hablando de sistemas IT convencionales, sino de plataformas y algoritmos que posibilitan nuevos modelos de negocios. Los sistemas convencionales proveen información a los humanos que toman decisiones, pero en la IoT son los mismos sistemas los que están en control. El equipo que desarrolla estos algoritmos debe traducir las capacidades humanas para la toma de decisiones de la mejor manera posible.

En cierta manera, esto es lo que la ciencia de la computación siempre ha hecho: automatizar tareas y decisiones humanas. Sin embargo, lo que ha cambiado es la escala, que hace a los sistemas IoT prácticos y económicamente interesantes. Para enfrentarnos a estos nuevos desafíos de negocios se requiere un nuevo nivel de pensamiento, con desarrolladores enfocados en el negocio, y ejecutivos orientados al desarrollo.